다음을 통해 공유


geography 인스턴스 만들기, 구성 및 쿼리

지리 공간 데이터 형식인 geography는 둥근 표면 좌표계로 데이터를 나타냅니다. 이 형식은 SQL Server에서 .NET CLR(공용 언어 런타임) 데이터 형식으로 구현됩니다. SQL Server geography 데이터 형식에는 GPS 위도 및 경도 좌표와 같은 타원(둥근 표면) 데이터를 저장합니다.

geography 형식은 데이터베이스에서 미리 정의되고 사용할 수 있습니다. 다른 시스템 제공 형식을 사용할 때와 동일한 방식으로 geography 형식의 테이블 열을 만들고 geography 데이터에 대한 작업을 수행할 수 있습니다.

항목 내용

  • 새 지리 인스턴스 만들기 또는 구성

    • 기존 인스턴스에서 새 지리 인스턴스 만들기

    • WKT 입력으로부터 지리 인스턴스 구성

    • WKB 입력으로부터 지리 인스턴스 구성

    • GML 텍스트 입력으로부터 지리 인스턴스 구성

  • 지리 인스턴스에서 WKT 및 WKB 반환

  • 지리 인스턴스의 속성 및 동작 쿼리

    • 유효성, 인스턴스 유형 및 GeometryCollection 정보

    • 점 수

    • 차원

    • 비어 있음

    • 닫힘

    • SRID(Spatial Reference ID)

  • 지리 인스턴스 간 관계 확인

  • 지원되는 SRID를 사용해야 하는 geography 인스턴스

[맨 위]

새 지리 인스턴스 만들기 또는 구성

기존 인스턴스에서 새 지리 인스턴스 만들기

geography 데이터 형식은 수많은 기본 메서드를 제공합니다. 이러한 메서드를 사용하여 기존 인스턴스에 기반하여 새 geography 인스턴스를 만들 수 있습니다.

WKT 입력으로부터 지리 인스턴스 구성

geography 데이터 형식은 OGC(Open Geospatial Consortium) WKT 표현에서 지리를 생성하는 여러 가지 기본 메서드를 제공합니다. WKT 표준은 지리 데이터를 텍스트 형식으로 교환할 수 있는 텍스트 문자열입니다.

WKB 입력으로부터 지리 인스턴스 구성

WKB는 클라이언트 응용 프로그램과 SQL 데이터베이스 간에 Geography 데이터를 교환할 수 있도록 OGC에서 지정하는 이진 형식입니다. 다음 함수는 WKB 입력을 사용하여 geography 인스턴스를 생성합니다.

GML 텍스트 입력으로부터 지리 인스턴스 구성

geography 데이터 형식은 geography 인스턴스의 XML 표현인 GML에서 geography 인스턴스를 생성하는 메서드를 제공합니다. SQL Server는 GML 하위 집합을 지원합니다.

Geography Markup Language에 대한 자세한 내용은 OGC 사양(OGC Specifications, Geography Markup Language)을 참조하십시오.

지리 인스턴스에서 WKT 및 WKB 반환

다음 메서드를 사용하여 geography 인스턴스의 WKT 또는 WKB 형식을 반환할 수 있습니다.

지리 인스턴스의 속성 및 동작 쿼리

모든 geography 인스턴스에는 SQL Server에서 제공하는 메서드를 통해 검색할 수 있는 여러 속성이 있습니다. 다음 항목에서는 geography 형식의 속성과 동작 및 각각을 쿼리하는 메서드를 정의합니다.

유효성, 인스턴스 유형 및 GeometryCollection 정보

geography 인스턴스를 구성한 후 다음과 같은 방법으로 인스턴스 유형을 반환할 수 있습니다. GeometryCollection 인스턴스인 경우 특정 geography 인스턴스를 반환할 수 있습니다.

점 수

모든 비어 있지 않은 geography 인스턴스는 점으로 구성됩니다. 이러한 점은 geography 인스턴스가 그려지는 지구의 위도 및 경도 좌표를 나타냅니다. geography 데이터 형식은 인스턴스의 점을 쿼리하는 데 필요한 수많은 기본 메서드를 제공합니다.

차원

비어 있지 않은 geography 인스턴스는 0차원, 1차원 또는 2차원이 될 수 있습니다. Point 및 MultiPoint와 같은 0차원 geography 인스턴스에는 길이 또는 영역이 없습니다. LineString, CircularString, CompoundCurve 및 MultiLineString과 같은 1차원 개체에는 길이가 있고, Polygon, CurvePolygon 및 MultiPolygon과 같은 2차원 인스턴스에는 영역과 길이가 있습니다. 비어 있는 인스턴스에서는 -1차원을 보고하고 GeometryCollection에서는 해당 내용의 최대 차원을 보고합니다.

비어 있음

비어 있는 geography 인스턴스에는 점이 하나도 없습니다. 비어 있는 LineString, CircularString, CompoundCurve 및 MultiLineString 인스턴스의 길이는 0입니다. 비어 있는 Polygon, CurvePolygon 및 MultiPolygon 인스턴스의 영역은 0입니다.

닫힘

닫혀 있는 geography 인스턴스는 시작점과 끝점이 같은 도형입니다. Polygon 인스턴스는 닫혀 있다고 간주되며, Point 인스턴스는 닫혀 있지 않습니다.

링은 단순하고 닫혀 있는 LineString 인스턴스입니다.

SRID(Spatial Reference ID)

SRID는 geography 인스턴스를 나타내는 타원 좌표계를 지정하는 식별자입니다. 다른 SRID를 사용하는 두 geography 인스턴스는 서로 비교할 수 없습니다.

이 속성은 수정할 수 있습니다.

지리 인스턴스 간 관계 확인

geography 데이터 형식은 수많은 기본 메서드를 제공합니다. 이러한 메서드를 사용하여 두 개의 geography 인스턴스 간 관계를 확인할 수 있습니다.

지원되는 SRID를 사용해야 하는 geography 인스턴스

SQL Server에서는 EPSG 표준을 기준으로 하는 SRID를 지원합니다. 계산을 수행하거나 지리 공간 데이터가 있는 메서드를 사용할 경우 geography 인스턴스에 SQL Server 지원 SRID가 사용되어야 합니다. SRID는 sys.spatial_reference_systems 카탈로그 뷰에 표시된 SRID 중 하나와 일치해야 합니다. 앞에서 설명한 대로 각 타원면에는 특정 SRID가 지정되므로 geography 데이터 형식을 사용하여 공간 데이터에서 계산을 수행할 경우 데이터를 만드는 데 사용된 타원면에 따라 결과가 달라집니다.

geography 인스턴스의 메서드를 사용할 경우 SQL Server에서는 WGS 84 공간 참조 시스템에 매핑되는 기본 SRID 4326을 사용합니다. WGS 84(또는 SRID 4326)가 아닌 공간 참조 시스템의 데이터를 사용할 경우 지리 공간 데이터에 대해 특정 SRID를 결정해야 합니다.

다음 예에서는 지리 데이터를 추가하고 쿼리하는 방법을 보여 줍니다.

  • 첫 번째 예에서는 ID 열과 geography 열 GeogCol1이 있는 테이블을 만듭니다. 세 번째 열에서는 geography 열을 OGC(Open Geospatial Consortium) WKT(Well-Known Text) 표현으로 렌더링하고 STAsText() 메서드를 사용합니다. 그리고 나서 두 개의 행이 삽입됩니다. 이 중 한 행에는 geography의 LineString 인스턴스가 들어 있고, 한 행에는 Polygon 인스턴스가 들어 있습니다.

    IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL 
        DROP TABLE dbo.SpatialTable;
    GO
    
    CREATE TABLE SpatialTable 
        ( id int IDENTITY (1,1),
        GeogCol1 geography, 
        GeogCol2 AS GeogCol1.STAsText() );
    GO
    
    INSERT INTO SpatialTable (GeogCol1)
    VALUES (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326));
    
    INSERT INTO SpatialTable (GeogCol1)
    VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));
    GO
    
  • 두 번째 예에서는 STIntersection() 메서드를 사용하여 앞에서 삽입된 두 개의 geography 인스턴스가 교차하는 지점을 반환할 수 있습니다.

    DECLARE @geog1 geography;
    DECLARE @geog2 geography;
    DECLARE @result geography;
    
    SELECT @geog1 = GeogCol1 FROM SpatialTable WHERE id = 1;
    SELECT @geog2 = GeogCol1 FROM SpatialTable WHERE id = 2;
    SELECT @result = @geog1.STIntersection(@geog2);
    SELECT @result.STAsText();
    

참고 항목

개념

공간 데이터(SQL Server)