Używanie typów danych przestrzennych
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
Typy danych podrzędnych przestrzennych CircularString, CompoundCurve, CurvePolygoni FullGlobe są obsługiwane tylko w programie SQL Server 2012 lub nowszym.
Funkcji Always Encrypted nie można używać z typami danych przestrzennych.
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)