Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I tipi di dati spaziali (Geometry e Geography) sono supportati a partire dalla versione di anteprima di JDBC Driver 6.5.0. I tipi di dati spaziali non sono attualmente supportati con le stored procedure, i parametri con valori di tabella (TVP), BulkCopy e Always Encrypted. Questa pagina illustra diversi casi d'uso dei tipi di dati Geometry e Geography con JDBC Driver. Per una panoramica dei tipi di dati spaziali, vedere Panoramica dei tipi di dati spaziali.
Creazione di un oggetto geometria / geografia
Esistono due modi principali per creare un oggetto Geometry/Geography. È possibile eseguire la conversione da WKT (well-known text) o da un formato interno di SQL Server (CLR).
Creazione da WKT
String geoWKT = "LINESTRING(1 0, 0 1, -1 0)";
Geometry geomWKT = Geometry.STGeomFromText(geoWKT, 0);
Geography geogWKT = Geography.STGeomFromText(geoWKT, 4326);
Questo codice crea un oggetto Geometry LINESTRING con identificatore SRID 0 (Spatial Reference System Identifier) e un oggetto Geography con identificatore SRID 4326.
Creazione da CLR
byte[] geomCLR = Hex.decodeHex("00000000010403000000000000000000F03F00000000000000000000000000000000000000000000F03F000000000000F0BF000000000000000001000000010000000001000000FFFFFFFF0000000002".toCharArray());
byte[] geogCLR = Hex.decodeHex("E61000000104030000000000000000000000000000000000F03F000000000000F03F00000000000000000000000000000000000000000000F0BF01000000010000000001000000FFFFFFFF0000000002".toCharArray());
Geometry geomWKT = Geometry.deserialize(geomCLR);
Geography geogWKT = Geography.deserialize(geogCLR);
Questo codice creerà oggetti Geometry e Geography equivalenti a quelli creati in precedenza a partire dal WKT.
Lavorare con un oggetto Geometry / Geography
Si supponga che l'utente disponga di una tabella in SQL Server come riportato di seguito:
CREATE TABLE sampleTable (c1 geometry)
Uno script di esempio per inserire un valore Geometry sarebbe:
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();
È possibile eseguire la stessa operazione per la controparte Geography, usando una colonna Geography e il metodo setGeography().
Per leggere una colonna Geometry/Geography:
try(SQLServerResultSet rs = (SQLServerResultSet)stmt.executeQuery("select * from geomTable")) {
while(rs.next()){
rs.getGeometry(1);
}
}
È possibile eseguire la stessa operazione per la controparte Geography, usando una colonna Geography e il metodo getGeography().
Nuove API introdotte
Questi metodi sono le nuove API pubbliche che sono state introdotte nelle classi SQLServerPreparedStatement, SQLServerResultSet, Geometry e Geography.
SQLServerPreparedStatement
| Metodo | Descrizione |
|---|---|
| void setGeometria(int n, Geometria x) | Imposta il parametro designato per l'oggetto classe microsoft.sql.Geometry. |
| void setGeografia(int n, Geografia x) | Imposta il parametro designato per l'oggetto classe microsoft.sql.Geography. |
SQLServerResultSet
| Metodo | Descrizione |
|---|---|
| Geometria getGeometry(int columnIndex) | Restituisce il valore della colonna designata nella riga corrente di questo oggetto ResultSet come oggetto com.microsoft.sqlserver.jdbc.Geometry nel linguaggio di programmazione Java. |
| Geometry getGeometry(String columnName) | Restituisce il valore della colonna designata nella riga corrente di questo oggetto ResultSet come oggetto com.microsoft.sqlserver.jdbc.Geometry nel linguaggio di programmazione Java. |
| Geografia getGeography(int columnIndex) | Restituisce il valore della colonna designata nella riga corrente di questo oggetto ResultSet come oggetto com.microsoft.sqlserver.jdbc.Geography nel linguaggio di programmazione Java. |
| Geografia getGeography(StringColumnName) | Restituisce il valore della colonna designata nella riga corrente di questo oggetto ResultSet come oggetto com.microsoft.sqlserver.jdbc.Geography nel linguaggio di programmazione Java. |
Geometria
| Metodo | Descrizione |
|---|---|
Geometria STGeomFromText(String wkt, int SRID) |
Costruttore di un'istanza di Geometry a partire da una rappresentazione in formato Well-Known Text (WKT) dell'Open Geospatial Consortium (OGC), arricchita da eventuali valori Z (elevazione) e M (misura) contenuti nell'istanza. |
Geometria STGeomFromWKB(byte[] wkb) |
Costruttore di un'istanza di Geometry a partire da una rappresentazione Well-Known Binary (WKB) dell'Open Geospatial Consortium (OGC). Nota: questo metodo usa attualmente il formato interno di SQL Server (CLR) per creare un'istanza Geometry. Il problema nel driver è noto ed è pianificata la modifica in modo che siano accettati i dati WKB. Per gli utenti esistenti che usano già questo metodo, provare a passare a deserialize(byte). |
| Geometrie deserialize(byte[] clr) | Costruttore per un'istanza di Geometry a partire da un formato interno di SQL Server per i dati spaziali. |
| Analisi geometry (String wkt) | Costruttore per un'istanza di Geometry a partire da una rappresentazione Well-Known Text (WKT) dell'Open Geospatial Consortium (OGC). Il valore predefinito per l'identificatore SRID è 0. |
| Punto geometria(double x, double y, int SRID) | Costruttore di un'istanza di Geometry che rappresenta un'istanza di Point a partire dai relativi valori X e Y e da un identificatore di riferimento spaziale. |
| String STAsText() | Restituisce la rappresentazione OGC (Open Geospatial Consortium) Well-Known Text (WKT) di un'istanza di Geometry. Il testo non conterrà alcun valore Z (innalzamento) o M (misura) appartenente all'istanza. |
| byte[] STAsBinary() | Restituisce la rappresentazione di un'istanza Geometry nel formato interno di SQL Server (CLR). Il valore non conterrà alcun valore Z o M appartenente all'istanza. |
| byte[] serialize() | Restituisce i byte che rappresentano un formato SQL Server interno di tipo Geometry. |
| boolean hasM() | Restituisce se l'oggetto contiene un valore M (misura). |
| boolean hasZ() | Restituisce se l'oggetto contiene un valore Z (innalzamento). |
| double getX() | Restituisce il valore della coordinata X. |
| double getY() | Restituisce il valore della coordinata Y. |
| double getM() | Restituisce il valore M (misura) dell'oggetto. |
| Double getZ() | Restituisce il valore Z (innalzamento) dell'oggetto. |
| int getSrid() | Restituisce il valore dell'identificatore SRID. |
| boolean isNull() | Restituisce se l'oggetto Geometry è Null. |
| int STNumPoints() | Restituisce il numero di punti nell'oggetto Geometry. |
| String STGeometryType() | Restituisce il nome del tipo OGC (Open Geospatial Consortium) rappresentato da un'istanza di geometria. |
| String asTextZM() | Restituisce la rappresentazione Well-Known Text (WKT) dell'oggetto Geometry. |
| String toString() | Restituisce la rappresentazione stringa dell'oggetto Geometry. |
Geografia
| Metodo | Descrizione |
|---|---|
| Geografia STGeomFromText(Stringa wkt, int SRID) | Costruttore di un'istanza di Geography a partire da una rappresentazione Well-Known Text (WKT) dell'Open Geospatial Consortium (OGC), arricchita con eventuali valori Z (elevazione) e M (misura) contenuti nell'istanza. |
Geografia STGeomFromWKB(byte[] wkb) |
Costruttore per un'istanza di Geography a partire da una rappresentazione Well-Known Binary (WKB) di Open Geospatial Consortium (OGC). Nota: questo metodo usa attualmente il formato interno di SQL Server (CLR) per creare un'istanza Geometry. Per il futuro è tuttavia prevista una modifica in modo che siano accettati i dati WKB, poiché la controparte di SQL Server di questo metodo (STGeomFromWKB) usa WKB. Per gli utenti esistenti che usano già questo metodo, provare a passare a deserialize(byte). |
| Deserializzazione geografica(byte[] clr) | Costruttore per un'istanza Geography da un formato di SQL Server interno per dati spaziali. |
| Analisi geografica (String wkt) | Costruttore per un'istanza di Geography a partire da una rappresentazione Well-Known Text (WKT) dell'Open Geospatial Consortium (OGC). Il valore predefinito per l'identificatore SRID è 0. |
| Punto di geografia(double lon, double lat, int SRID) | Costruttore di un'istanza di Geography che rappresenta un'istanza di Point a partire da longitudine, latitudine e un identificatore di riferimento spaziale (SRID). |
| String STAsText() | Restituisce la rappresentazione Well-Known Text (WKT) dell'Open Geospatial Consortium (OGC) di un'istanza di Geography. Il testo non conterrà alcun valore Z (innalzamento) o M (misura) appartenente all'istanza. |
| byte[] STAsBinary()) | Restituisce la rappresentazione di un'istanza Geography nel formato interno di SQL Server (CLR). Il valore non conterrà alcun valore Z o M appartenente all'istanza. |
| byte[] serialize() | Restituisce i byte che rappresentano un formato SQL Server interno di tipo Geography. |
| boolean hasM() | Restituisce se l'oggetto contiene un valore M (misura). |
| boolean hasZ() | Restituisce se l'oggetto contiene un valore Z (innalzamento). |
| double getLatitude() | Restituisce il valore di latitudine. |
| double getLongitude() | Restituisce il valore di longitudine. |
| double getM() | Restituisce il valore M (misura) dell'oggetto. |
| Double getZ() | Restituisce il valore Z (innalzamento) dell'oggetto. |
| int getSrid() | Restituisce il valore dell'identificatore SRID. |
| boolean isNull() | Restituisce se l'oggetto Geography è Null. |
| int STNumPoints() | Restituisce il numero di punti nell'oggetto Geography. |
| String STGeographyType() | Restituisce il nome del tipo OGC (Open Geospatial Consortium) rappresentato da un'istanza di geografia. |
| String asTextZM() | Restituisce la rappresentazione Well-Known Text (WKT) dell'oggetto Geography. |
| String toString() | Restituisce la rappresentazione stringa dell'oggetto Geography. |
Limitazioni dei tipi di dati spaziali
I tipi di dati spaziali secondari CircularString, CompoundCurve, CurvePolygon e FullGlobe sono supportati solo a partire da SQL Server 2012 e versioni successive.
Non è possibile usare Always Encrypted con i tipi di dati spaziali.
Le stored procedure, i TVP e le operazioni BulkCopy non sono attualmente supportati per i tipi di dati spaziali.