Menggunakan jenis data spasial

Unduh driver JDBC

Jenis data spasial (Geometri dan Geografi) didukung mulai rilis pratinjau Driver JDBC 6.5.0. Jenis data spasial saat ini tidak didukung dengan prosedur tersimpan, Parameter Bernilai Tabel (TVP), BulkCopy, dan Always Encrypted. Halaman ini menunjukkan berbagai kasus penggunaan jenis data Geometri dan Geografi dengan Driver JDBC. Untuk gambaran umum tentang jenis data spasial, periksa halaman Gambaran Umum Tipe Data Spasial .

Membuat objek geometri/ geografi

Ada dua cara utama untuk membuat objek Geometri / Geografi - baik konversi dari Teks Well-Known (WKT) atau format SQL Server internal (CLR).

Membuat dari WKT

String geoWKT = "LINESTRING(1 0, 0 1, -1 0)";
Geometry geomWKT = Geometry.STGeomFromText(geoWKT, 0);
Geography geogWKT = Geography.STGeomFromText(geoWKT, 4326);

Kode ini akan membuat objek Geometri LINESTRING dengan Pengidentifikasi Sistem Referensi Spasial (SRID) 0, dan objek Geografi dengan SRID 4326.

Membuat dari CLR

byte[] geomCLR = Hex.decodeHex("00000000010403000000000000000000F03F00000000000000000000000000000000000000000000F03F000000000000F0BF000000000000000001000000010000000001000000FFFFFFFF0000000002".toCharArray());
byte[] geogCLR = Hex.decodeHex("E61000000104030000000000000000000000000000000000F03F000000000000F03F00000000000000000000000000000000000000000000F0BF01000000010000000001000000FFFFFFFF0000000002".toCharArray());

Geometry geomWKT = Geometry.deserialize(geomCLR);
Geography geogWKT = Geography.deserialize(geogCLR);

Kode ini akan membuat objek Geometri dan Geografi yang setara dengan yang dibuat dari WKT sebelumnya.

Bekerja dengan objek Geometri / Geografi

Dengan asumsi pengguna memiliki tabel di SQL Server seperti di bawah ini:

CREATE TABLE sampleTable (c1 geometry)  

Contoh skrip untuk menyisipkan nilai Geometri adalah:

String geoWKT = "LINESTRING(1 0, 0 1, -1 0)";
Geometry geomWKT = Geometry.STGeomFromText(geoWKT, 0);
SQLServerPreparedStatement pstmt = (SQLServerPreparedStatement) connection.prepareStatement("insert into sampleTable values (?)");
pstmt.setGeometry(1, geomWKT);  
pstmt.execute();

Hal yang sama dapat dilakukan untuk rekan Geografi, menggunakan kolom Geografi dan metode setGeography().

Untuk membaca kolom Geometri/ Geografi:

try(SQLServerResultSet rs = (SQLServerResultSet)stmt.executeQuery("select * from geomTable")) {
    while(rs.next()){
        rs.getGeometry(1);
    }
}

Hal yang sama dapat dilakukan untuk rekan Geografi, menggunakan kolom Geografi dan metode getGeography().

API yang baru diperkenalkan

Metode ini adalah API publik baru yang telah diperkenalkan dengan penambahan ini, di kelas SQLServerPreparedStatement, SQLServerResultSet, Geometry, dan Geography.

SQLServerPreparedStatement

Metode Deskripsi
void setGeometry(int n, Geometry x) Mengatur parameter yang ditunjuk ke objek Kelas microsoft.sql.Geometry yang diberikan.
void setGeography(int n, Geography x) Mengatur parameter yang ditunjuk ke objek Kelas microsoft.sql.Geography yang diberikan.

SQLServerResultSet

Metode Deskripsi
Geometri getGeometry(int colunIndex) Mengembalikan nilai kolom yang ditunjuk dalam baris objek ResultSet saat ini sebagai objek com.microsoft.sqlserver.jdbc.Geometry dalam bahasa pemrograman Java.
Geometry getGeometry(String columnName) Mengembalikan nilai kolom yang ditunjuk dalam baris objek ResultSet saat ini sebagai objek com.microsoft.sqlserver.jdbc.Geometry dalam bahasa pemrograman Java.
GetGeography Geography(int colunIndex) Mengembalikan nilai kolom yang ditunjuk di baris saat ini dari objek ResultSet ini sebagai objek com.microsoft.sqlserver.jdbc.Geography dalam bahasa pemrograman Java.
GetGeography Geography(String columnName) Mengembalikan nilai kolom yang ditunjuk di baris saat ini dari objek ResultSet ini sebagai objek com.microsoft.sqlserver.jdbc.Geography dalam bahasa pemrograman Java.

Geometri

Metode Deskripsi
Geometri STGeomFromText(String wkt, int SRID) Konstruktor untuk instans Geometri dari representasi Open Geospatial Consortium (OGC) Well-Known Text (WKT) yang bertambah dengan nilai Z (elevasi) dan M (pengukuran) yang dibawa oleh instans.
Geometri STGeomFromWKB(byte[] wkb) Konstruktor untuk instans Geometri dari representasi Open Geospatial Consortium (OGC) Well-Known Biner (WKB). Catatan: Metode ini saat ini menggunakan format SQL Server internal (CLR) untuk membuat instans Geometri, yang merupakan masalah umum dalam driver dan direncanakan untuk diubah untuk menerima data WKB sebagai gantinya. Untuk pengguna yang sudah ada yang sudah menggunakan metode ini, pertimbangkan untuk beralih ke deserialize(byte) sebagai gantinya.
Geometri deserialize(byte[] clr) Konstruktor untuk instans Geometri dari format SQL Server internal untuk data spasial.
Penguraian geometri(String wkt) Konstruktor untuk instans Geometri dari representasi Open Geospatial Consortium (OGC) Well-Known Text (WKT). Pengidentifikasi Referensi Spasial default ke 0.
Titik geometri(double x, double y, int SRID) Konstruktor untuk instans Geometri yang mewakili instans Point dari nilai X dan Y-nya serta Pengidentifikasi Referensi Spasial.
String STAsText() Mengembalikan representasi Open Geospatial Consortium (OGC) Well-Known Text (WKT) dari instans Geometri. Teks ini tidak akan berisi nilai Z (elevasi) atau M (pengukuran) yang dibawa oleh instans.
byte[] STAsBinary() Mengembalikan representasi format SQL Server internal (CLR) dari instans Geometri. Nilai ini tidak akan berisi nilai Z atau M apa pun yang dibawa oleh instans.
byte[] serialize() Mengembalikan byte yang mewakili format SQL Server internal jenis Geometri.
boolean hasM() Mengembalikan jika objek berisi nilai M (pengukuran).
boolean hasZ() Mengembalikan jika objek berisi nilai Z (elevasi).
Double getX() Mengembalikan nilai koordinat X.
GetY ganda() Mengembalikan nilai koordinat Y.
GetM ganda() Mengembalikan nilai M (pengukuran) objek.
GetZ ganda() Mengembalikan nilai Z (elevasi) objek.
int getSrid() Mengembalikan nilai Pengidentifikasi Referensi Spasial (SRID).
boolean isNull() Mengembalikan jika objek Geometri null.
int STNumPoints() Mengembalikan jumlah titik dalam objek Geometri.
String STGeometryType() Mengembalikan nama jenis Open Geospatial Consortium (OGC) yang diwakili oleh instans geometri.
String asTextZM() Mengembalikan representasi teks Well-Known (WKT) dari objek Geometri.
String toString() Mengembalikan representasi String dari objek Geometri.

Geografi

Metode Deskripsi
Geografi STGeomFromText(String wkt, int SRID) Konstruktor untuk instans Geografi dari representasi Open Geospatial Consortium (OGC) Well-Known Text (WKT) yang bertambah dengan nilai Z (elevasi) dan M (pengukuran) yang dibawa oleh instans.
GEOGRAFI STGeomFromWKB(byte[] wkb) Konstruktor untuk instans Geografi dari representasi Open Geospatial Consortium (OGC) Well-Known Binary (WKB). Catatan: Metode ini saat ini menggunakan format SQL Server internal (CLR) untuk membuat instans Geometri, tetapi di masa mendatang metode ini akan diubah untuk menerima data WKB sebagai gantinya, karena rekan SQL Server metode ini (STGeomFromWKB) menggunakan WKB. Untuk pengguna yang sudah ada yang sudah menggunakan metode ini, pertimbangkan untuk beralih ke deserialize(byte) sebagai gantinya.
Deserialisasi geografi (byte[] clr) Konstruktor untuk instans Geografi dari format SQL Server internal untuk data spasial.
Penguraian geografi(String wkt) Konstruktor untuk instans Geografi dari representasi Open Geospatial Consortium (OGC) Well-Known Text (WKT). Pengidentifikasi Referensi Spasial default ke 0.
Titik geografi(titik ganda, lat ganda, SRID int) Konstruktor untuk instans Geografi yang mewakili instans Titik dari bujur dan lintangnya dan Pengidentifikasi Referensi Spasial.
String STAsText() Mengembalikan representasi Open Geospatial Consortium (OGC) Well-Known Text (WKT) dari instans Geografi. Teks ini tidak akan berisi nilai Z (elevasi) atau M (pengukuran) yang dibawa oleh instans.
byte[] STAsBinary()) Mengembalikan representasi format SQL Server internal (CLR) dari instans Geografi. Nilai ini tidak akan berisi nilai Z atau M apa pun yang dibawa oleh instans.
byte[] serialize() Mengembalikan byte yang mewakili format SQL Server internal jenis Geografi.
boolean hasM() Mengembalikan jika objek berisi nilai M (pengukuran).
boolean hasZ() Mengembalikan jika objek berisi nilai Z (elevasi).
GetLatitude ganda() Mengembalikan nilai garis lintang.
GetLongitude ganda() Mengembalikan nilai bujur.
GetM ganda() Mengembalikan nilai M (pengukuran) objek.
GetZ ganda() Mengembalikan nilai Z (elevasi) objek.
int getSrid() Mengembalikan nilai Pengidentifikasi Referensi Spasial (SRID).
boolean isNull() Mengembalikan jika objek Geografi null.
int STNumPoints() Mengembalikan jumlah titik dalam objek Geografi.
String STGeographyType() Mengembalikan nama jenis Open Geospatial Consortium (OGC) yang diwakili oleh instans geografi.
String asTextZM() Mengembalikan representasi teks Well-Known (WKT) dari objek Geografi.
String toString() Mengembalikan representasi String dari objek Geografi.

Batasan jenis data spasial

  1. Jenis sub data spasial CircularString, CompoundCurve, CurvePolygon, dan FullGlobe hanya didukung mulai dari SQL Server 2012 ke atas.

  2. Always Encrypted tidak dapat digunakan dengan jenis data spasial.

  3. Prosedur tersimpan, TVP, dan operasi BulkCopy saat ini tidak didukung dengan jenis data spasial.

Lihat juga

Sampel jenis data spasial (JDBC)