SQL Server/SQL Server Tip

SQL Server Geography 및 Geometory 데이터 형식

SungWookKang 2015. 7. 23. 09:22
반응형

SQL Server Geography 및 Geometory 데이터 형식

 

  • Version : SQL Server 2008, 2008R2, 2012

 

SQL Server 2008부터 제공되는 공간 데이터 형식은 지리 및 기하학 데이터를 저장 할 수 있다. 지리 정보 시스템은 다음 두 가지 유형으로 나눌 수 있다.

 

타입

설명

Euclidean data

유클리드 데이터는 주로 오브젝트의 2차원을 표현하며 평면 또는 어스 데이터라 한다.

Geodetic data

타원형 또는 둥근 구 데이터를 표현한다. GPS, 위도 경도의 좌표를 저장한다.

 

SQL Server에서 사용되는 하우징 정보 데이터 형식은 기하학 및 지리 이며 .NET Common Language Runtime를 사용한다.

 

 

[공간 참조 식별자(Spatial Reference Identifiers)]

공간 참조 식별자(SRID, Spatial Reference Identifiers)는 특정 공간 인스턴스를 포함한 값 및 측지계, 투사 등의 수학적 모델 정보의 모음이다.

 

SRID는 평면 지구 매핑 또는 둥근 지구 매핑에 사용되는 특정 타원면을 기준으로 하는 공간 참조 시스템이다.

SRID는 기하학과 지리적 데이터 유형 모두 텍스트로 표현되며 SRID의 0은 평면 지구 계산에 사용된다. 측지 데이터(Geodetic data)는 SRID를 필요로 하며 sys.spatial_reference_systems 카탈로그 뷰에서 공간 참조 식별자를 확인 할 수 있다.

select * from sys.spatial_reference_systems

 

 

잘못된 참조 공간을 사용하면 다음과 같은 오류가 발생한다.

declare @Location GEOGRAPHY

set @Location = geography::STGeomFromText

('LINESTRING(47.653 -89.358 48.1 -89.320 49.0 -88.28)', 0)

 

SELECT @Location

 

 

 

[기하 데이터 형식(Geometry Data Type)]

Geometry 데이터 형식은 점, 선, 다각형과 같은 인식 된 객체의 정보를 수용하는데 사용된다. 기하학적 데이터를 사용하는 하나의 예는 주문 처리를 위한 가장 효율적인 경로를 제공하는데 사용 될 수 있는 제품창고의 위치를 매핑하는 것이다.

 

SQL Server에서는 기하학적 데이터 형식을 삽입하거나 업데이트 할 때 Well-Known Text 표현으로 알려진 CLR 함수 바이너리 값으로 표현된다. 예를 들어 좌표 X=0, Y=0인 지점의 이진값을 원하는 경우 다음과 같이 쿼리를 실행 한다.

 

첫 번째 값은 높이 또는 지점과 연결된 상승이다. 이 값은 일반적으로 "Z"속성으로 알려져 있다. 두 번째 값은 "측정" 또는 "M" 속성이다. 이 값은 플로트로 표현 될 수 있는 임의의 추가 값을 저장할 수 있다.

 

포인트가 사용될 수 있는 응응프로그램 사양은 소수점 값을 저장하는데 사용되는 포맷으로 (XY), (XTZ), (XYM), (XYZM)이 있다.

 

DECLARE @Point GEOMETRY

SET @Point = geometry::STGeomFromText('POINT (0 0)',0)

SELECT @Point

 

 

 

 

CLR 기능으로 예상 좌표의 수는 텍스트 표현에서 지정한 모양에 따라 달라진다. "POINT"에서 "LINESTRING"으로 변경하여 실행한 경우 다음과 같은 오류가 발생 한다.

DECLARE @Point GEOMETRY

SET @Point = geometry::STGeomFromText('LINESTRING (0 0)',0)

SELECT @Point

 

 

 

 

[지리 데이터 형식(Geography Data Type)]

지리 데이터 형식은 점, 문자열, 다각형 처럼 인스턴스의 위도와 경도를 저장한다. 포인트 값에 대한 특성은 Z 및 M 값 사양 같은 기하 데이터 형식과 동일하다. 지구 또는 다른 객체의 곡률에 대한 회계 계산이 수행되기 때문에 지리 데이터 형식으로 지정해야 한다.

 

다음 스크립트는 문자열의 이진 표현을 나타낸다.

DECLARE @Location GEOGRAPHY

SET @Location = geography::STGeomFromText

('LINESTRING(47.653 -89.358, 48.1 -89.320, 49.0 -88.28)', 4326)

 

SELECT @Location

 

 

 

표현이 유효하지 않은 경우에는 다음과 같은 오류가 발생한다. 다음 스크립트는 포인트에서 쉼표가 누락된 경우이다.

DECLARE @Location GEOGRAPHY

SET @Location = geography::STGeomFromText

('LINESTRING(47.653 -89.358 48.1 -89.320 49.0 -88.28)', 4326)

 

SELECT @Location

 

 

 

 

 

[참고자료]

 

 

2013-11-25 / 강성욱 / http://sqlmvp.kr

 

반응형