다음을 통해 공유


MultiPolygon

MultiPolygon 인스턴스는 0개 이상의 Polygon 인스턴스 컬렉션입니다.

MultiPolygon 인스턴스

다음 그림에서는 MultiPolygon 인스턴스의 예를 보여 줍니다.

geometry MultiPolygon 인스턴스의 예

그림에 대한 설명:

  • 그림 1은 두 개의 Polygon 요소가 있는 MultiPolygon 인스턴스입니다. 경계는 두 개의 외부 링과 세 개의 내부 링으로 정의됩니다.

  • 그림 2는 두 개의 Polygon 요소가 있는 MultiPolygon 인스턴스입니다. 경계는 두 개의 외부 링과 세 개의 내부 링으로 정의됩니다. 두 개의 Polygon 요소는 탄젠트 점에서 교차합니다.

수락된 인스턴스

다음 조건 중 하나가 만족되면 MultiPolygon 인스턴스가 수락됩니다.

  • 해당 인스턴스가 빈 MultiPolygon 인스턴스입니다.

  • MultiPolygon 인스턴스를 구성하는 모든 인스턴스는 수락된 Polygon 인스턴스입니다. 수락된 Polygon 인스턴스에 대한 자세한 내용은 다각형을 참조하십시오.

다음 예에서는 수락된 MultiPolygon 인스턴스를 보여 줍니다.

DECLARE @g1 geometry = 'MULTIPOLYGON EMPTY';
DECLARE @g2 geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3, 1 3, 1 1)))';
DECLARE @g3 geometry = 'MULTIPOLYGON(((2 2, 2 -2, -2 -2, -2 2, 2 2)),((1 1, 3 1, 3 3, 1 3, 1 1)))';

다음 예에서는 System.FormatException이 발생하는 MultiPolygon 인스턴스를 보여 줍니다.

DECLARE @g geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3)))';

MultiPolygon에 있는 두 번째 인스턴스는 LineString 인스턴스이며 수락된 Polygon 인스턴스가 아닙니다.

유효한 인스턴스

MultiPolygon 인스턴스가 빈 MultiPolygon 인스턴스이거나 다음 조건을 만족하면 유효합니다.

  1. MultiPolygon 인스턴스를 구성하는 모든 인스턴스는 유효한 Polygon 인스턴스입니다. 유효한 Polygon 인스턴스에 대해서는 다각형을 참조하십시오.

  2. MultiPolygon 인스턴스를 구성하는 Polygon 인스턴스가 하나도 겹치지 않습니다.

다음 예에서는 두 개의 유효한 MultiPolygon 인스턴스와 하나의 유효하지 않은 MultiPolygon 인스턴스를 보여 줍니다.

DECLARE @g1 geometry = 'MULTIPOLYGON EMPTY';
DECLARE @g2 geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3, 1 3, 1 1)))';
DECLARE @g3 geometry = 'MULTIPOLYGON(((2 2, 2 -2, -2 -2, -2 2, 2 2)),((1 1, 3 1, 3 3, 1 3, 1 1)))';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid();

두 개의 Polygon 인스턴스가 탄젠트 점에서만 만나므로 @g2는 유효합니다. @g3는 두 Polygon 인스턴스의 내부가 서로 겹치므로 유효하지 않습니다.

다음 예에서는 geometryMultiPolygon 인스턴스를 만드는 방법을 보여 주고 두 번째 구성 요소의 WKT(Well-Known Text)를 반환합니다.

DECLARE @g geometry;
SET @g = geometry::Parse('MULTIPOLYGON(((0 0, 0 3, 3 3, 3 0, 0 0), (1 1, 1 2, 2 1, 1 1)), ((9 9, 9 10, 10 9, 9 9)))');
SELECT @g.STGeometryN(2).STAsText();

이 예에서는 빈 MultiPolygon 인스턴스를 인스턴스화합니다.

DECLARE @g geometry;
SET @g = geometry::Parse('MULTIPOLYGON EMPTY');