Ruimtelijke gegevenstypen gebruiken
JDBC-stuurprogramma downloaden
Ruimtelijke gegevenstypen (Geometrie en Geografie) worden ondersteund bij het starten van de previewversie van JDBC-stuurprogramma's 6.5.0. Ruimtelijke gegevenstypen worden momenteel niet ondersteund met opgeslagen procedures, TVP (Table Valued Parameters), BulkCopy en Always Encrypted. Op deze pagina ziet u verschillende use cases van gegevenstypen Geometrie en Geografie met het JDBC-stuurprogramma. Raadpleeg overzicht van ruimtelijke gegevenstypen pagina voor een overzicht van ruimtelijke gegevenstypen.
Een geometrie-/geografieobject maken
Er zijn twee belangrijke manieren om een Geometrie-/Geografie-object te maken: converteer vanuit een Well-Known Text (WKT) of een interne SQL Server-indeling (CLR).
Maken vanuit WKT
String geoWKT = "LINESTRING(1 0, 0 1, -1 0)";
Geometry geomWKT = Geometry.STGeomFromText(geoWKT, 0);
Geography geogWKT = Geography.STGeomFromText(geoWKT, 4326);
Met deze code maakt u een LINESTRING-object Geometry met Spatial Reference System Identifier (SRID) 0 en een geografisch object met SRID 4326.
Aanmaken vanuit CLR
byte[] geomCLR = Hex.decodeHex("00000000010403000000000000000000F03F00000000000000000000000000000000000000000000F03F000000000000F0BF000000000000000001000000010000000001000000FFFFFFFF0000000002".toCharArray());
byte[] geogCLR = Hex.decodeHex("E61000000104030000000000000000000000000000000000F03F000000000000F03F00000000000000000000000000000000000000000000F0BF01000000010000000001000000FFFFFFFF0000000002".toCharArray());
Geometry geomWKT = Geometry.deserialize(geomCLR);
Geography geogWKT = Geography.deserialize(geogCLR);
Met deze code wordt een geometrie- en geografieobject gemaakt dat gelijk is aan de objecten die eerder zijn gemaakt op basis van de WKT.
Werken met een geometrie-/geografieobject
Ervan uitgaande dat de gebruiker een tabel op SQL Server heeft, zoals hieronder:
CREATE TABLE sampleTable (c1 geometry)
Een voorbeeldscript voor het invoegen van een geometriewaarde is:
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();
Hetzelfde kan worden gedaan voor de tegenhanger Geografie, met behulp van een kolom Geografie en setGeography() methode.
Een geometrie-/geografiekolom lezen:
try(SQLServerResultSet rs = (SQLServerResultSet)stmt.executeQuery("select * from geomTable")) {
while(rs.next()){
rs.getGeometry(1);
}
}
Hetzelfde kan worden gedaan voor de tegenhanger Geografie, met behulp van een kolom Geografie en getGeography() methode.
Nieuw geïntroduceerde API's
Deze methoden zijn de nieuwe openbare API's die met deze toevoeging zijn geïntroduceerd, in de klassen SQLServerPreparedStatement, SQLServerResultSet, Geometryen Geography.
SQLServerPreparedStatement
Methode | Beschrijving |
---|---|
void setGeometry(int n, Geometrie x) | Hiermee stelt u de aangewezen parameter in op het opgegeven microsoft.sql.Geometry Class-object. |
void setGeography(int n, Geography x) | Hiermee stelt u de aangewezen parameter in op het opgegeven microsoft.sql.Geography Class-object. |
SQLServerResultSet
Methode | Beschrijving |
---|---|
Geometrie getGeometry(int columnIndex) | Retourneert de waarde van de aangewezen kolom in de huidige rij van dit ResultSet-object als een com.microsoft.sqlserver.jdbc.Geometry-object in de Programmeertaal Java. |
Geometry getGeometry(String columnName) | Retourneert de waarde van de aangewezen kolom in de huidige rij van dit ResultSet-object als een com.microsoft.sqlserver.jdbc.Geometry-object in de Programmeertaal Java. |
Geografie getGeography(int columnIndex) | Retourneert de waarde van de aangewezen kolom in de huidige rij van dit ResultSet-object als een com.microsoft.sqlserver.jdbc.Geography-object in de Java-programmeertaal. |
Geografie getGeography(String columnName) | Retourneert de waarde van de aangewezen kolom in de huidige rij van dit ResultSet-object als een com.microsoft.sqlserver.jdbc.Geography-object in de Java-programmeertaal. |
Meetkunde
Methode | Beschrijving |
---|---|
Geometry STGeomFromText(String wkt , int SRID ) |
Constructor voor een Geometrie-exemplaar van een Open Geospatial Consortium (OGC) Well-Known Text -weergave uitgebreid met alle Z-waarden (uitbreiding) en M (meting) die door het exemplaar worden uitgevoerd. |
Geometrie STGeomFromWKB(byte[] wkb ) |
Constructor voor een Geometrie-instantie vanuit een Open Geospatial Consortium (OGC) Well-Known Binaire weergave (WKB). Opmerking: deze methode maakt momenteel gebruik van een interne SQL Server-indeling (CLR) om een Geometrie-exemplaar te maken. Dit is een bekend probleem in het stuurprogramma en moet worden gewijzigd om IN plaats daarvan WKB-gegevens te accepteren. Voor bestaande gebruikers die deze methode al gebruiken, kunt u in plaats daarvan overschakelen naar deserialize(byte). |
Geometrieën deserialiseren(byte[] clr) | Constructor voor een Geometrie-instantie van een intern SQL Server-formaat voor ruimtelijke gegevens. |
Geometrie parseren(tekenreeks wkt) | Constructor voor een Geometrie-exemplaar van een OGC-weergave (Open Geospatial Consortium) Well-Known Text (WKT). Spatial Reference Identifier is standaard ingesteld op 0. |
Geometriepunt (dubbele x, dubbele y, int SRID) | Constructor voor een Geometrie-exemplaar dat een punt vertegenwoordigt vanuit zijn X- en Y-waarden en een Spatial Reference Identifier. |
String STAsText() | Geeft de Open Geospatiaal Consortium (OGC) Well-Known Text (WKT)-representatie van een geometrie-instantie weer. Deze tekst bevat geen Z-waarden (hoogte) of M (meting) die het exemplaar meeneemt. |
byte[] STAsBinary() | Retourneert de interne CLR-weergave (SQL Server-indeling) van een Geometrie-exemplaar. Deze waarde bevat geen Z- of M-waarden die door het exemplaar worden meegenomen. |
byte[] serialize() | Retourneert de bytes die een interne SQL Server-indeling van het type geometrie vertegenwoordigen. |
boolean hasM() | Retourneert als het object een M-waarde (meting) bevat. |
Booleaanse hasZ() | Retourneert als het object een Z-waarde (verhoging) bevat. |
getX() als Double | Retourneert de X-coördinaatwaarde. |
Double getY() | Retourneert de Y-coördinaatwaarde. |
Double getM() | Retourneert de M-waarde (meting) van het object. |
Double getZ() | Retourneert de Z-waarde (hoogte) van het object. |
int getSrid() | Retourneert de Spatial Reference Identifier (SRID)-waarde. |
boolean isNull() | Retourneert als het geometrieobject null is. |
int STNumPoints() | Retourneert het aantal punten in het geometrieobject. |
Tekenreeks STGeometryType() | Retourneert de naam van het type Open Geospatial Consortium (OGC) die wordt vertegenwoordigd door een geometrie-exemplaar. |
String asTextZM() | Retourneert de Well-Known Text-weergave (WKT) van het geometrieobject. |
String toString() | Retourneert de tekenreeksweergave van het geometrieobject. |
Geografie
Methode | Beschrijving |
---|---|
Geografie STGeomFromText(String wkt, int SRID) | Constructor voor een Geografie-exemplaar van een Open Geospatial Consortium (OGC) Well-Known Tekst-weergave aangevuld met alle Z-waarden (hoogte) en M-waarden (meting) die door het exemplaar worden overgedragen. |
Geografie STGeomFromWKB(byte[] wkb ) |
Constructor voor een Geografie-instantie van een Open Geospatiaal Consortium (OGC) Well-Known binaire representatie (WKB). Opmerking: deze methode maakt momenteel gebruik van een interne SQL Server-indeling (CLR) om een geometrie-exemplaar te maken, maar in de toekomst wordt deze methode gewijzigd om WKB-gegevens te accepteren, omdat de SQL Server-tegenhanger van deze methode (STGeomFromWKB) WKB gebruikt. Voor bestaande gebruikers die deze methode al gebruiken, kunt u in plaats daarvan overschakelen naar deserialize(byte). |
Geografie deserialiseren(byte[] clr) | Constructor voor een geografie-exemplaar van een interne SQL Server-indeling voor ruimtelijke gegevens. |
Geografie parseren(tekenreeks wkt) | Constructor voor een Geografie-exemplaar van een OGC-weergave (Open Georuimteal Consortium) Well-Known Text (WKT). Spatial Reference Identifier is standaard ingesteld op 0. |
Geografisch punt (double lon, double lat, int SRID) | Constructor voor een geografie-exemplaar dat een puntexemplaar vertegenwoordigt via zijn lengte- en breedtegraad en een ruimtelijke referentie-identificatie. |
String STAsText() | Retourneert de Open Geospatial Consortium (OGC) Well-Known Tekst (WKT) representatie van een geografie-instantie. Deze tekst zal geen Z-waarden (hoogte) of M-waarden (meting) bevatten die door het exemplaar worden meegerekend. |
byte[] STAsBinary()) | Retourneert de interne CLR-weergave (SQL Server-indeling) van een geografisch exemplaar. Deze waarde bevat geen Z- of M-waarden die door het exemplaar worden meegenomen. |
byte[] serialize() | Retourneert de bytes die een interne SQL Server-indeling van het geografietype vertegenwoordigen. |
boolean hasM() | Retourneert als het object een M-waarde (meting) bevat. |
boolean hasZ() | Retourneert als het object een Z-waarde (verhoging) bevat. |
Double getLatitude() | Retourneert de breedtegraadwaarde. |
Double getLongitude() | Retourneert de lengtegraadwaarde. |
Dubbele getM() | Retourneert de M-waarde (meting) van het object. |
double getZ() | Retourneert de Z-waarde (hoogte) van het object. |
int getSrid() | Retourneert de waarde van de Spatial Reference Identifier (SRID). |
boolean isNull() | Retourneert als het geografieobject null is. |
int STNumPoints() | Retourneert het aantal punten in het object Geografie. |
Tekenreeks STGeographyType() | Retourneert de Open Geospatial Consortium (OGC) typenaam die wordt vertegenwoordigd door een geografie-instantie. |
String asTextZM() | Retourneert de Well-Known Text-weergave (WKT) van het Geografie-object. |
String toString() | Retourneert de tekenreeksweergave van het object Geografie. |
Beperkingen van typen ruimtelijke gegevens
De gegevenstypen voor ruimtelijke sub CircularString, CompoundCurve, CurvePolygonen FullGlobe worden alleen ondersteund vanaf SQL Server 2012 en hoger.
Always Encrypted kan niet worden gebruikt met ruimtelijke gegevenstypen.
Opgeslagen procedures, TVP- en BulkCopy-bewerkingen worden momenteel niet ondersteund met ruimtelijke gegevenstypen.