공간 데이터 형식

공간 데이터 형식은 두 가지가 있습니다. geometry 데이터 형식은 평면 또는 유클리드(평면 지구) 데이터를 지원합니다. geometry 데이터 형식은 Open Geospatial Consortium (OGC) Simple Features for SQL Specification 버전 1.1.0을 따릅니다.

또한 SQL Server에서는 GPS 위도 및 경도 좌표와 같은 타원(둥근 지구) 데이터를 저장하는 geography 데이터 형식을 지원합니다.

geometry 및 geography 데이터 형식은 11개의 공간 데이터 개체 또는 인스턴스 유형을 지원합니다. 그러나 이러한 인스턴스 유형 중 7개만 인스턴스화할 수 있고 데이터베이스에서 이러한 인스턴스를 만들고 작업할(또는 이러한 인스턴스 유형을 인스턴스화함) 수 있습니다. 이러한 인스턴스는 GeometryCollection에서 이들을 Points, LineStrings 및 Polygons로 구분하거나 여러 geometry 또는 geography 인스턴스로 구분하는 부모 데이터 형식에서 특정 속성을 파생시킵니다.

아래 그림에서는 geometry 및 geography 데이터 형식의 기반인 geometry 계층을 보여 줍니다. geometry 및 geography의 인스턴스화할 수 있는 형식은 파란색으로 표시됩니다.

geometry 유형의 계층

그림에 표시된 대로 geometry 및 geography 데이터 형식 중 7개의 인스턴스화할 수 있는 형식은 Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon 및 GeometryCollection입니다. geometry 및 geography 형식은 인스턴스가 명시적으로 정의되어 있지 않더라도 형식이 올바르다면 특정 인스턴스를 인식할 수 있습니다. 예를 들어 STPointFromText() 메서드를 사용하여 Point 인스턴스를 명시적으로 정의할 경우, 올바른 형식의 메서드 입력에 한해 geometry 및 geography는 해당 인스턴스를 Point로 인식합니다. STGeomFromText() 메서드를 사용하여 동일한 인스턴스를 정의할 경우 geometry 및 geography 데이터 형식은 해당 인스턴스를 Point로 인식합니다.

이러한 인스턴스에 대한 자세한 내용은 다음 항목을 참조하십시오.

두 데이터 형식의 차이점

공간 데이터의 두 가지 형식은 종종 매우 비슷하게 작동하지만 데이터가 저장되고 조작되는 방식에서 몇 가지 주요 차이점이 있습니다.

연결 가장자리가 정의되는 방식

LineString 및 Polygon 형식을 정의하는 데이터는 꼭지점뿐입니다. geometry 형식에서 두 꼭지점을 잇는 연결 가장자리는 직선입니다. 그러나 geography 형식에서는 두 꼭지점을 잇는 연결 가장자리가 두 꼭지점 사이의 짧고 큰 타원 호입니다. 큰 타원은 타원면과 타원면의 중심을 관통하는 평면이 교차하는 지점이고 큰 타원 호는 큰 타원의 호 세그먼트입니다.

공간 데이터 형식의 측정

평면(또는 평면 지구) 시스템에서 거리와 영역의 측정은 좌표와 동일한 측정 단위로 지정됩니다. geometry 데이터 형식을 이용하면 사용한 단위에 상관없이 (2, 2)와 (5, 6) 사이의 거리는 5단위입니다.

타원 또는 둥근 지구 시스템에서 좌표는 위도와 경도의 도 단위로 지정됩니다. 그러나 geography 인스턴스의 SRID(spatial reference identifier)에 따라 측정이 달라지더라도 길이 및 영역은 일반적으로 미터와 제곱미터로 측정됩니다. 가장 일반적인 geography 데이터 형식의 측정 단위는 미터입니다.

공간 데이터의 방향

평면 시스템에서 다각형의 링 방향은 중요한 요소가 아닙니다. 예를 들어 ((0, 0), (10, 0), (0, 20), (0, 0))로 나타내는 다각형은 ((0, 0), (0, 20), (10, 0), (0, 0))로 나타내는 다각형과 동일합니다. OGC Simple Features for SQL Specification에서는 링 순서를 지정하지 않으며 SQL Server에서는 링 순서를 강제로 지정하지 않습니다.

타원 시스템에서 방향이 없는 다각형은 아무 의미가 없거나 모호합니다. 적도 주변 링이 남반구 또는 북반구를 나타내는지 여부를 예로 들 수 있습니다. geography 데이터 형식을 사용하여 공간 인스턴스를 저장할 경우 링의 방향을 지정하고 인스턴스의 위치를 정확하게 나타내야 합니다.

SQL Server 2008에서는 geography 데이터 형식을 사용하는 데 다음 제한 사항이 있습니다.

  • 각 geography 인스턴스가 단일 반구 내에 포함되어야 합니다. 반구보다 큰 공간 개체는 저장할 수 없습니다.

  • 반구보다 큰 개체를 생성하는 OGC(Open Geospatial Consortium) WKT(Well-Known Text) 또는 WKB(Well-Known Binary) 표현의 모든 geography 인스턴스에서 ArgumentException이 발생합니다.

  • STIntersection(), STUnion(), STDifference() 및 **STSymDifference()**와 같이 두 개의 geography 인스턴스를 입력해야 하는 geography 데이터 형식 메서드는 이 메서드의 결과가 단일 반구 내에 포함되지 않을 경우 Null을 반환합니다. **STBuffer()**도 결과가 단일 반구를 초과할 경우 Null을 반환합니다.

지리 데이터 형식에서 중요하지 않은 외부 및 내부 링

OGC Simple Features for SQL Specification에서는 외부 링 및 내부 링에 대해 설명하지만 이러한 구분은 SQL Servergeography 데이터 형식에 대해 거의 의미가 없습니다. 다각형의 링은 외부 링으로 사용될 수 있습니다.

OGC 사양에 대한 자세한 내용은 다음을 참조하십시오.

OGC Specifications, Simple Feature Access Part 1 - Common Architecture

OGC Specifications, Simple Feature Access Part 2 - SQL Options