공간 데이터 형식 사용
공간 데이터 형식(기하 도형 및 지리)은 JDBC 드라이버 미리 보기 릴리스 6.5.0부터 지원됩니다. 공간 데이터 형식은 현재 저장 프로시저, TVP(Table Valued Parameters), BulkCopy 및 Always Encrypted에서 지원되지 않습니다. 이 페이지에서는 JDBC 드라이버를 사용하여 기하 도형 및 지리 데이터 형식의 다양한 사용 사례를 보여 줍니다. 공간 데이터 형식에 대한 개요는 공간 데이터 형식 개요 페이지를 참조하세요.
기하 도형/지리 개체 만들기
기하 도형/지리 개체를 만드는 두 가지 주요 방법은 WKT(Well-Known Text) 또는 CLR(내부 SQL Server 형식)에서 변환하는 것입니다.
WKT에서 만들기
String geoWKT = "LINESTRING(1 0, 0 1, -1 0)";
Geometry geomWKT = Geometry.STGeomFromText(geoWKT, 0);
Geography geogWKT = Geography.STGeomFromText(geoWKT, 4326);
이 코드는 SRID(Spatial Reference System Identifier)가 0인 LINESTRING 기하 도형 개체와 SRID 4326이 있는 지리 개체를 생성합니다.
CLR에서 만들기
byte[] geomCLR = Hex.decodeHex("00000000010403000000000000000000F03F00000000000000000000000000000000000000000000F03F000000000000F0BF000000000000000001000000010000000001000000FFFFFFFF0000000002".toCharArray());
byte[] geogCLR = Hex.decodeHex("E61000000104030000000000000000000000000000000000F03F000000000000F03F00000000000000000000000000000000000000000000F0BF01000000010000000001000000FFFFFFFF0000000002".toCharArray());
Geometry geomWKT = Geometry.deserialize(geomCLR);
Geography geogWKT = Geography.deserialize(geogCLR);
이 코드는 이전에 WKT에서 만든 것과 동일한 기하 도형 및 지리 개체를 생성합니다.
기하 도형/지리 개체 작업
사용자에게 아래와 같이 SQL Server에 테이블이 있다고 가정합니다.
CREATE TABLE sampleTable (c1 geometry)
기하 도형 값을 삽입하는 샘플 스크립트는 다음과 같습니다.
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();
지리 열을 사용하고 setGeography() 메서드를 사용하여 지리에 대해 동일한 작업을 수행할 수 있습니다.
기하 도형 / 지리 열 읽기:
try(SQLServerResultSet rs = (SQLServerResultSet)stmt.executeQuery("select * from geomTable")) {
while(rs.next()){
rs.getGeometry(1);
}
}
지리 열을 사용하고 getGeography() 메서드를 사용하여 지리에 대해 동일한 작업을 수행할 수 있습니다.
새로 도입된 API
이러한 메서드는 SQLServerPreparedStatement, SQLServerResultSet, Geometry, Geography 클래스에서 추가로 도입된 새로운 공개 API입니다.
SQLServerPreparedStatement
메서드 | 설명 |
---|---|
void setGeometry(int n, Geometry x) | 지정된 매개 변수를 주어진 microsoft.sql.Geometry 클래스 개체로 설정합니다. |
void setGeography(int n, Geography x) | 지정된 매개 변수를 주어진 microsoft.sql.Geography 클래스 개체로 설정합니다. |
SQLServerResultSet
메서드 | 설명 |
---|---|
Geometry getGeometry(int colunIndex) | 이 ResultSet 개체의 현재 행에서 지정된 열의 값을 Java 프로그래밍 언어의 com.microsoft.sqlserver.jdbc.Geometry 개체로 반환합니다. |
Geometry getGeometry(String columnName) | 이 ResultSet 개체의 현재 행에서 지정된 열의 값을 Java 프로그래밍 언어의 com.microsoft.sqlserver.jdbc.Geometry 개체로 반환합니다. |
Geography getGeography(int colunIndex) | 이 ResultSet 개체의 현재 행에서 지정된 열의 값을 Java 프로그래밍 언어의 com.microsoft.sqlserver.jdbc.Geography 개체로 반환합니다. |
Geography getGeography(String columnName) | 이 ResultSet 개체의 현재 행에서 지정된 열의 값을 Java 프로그래밍 언어의 com.microsoft.sqlserver.jdbc.Geography 개체로 반환합니다. |
기하학
메서드 | 설명 |
---|---|
Geometry STGeomFromText(String wkt , int SRID ) |
인스턴스에서 얻어진 Z(높이) 값 및 M(측정값) 값을 사용하여 보강된 OGC(Open Geospatial Consortium) WKT(Well-Known Text) 표현의 기하 도형 인스턴스에 대한 생성자입니다. |
Geometry STGeomFromWKB(byte[] wkb ) |
OGC(Open Geospatial Consortium) WKB(Well-Known Binary) 표현의 기하 도형 인스턴스에 대한 생성자입니다. 참고: 이 메서드는 현재 내부 SQL Server 형식(CLR)을 사용하여 기하 도형 인스턴스를 만듭니다. 이는 드라이버에 알려진 문제이며, WKB 데이터를 대신 허용하도록 변경될 예정입니다. 이 메서드를 이미 사용하고 있는 기존 사용자의 경우 대신 deserialize(byte)로 전환하는 것이 좋습니다. |
Geometries deserialize(byte[] clr) | 공간 데이터에 대한 내부 SQL Server 형식의 기하 도형 인스턴스 생성자입니다. |
Geometry parse(String wkt) | OGC(Open Geospatial Consortium) WKT(Well-Known Text) 표현의 기하 도형 인스턴스에 대한 생성자입니다. SRID(Spatial Reference Identifier)의 기본값은 0입니다. |
Geometry point(double x, double y, int SRID) | X 및 Y 값의 지점 인스턴스와 공간 참조 식별자를 나타내는 기하 도형 인스턴스의 생성자입니다. |
String STAsText() | 기하 도형 인스턴스의 OGC(Open Geospatial Consortium) WKT(Well-Known Text) 표현을 반환합니다. 이 텍스트에는 인스턴스에서 얻어진 Z(높이) 값 또는 M(측정값) 값이 포함되지 않습니다. |
byte[] STAsBinary() | 기하 도형 인스턴스의 내부 SQL Server 형식(CLR) 표현을 반환합니다. 이 값에는 인스턴스에서 얻어진 Z값 또는 M값이 포함되지 않습니다. |
byte[] serialize() | 기하 도형 형식의 내부 SQL Server 형식을 나타내는 바이트를 반환합니다. |
boolean hasM() | 개체에 M(측정값) 값이 포함되어 있으면 반환합니다. |
boolean hasZ() | 개체에 Z(높이) 값이 포함되어 있으면 반환합니다. |
Double getX() | X 좌표 값을 반환합니다. |
Double getY() | Y 좌표 값을 반환합니다. |
Double getM() | 개체의 M(측정값) 값을 반환합니다. |
Double getZ() | 개체에 Z(높이) 값을 반환합니다. |
int getSrid() | SRID(공간 참조 식별자) 값을 반환합니다. |
boolean isNull() | 기하 도형 개체가 null이면 반환합니다. |
int STNumPoints() | 기하 도형 개체의 포인트 수를 반환합니다. |
String STGeometryType() | 기하 도형 인스턴스가 나타내는 OGC(Open Geospatial Consortium) 형식 이름을 반환합니다. |
String asTextZM() | 기하 도형 개체의 WKT(Well-Known Text) 표현을 반환합니다. |
{b>문자열 | 지리 도형 개체의 문자열 표현을 반환합니다. |
Geography
메서드 | 설명 |
---|---|
Geography STGeomFromText(String wkt, int SRID) | 인스턴스에서 얻어진 Z(높이) 값 및 M(측정값) 값을 사용하여 보강된 OGC(Open Geospatial Consortium) WKT(Well-Known Text) 표현의 지리 인스턴스에 대한 생성자입니다. |
Geography STGeomFromWKB(byte[] wkb ) |
OGC(Open Geospatial Consortium) WKB(Well-Known Binary) 표현의 지리 인스턴스에 대한 생성자입니다. 참고: 이 메서드는 현재 CLR(내부 SQL Server 형식)을 사용하여 기하 도형 인스턴스를 만들지만 향후 이 메서드는 SQL Server에서는 동등한 메서드(STGeomFromWKB)가 WKB를 사용하므로 WKB 데이터를 수락하도록 변경될 예정입니다. 이 메서드를 이미 사용하고 있는 기존 사용자의 경우 대신 deserialize(byte)로 전환하는 것이 좋습니다. |
Geography deserialize(byte[] clr) | 공간 데이터에 대한 내부 SQL Server 형식의 지리 인스턴스 생성자입니다. |
Geography parse(String wkt) | OGC(Open Geospatial Consortium) WKT(Well-Known Text) 표현의 지리 인스턴스에 대한 생성자입니다. SRID(Spatial Reference Identifier)의 기본값은 0입니다. |
Geography point(double lon, double lat, int SRID) | 위도 및 경도의 지점 인스턴스와 공간 참조 식별자를 나타내는 지리 인스턴스의 생성자입니다. |
String STAsText() | 지리 인스턴스의 OGC(Open Geospatial Consortium) WKB(Well-Known Binary) 표현을 반환합니다. 이 텍스트에는 인스턴스에서 얻어진 Z(높이) 값 또는 M(측정값) 값이 포함되지 않습니다. |
byte[] STAsBinary()) | 지리 인스턴스의 내부 SQL Server 형식(CLR) 표현을 반환합니다. 이 값에는 인스턴스에서 얻어진 Z값 또는 M값이 포함되지 않습니다. |
byte[] serialize() | 지리 형식의 내부 SQL Server 형식을 나타내는 바이트를 반환합니다. |
boolean hasM() | 개체에 M(측정값) 값이 포함되어 있으면 반환합니다. |
boolean hasZ() | 개체에 Z(높이) 값이 포함되어 있으면 반환합니다. |
Double getLatitude() | 위도 값을 반환합니다. |
Double getLongitude() | 경도 값을 반환합니다. |
Double getM() | 개체의 M(측정값) 값을 반환합니다. |
Double getZ() | 개체에 Z(높이) 값을 반환합니다. |
int getSrid() | SRID(공간 참조 식별자) 값을 반환합니다. |
boolean isNull() | 지리 개체가 null이면 반환합니다. |
int STNumPoints() | 지리 개체의 포인트 수를 반환합니다. |
String STGeographyType() | 지리 인스턴스가 나타내는 OGC(Open Geospatial Consortium) 형식 이름을 반환합니다. |
String asTextZM() | 지리 개체의 WKT(Well-Known Text) 표현을 반환합니다. |
{b>문자열 | 지리 개체의 문자열 표현을 반환합니다. |
공간 데이터 형식의 제한 사항
공간 하위 데이터 형식 CircularString, CompoundCurve, CurvePolygon, FullGlobe는 SQL Server 2012 이상부터만 지원됩니다.
Always Encrypted는 공간 데이터 형식에 사용할 수 없습니다.
저장 프로시저, TVP 및 BulkCopy 작업은 현재 공간 데이터 형식에서 지원되지 않습니다.