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

 

 

 

 

 

[참고자료]

 

 



강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 480
» SQL Server Geography 및 Geometory 데이터 형식 jevida(강성욱) 2016.10.11 2524
1885 SQL Server를 이용한 신용카드 보안 -조직이 PCI DSS 준수를 달성 하기 위한 요건 jevida(강성욱) 2016.10.11 1395
1884 TDE 암호화 사용하기 jevida(강성욱) 2016.10.11 3539
1883 SQL Server 암호화 하기 jevida(강성욱) 2016.10.11 2791
1882 의도하지 않은 분산트랜잭션 사용 jevida(강성욱) 2016.10.11 902
1881 Affinity I/O Mask jevida(강성욱) 2016.10.11 1187
1880 LPE_BATCH 스핀락 jevida(강성욱) 2016.10.11 904
1879 SQL Server 17953 오류 jevida(강성욱) 2016.10.11 1032
1878 SQL 연결 18056 오류 jevida(강성욱) 2016.10.11 1385
1877 SQL 2008 R2 Sp1 적용과 9013 오류 - 포맷 섹터 크기에 따른 오류 jevida(강성욱) 2016.10.11 1920
1876 JDBC 로깅 파일 위치 설정 jevida(강성욱) 2016.10.11 982
1875 NUMA Node 메모리 블록 jevida(강성욱) 2016.10.11 1059
1874 AppDomain unloading 오류 로그 – CLR 오류 jevida(강성욱) 2016.10.11 1214
1873 SQL Server IO and Latch 설명 jevida(강성욱) 2016.10.11 3422
1872 마지막 백업 시간 및 DBCC 확인 [1] jevida(강성욱) 2016.10.08 1626
1871 DMV를 활용한 CPU 트러블슈팅 - Sys.dm_exec_query_stats, sys.dm_os_ring_buffers 활용 [1] jevida(강성욱) 2016.10.08 1955
1870 백업 미디어 세트에 압축 백업 추가하기 jevida(강성욱) 2016.10.08 1509
1869 Collation에 따른 실행계획 변경과 성능 문제 jevida(강성욱) 2016.10.08 1700
1868 SQL Connection Timeout 디버깅 with BizTalk Server jevida(강성욱) 2016.10.08 2345
1867 인스턴스 파일 초기화 활성 jevida(강성욱) 2016.10.08 1752





XE Login