geometry(Transact-SQL)

평면 공간 데이터 형식인 geometry는 SQL Server에서 CLR(공용 언어 런타임) 데이터 형식으로 구현됩니다. 이 데이터 형식은 유클리드(평면) 좌표 시스템의 데이터를 나타냅니다.

SQL Server 2008은 geometry 공간 데이터 형식을 위한 메서드 집합을 지원합니다. 이러한 메서드에는 OGC(Open Geospatial Consortium) 표준 및 표준에 필요한 Microsoft 확장의 집합으로 정의한 geometry의 메서드가 포함됩니다.

geometry 공간 데이터 형식 메서드에 대한 자세한 내용은 geometry 데이터 형식 메서드 참조를 참조하십시오.

geometry 유형 등록

geometry 유형은 데이터베이스에서 미리 정의되고 사용할 수 있습니다. 다른 CLR 유형을 사용하는 것과 동일한 방식으로 geometry 유형의 테이블 열을 만들고 geometry 데이터에서 작업을 수행할 수 있습니다.

다음 두 예에서는 geometry 데이터를 추가하고 쿼리하는 방법을 보여 줍니다. 첫 번째 예에서는 ID 열과 geometry 열 GeomCol1이 있는 테이블을 만듭니다. 세 번째 열에서는 geometry 열을 OGC(Open Geospatial Consortium) WKT(Well-Known Text) 표시로 렌더링하고 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

두 번째 예에서는 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();