Udostępnij za pośrednictwem


Używanie typów danych przestrzennych

pobierz sterownik JDBC

Typy danych przestrzennych (Geometry i Geography) są obsługiwane od sterownika JDBC w wersji zapoznawczej 6.5.0. Typy danych przestrzennych nie są obecnie obsługiwane w przypadku procedur składowanych, parametrów tabeli o wartości (TVP), Bulk Copy, a także Always Encrypted. Na tej stronie przedstawione są różne zastosowania typów danych Geometry i Geography przy użyciu sterownika JDBC. Aby zapoznać się z omówieniem typów danych przestrzennych, zajrzyj na stronę Omówienie typów danych przestrzennych.

Tworzenie obiektu geometrii/geografii

Istnieją dwa główne sposoby tworzenia obiektu Geometry/Geography — konwertowanie z Well-Known tekstu (WKT) lub wewnętrznego formatu programu SQL Server (CLR).

Tworzenie z WKT

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

Ten kod utworzy obiekt LINESTRING Geometry z identyfikatorem systemu referencyjnego przestrzennego (SRID) 0 oraz obiekt Geography o identyfikatorze SRID 4326.

Tworzenie na podstawie środowiska CLR

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

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

Ten kod utworzy obiekty Geometry i Geography, które są odpowiednikiem obiektów utworzonych wcześniej z WKT.

Praca z obiektem Geometria/Geografia

Zakładając, że użytkownik ma tabelę w programie SQL Server, jak pokazano poniżej:

CREATE TABLE sampleTable (c1 geometry)  

Przykładowy skrypt służący do wstawiania wartości Geometry może wyglądać następująco:

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();

Można to zrobić dla odpowiednika Geography, używając kolumny Geography i setGeography() metody.

Aby odczytać kolumnę Geometry/Geography:

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

Można to zrobić dla odpowiednika Geography, używając kolumny Geography i metody getGeography().

Nowe wprowadzone interfejsy API

Te metody to nowe publiczne interfejsy API, które zostały wprowadzone z tym dodatkiem, w klasach SQLServerPreparedStatement, SQLServerResultSet, Geometryi Geography.

SQLServerPreparedStatement

Metoda Opis
void setGeometry(int n, Geometry x) Ustawia wyznaczony parametr dla danego obiektu klasy microsoft.sql.Geometry.
void setGeography(int n, Geography x) Ustawia wyznaczony parametr dla danego obiektu klasy microsoft.sql.Geography.

SQLServerResultSet

Metoda Opis
Geometry getGeometry(int columnIndex) Zwraca wartość wyznaczonej kolumny w bieżącym wierszu tego obiektu ResultSet jako obiekt com.microsoft.sqlserver.jdbc.Geometry w języku programowania Java.
Geometry getGeometry(String columnName) Zwraca wartość wyznaczonej kolumny w bieżącym wierszu tego obiektu ResultSet jako obiekt com.microsoft.sqlserver.jdbc.Geometry w języku programowania Java.
Geografia pobierzGeografię(int indeksKolumny) Zwraca wartość wyznaczonej kolumny w bieżącym wierszu tego obiektu ResultSet jako obiekt com.microsoft.sqlserver.jdbc.Geography w języku programowania Java.
Geography getGeography(String columnName) Zwraca wartość wyznaczonej kolumny w bieżącym wierszu tego obiektu ResultSet jako obiekt com.microsoft.sqlserver.jdbc.Geography w języku programowania Java.

Geometria

Metoda Opis
Geometria STGeomFromText(String wkt, int SRID) Konstruktor dla wystąpienia Geometry z open Geospatial Consortium (OGC) Well-Known text (WKT) reprezentacja rozszerzona o dowolne wartości Z (podniesienie uprawnień) i M (miara) przenoszone przez wystąpienie.
Geometria STGeomFromWKB(bajt[] wkb) Konstruktor dla obiektu Geometry z binarnej reprezentacji Open Geospatial Consortium (OGC) Well-Known WKB. Uwaga: Ta metoda obecnie używa wewnętrznego formatu SQL Server (CLR) do utworzenia instancji Geometry, co stanowi znany problem w sterowniku i planowana jest zmiana, aby akceptować dane WKB. W przypadku istniejących użytkowników, którzy już korzystają z tej metody, rozważ przełączenie na deserialize(bajt).
Geometrie deserialize(byte[] clr) Konstruktor instancji Geometry z wewnętrznego formatu SQL Server dla danych przestrzennych.
Geometry parse(String wkt) Konstruktor dla wystąpienia Geometry z reprezentacji Open Geospatial Consortium (OGC) Well-Known Text (WKT). Identyfikator odwołania przestrzennego jest domyślnie ustawiony na 0.
Punkt geometryczny (double x, double y, int SRID) Konstruktor dla instancji Geometrii, która reprezentuje instancję Punktu z wartości X i Y oraz Identyfikator Odniesienia Przestrzennego.
Łańcuch STAsText() Zwraca reprezentację open Geospatial Consortium (OGC) Well-Known Text (WKT) wystąpienia Geometry. Ten tekst nie będzie zawierać żadnych wartości Z (elewacja) ani M (miara) pochodzących z wystąpienia.
byte[] STAsBinary() Zwraca reprezentację wystąpienia geometrii w wewnętrznym formacie (CLR) programu SQL Server. Ta wartość nie będzie zawierać żadnych wartości Z ani M przenoszonych przez wystąpienie.
byte[] serialize() Zwraca bajty reprezentujące wewnętrzny format programu SQL Server typu Geometry.
boolean hasM() Zwraca wartość, jeśli obiekt zawiera wartość M (miara).
boolean hasZ() Zwraca, jeśli obiekt zawiera wartość Z (wysokość).
Double getX() Zwraca wartość współrzędnych X.
Podwójne getY() Zwraca wartość współrzędnych Y.
Double getM() Zwraca wartość M (miara) obiektu.
Double getZ() Zwraca wartość Z (wysokość) obiektu.
int getSrid() Zwraca wartość identyfikatora odwołania przestrzennego (SRID).
wartość logiczna isNull() Zwraca wartość , jeśli obiekt Geometry ma wartość null.
int STNumPoints() Zwraca liczbę punktów w obiekcie Geometry.
Ciąg STGeometryType() Zwraca nazwę typu Open Geospatial Consortium (OGC), której odpowiada instancja geometrii.
Typ danych String jako asTextZM() Zwraca reprezentację tekstową Well-Known (WKT) obiektu Geometry.
String toString() Zwraca reprezentację typu String obiektu Geometry.

Geografia

Metoda Opis
Geografia STGeomFromText(String wkt, int SRID) Konstruktor instancji Geography z tekstem Open Geospatial Consortium (OGC) Well-Known jako reprezentacja (WKT) rozszerzona o dowolne wartości Z (wysokość) i M (miary) przenoszone przez instancję.
Geography STGeomFromWKB(bajt[] wkb) Konstruktor dla wystąpienia Geography z reprezentacji Open Geospatial Consortium (OGC) Well-Known Binary (WKB). Uwaga: Ta metoda używa obecnie wewnętrznego formatu programu SQL Server (CLR) do utworzenia wystąpienia Geometry, ale w przyszłości ta metoda zostanie zmieniona tak, aby zamiast tego akceptowała dane WKB, ponieważ odpowiednik programu SQL Server tej metody (STGeomFromWKB) używa bazy danych WKB. Dla istniejących użytkowników, którzy już korzystają z tej metody, zaleca się przełączenie na deserialize(byte).
Deserializacja geografii(bajt[] clr) Konstruktor wystąpienia Geography z formatu wewnętrznego programu SQL Server dla danych przestrzennych.
Analizowanie geografii (ciąg wkt) Konstruktor dla instancji Geography z reprezentacji Open Geospatial Consortium (OGC) Well-Known Text (WKT). Identyfikator odwołania przestrzennego jest domyślnie ustawiony na 0.
Punkt geografii (double lon, double lat, int SRID) Konstruktor dla wystąpienia klasy Geography, które przedstawia punkt z jego długości geograficznej, szerokości geograficznej oraz identyfikatora układu odniesienia przestrzennego.
Ciąg STAsText() Zwraca reprezentację open Geospatial Consortium (OGC) Well-Known Text (WKT) wystąpienia Geography. Ten tekst nie będzie zawierał żadnych wartości Z (wysokość) ani M (miara) posiadanych przez instancję.
byte[] STAsBinary()) Zwraca wewnętrzną reprezentację wystąpienia Geography w formacie SQL Server (CLR). Ta wartość nie będzie zawierać żadnych wartości Z ani M przenoszonych przez instancję.
byte[] serializuj() Zwraca bajty reprezentujące wewnętrzny format programu SQL Server typu Geography.
boolean hasM() Zwraca wartość, jeśli obiekt zawiera wartość M (miara).
boolean hasZ() Zwraca prawdę, jeśli obiekt zawiera wartość Z (wysokość).
double getLatitude() Zwraca wartość szerokości geograficznej.
Double getLongitude() Zwraca wartość długości geograficznej.
Double getM() Zwraca wartość M (miara) obiektu.
Double getZ() Zwraca wartość Z (wysokość) obiektu.
int getSrid() Zwraca wartość identyfikatora odwołania przestrzennego (SRID).
boolean isNull() Zwraca wartość , jeśli obiekt Geography ma wartość null.
int STNumPoints() Zwraca liczbę punktów w obiekcie Geography.
Ciąg STGeographyType() Zwraca nazwę typu Open Geospatial Consortium (OGC), która jest reprezentowana przez instancję geograficzną.
Ciąg asTextZM() Zwraca tekstową reprezentację obiektu geograficznego Well-Known (WKT).
String toString() Zwraca reprezentację łańcucha znaków obiektu Geography.

Ograniczenia typów danych przestrzennych

  1. Typy danych podrzędnych przestrzennych CircularString, CompoundCurve, CurvePolygoni FullGlobe są obsługiwane tylko w programie SQL Server 2012 lub nowszym.

  2. Funkcji Always Encrypted nie można używać z typami danych przestrzennych.

  3. Procedury składowane, parametry tabelarne (TVP) i operacje BulkCopy nie są obecnie obsługiwane w przypadku typów danych przestrzennych.

Zobacz też

przykładowe typy danych przestrzennych (JDBC)