공간 형식 - 기하 도형(Transact-SQL)
적용 대상: Microsoft Fabric의 SQL ServerAzure SQL Database Azure SQL Managed Instance SQL 데이터베이스
평면 공간 데이터 형식인 geometry는 SQL Server에서 CLR(공용 언어 런타임) 데이터 형식으로 구현됩니다. 이 데이터 형식은 유클리드(평면) 좌표 시스템의 데이터를 나타냅니다.
SQL Server에서는 geometry 공간 데이터 형식에 대해 메서드 세트를 지원합니다. 이러한 메서드에는 OGC(Open Geospatial Consortium) 표준 및 해당 표준에 대한 Microsoft 확장의 세트로 정의된 geometry의 메서드가 포함됩니다.
기하 도형 메서드의 오차 오차는 1.0e-7 * 익스텐트만큼 클 수 있습니다. 익스텐트는 geometry 개체의 점 사이의 최대 근사 거리를 나타냅니다.
기하 도형 형식 등록
geometry 형식은 미리 정의되어 있으며 각 데이터베이스에서 사용할 수 있습니다. geometry 형식의 테이블 열을 만들고 다른 CLR 형식을 사용하는 것과 동일한 방식으로 geometry 데이터에 대해 작업할 수 있습니다. 지속형 및 비지속형 계산 열에서 사용할 수 있습니다.
설명
Microsoft Fabric의 SQL 데이터베이스에서 지리 및 기하 도형 데이터 형식은 지원되지만 Fabric OneLake에 미러링할 수는 없습니다.
예제
A. 기하 도형 데이터를 추가하고 쿼리하는 방법 표시
다음 두 예에서는 geometry 데이터를 추가하고 쿼리하는 방법을 보여 줍니다. 첫 번째 예에서는 ID 열과 geometry
열 GeomCol1
이 있는 테이블을 만듭니다. 세 번째 열은 geometry
열을 OGC(Open Geospatial Consortium) WKT(잘 알려진 텍스트) 표현으로 렌더링하고 이 STAsText()
메서드를 사용합니다. 그런 다음 두 개의 행이 삽입됩니다. 한 행에는 geometry
의 LineString
인스턴스가 포함되고 한 행에는 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. 두 geometry 인스턴스의 교차점 반환
두 번째 예제에서는 메서드를 STIntersection()
사용하여 이전에 삽입한 두 인스턴스가 교차하는 geometry
지점을 반환합니다.
DECLARE @geom1 geometry;
DECLARE @geom2 geometry;
DECLARE @result 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
)