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 SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 41476
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 22479
1894 SQL Server에서 Drop 및 Delete 사용자 찾기 jevida(강성욱) 2016.10.12 1703
1893 SQL Server 트랜잭션 로그 읽기 jevida(강성욱) 2016.10.12 2288
1892 MaxBCPThreads에 따른 BCP 병렬출력 jevida(강성욱) 2016.10.11 1124
1891 확장이벤트와 dm_os_wait_stats 대기유형 매핑 jevida(강성욱) 2016.10.11 1965
1890 장기 트랜잭션 확인 및 경고 설정 jevida(강성욱) 2016.10.11 1525
1889 SQL 데이터 수집툴 DiagManager 사용법 jevida(강성욱) 2016.10.11 1387
1888 Windows Server 2012 R2 그룹 관리 서비스 계정 및 SQL 서버 jevida(강성욱) 2016.10.11 1890
1887 Kerbros 구성 관리자 툴 jevida(강성욱) 2016.10.11 1214
» SQL Server Geography 및 Geometory 데이터 형식 jevida(강성욱) 2016.10.11 2734
1885 SQL Server를 이용한 신용카드 보안 -조직이 PCI DSS 준수를 달성 하기 위한 요건 jevida(강성욱) 2016.10.11 1430
1884 TDE 암호화 사용하기 jevida(강성욱) 2016.10.11 3780
1883 SQL Server 암호화 하기 jevida(강성욱) 2016.10.11 2896
1882 의도하지 않은 분산트랜잭션 사용 jevida(강성욱) 2016.10.11 970
1881 Affinity I/O Mask jevida(강성욱) 2016.10.11 1230
1880 LPE_BATCH 스핀락 jevida(강성욱) 2016.10.11 924
1879 SQL Server 17953 오류 jevida(강성욱) 2016.10.11 1061
1878 SQL 연결 18056 오류 jevida(강성욱) 2016.10.11 1478
1877 SQL 2008 R2 Sp1 적용과 9013 오류 - 포맷 섹터 크기에 따른 오류 jevida(강성욱) 2016.10.11 2035
1876 JDBC 로깅 파일 위치 설정 jevida(강성욱) 2016.10.11 1004
1875 NUMA Node 메모리 블록 jevida(강성욱) 2016.10.11 1092





XE Login