적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric의 SQL 데이터베이스
평면 공간 데이터 형식인 geometry는 SQL Server에서 CLR(공용 언어 런타임) 데이터 형식으로 구현됩니다. 이 데이터 형식은 유클리드(평면) 좌표 시스템의 데이터를 나타냅니다.
SQL Server에서는 geometry 공간 데이터 형식에 대해 메서드 세트를 지원합니다. 이러한 메서드에는 OGC(Open Geospatial Consortium) 표준 및 해당 표준에 대한 Microsoft 확장의 세트로 정의된 geometry의 메서드가 포함됩니다.
기하 도형 메서드의 오차 오차는 1.0e-7 * 익스텐트만큼 클 수 있습니다. 익스텐트(extents)는 기하 도형 개체의 점 사이의 대략적인 최대 거리를 나타냅니다.
기하학 유형을 등록하세요
geometry 형식은 미리 정의되어 있으며 각 데이터베이스에서 사용할 수 있습니다. geometry 형식의 테이블 열을 만들고 다른 CLR 형식을 사용하는 것과 동일한 방식으로 geometry 데이터에 대해 작업할 수 있습니다. 이 타입은 영속 및 비영속 계산 열에 사용할 수 있습니다.
Conversion
기하학에서 이진, 변분,char, varchar, nchar, nvarchar로 변환하려면 명시적이어야 합니다. 사용 CAST 또는 CONVERT.
이진법, 변형형, char, varchar, nchar, nvarchar에서 기하학으로의 변환은 암묵적일 수도 있고 명시적일 수도 있습니다.
기하학과 다른 모든 데이터 유형 간의 변환은 허용되지 않습니다. 여기에는 기하학 과 지리학 간의 변환도 포함됩니다. 이 두 유형 간 데이터를 이동하려면 Well-Known 바이너리(WKB) 또는 Well-Known 텍스트(WKT) 메서드를 사용하세요. STAsBinary()STGeomFromWKB()예를 들어 .
문자열 타입에서 기하학 으로의 변환은 와 동일한 규칙 geometry::Parse()을 사용합니다. 문자열은 텍스트Well-Known 틀림없어. 결과의 SRID는 0입니다.
기하학과 이진 또는 변진 간의 변환은 SQL Server 네이티브 직렬화 형식인 기하학을 사용하며, Well-Known 이진법이 아닙니다. Well-Known 이진 값은 오류를 일으킵니다. 이진법으로 변환하거나 변환하려면 Well-Known 를 STGeomFromWKB()사용 STAsBinary() 하세요.
대상 문자열이나 이진 타입이 기 하학 값에 비해 너무 짧으면 오류가 발생합니다. 가치는 잘라내지 않습니다.
Remarks
Microsoft Fabric의 SQL 데이터베이스에서는 지리 및 지오메트리 데이터 타입을 지원하지만 Fabric OneLake에 미러링할 수는 없습니다.
Examples
A. 기하학 데이터를 추가하고 쿼리하는 방법 보여주세요
다음 두 예에서는 geometry 데이터를 추가하고 쿼리하는 방법을 보여 줍니다. 첫 번째 예에서는 ID 열과 geometry 열 GeomCol1이 있는 테이블을 만듭니다. 세 번째 열은 geometry 열을 OGC(Open Geospatial Consortium) WKT(잘 알려진 텍스트) 표현으로 렌더링하고 이 STAsText() 메서드를 사용합니다. 그런 다음 두 개의 행이 삽입됩니다. 한 행에는 LineString의 geometry 인스턴스가 포함되고 한 행에는 Polygon 인스턴스가 포함됩니다.
IF OBJECT_ID('dbo.SpatialTable', 'U') IS NOT NULL
DROP TABLE dbo.SpatialTable;
GO
CREATE TABLE SpatialTable
(
id INT IDENTITY (1, 1),
GeomCol1 geometry,
GeomCol2 AS GeomCol1.STAsText()
);
GO
INSERT INTO SpatialTable
(
GeomCol1
)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));
INSERT INTO SpatialTable
(
GeomCol1
)
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));
GO
B. 두 지오메트리 인스턴스의 교차점을 반환합니다
두 번째 예제에서는 메서드를 STIntersection() 사용하여 이전에 삽입한 두 인스턴스가 교차하는 geometry 지점을 반환합니다.
DECLARE @geom1 AS geometry;
DECLARE @geom2 AS geometry;
DECLARE @result AS geometry;
SELECT @geom1 = GeomCol1
FROM SpatialTable
WHERE id = 1;
SELECT @geom2 = GeomCol1
FROM SpatialTable
WHERE id = 2;
SELECT @result = @geom1.STIntersection(@geom2);
SELECT @result.STAsText();
C. 계산된 열에서 기하학을 사용하세요
다음 예제에서는 기하 도형 형식을 사용하여 지속형 계산 열이 있는 테이블을 만듭니다.
IF OBJECT_ID('dbo.SpatialTable', 'U') IS NOT NULL
DROP TABLE dbo.SpatialTable;
GO
CREATE TABLE SpatialTable
(
locationId INT IDENTITY (1, 1),
location geometry,
deliveryArea AS location.STBuffer(10) PERSISTED
);