A CurvePolygon 는 외부 경계 링과 0개 이상의 내부 링으로 정의된 토폴로지로 닫힌 표면입니다.
중요합니다
하위 형식을 포함하여 CurvePolygon SQL Server 2012에 도입된 공간 기능에 대한 자세한 설명과 예제를 보려면 SQL Server 2012의 새 공간 기능 백서를 다운로드하세요.
다음 조건은 인스턴스의 특성을 정의합니다.CurvePolygon
인스턴스의
CurvePolygon경계는 외부 링과 모든 내부 링으로 정의됩니다.인스턴스의
CurvePolygon내부는 외부 링과 모든 내부 링 사이의 공간입니다.
CurvePolygon 인스턴스는 Polygon 인스턴스와는 다르게, CurvePolygon 인스턴스가 다음과 같은 원호 세그먼트를 포함할 수 있습니다: CircularString 및 CompoundCurve.
CompoundCurve 인스턴스
아래 그림에서는 유효한 CurvePolygon 수치를 보여 줍니다.
허용되는 인스턴스
인스턴스를 CurvePolygon 허용하려면 비어 있거나 허용되는 원호 링만 포함해야 합니다. 허용되는 원호 링은 다음 요구 사항을 충족합니다.
허용되는
LineString또는CircularString또는CompoundCurve인스턴스입니다. 허용되는 인스턴스에 대한 자세한 내용은 LineString, CircularString 및 CompoundCurve를 참조하세요.4점 이상 있습니다.
시작점과 끝점에는 동일한 X 및 Y 좌표가 있습니다.
비고
Z 및 M 값은 무시됩니다.
다음 예제에서는 허용되는 CurvePolygon 인스턴스를 보여 줍니다.
DECLARE @g1 geometry = 'CURVEPOLYGON EMPTY';
DECLARE @g2 geometry = 'CURVEPOLYGON((0 0, 0 0, 0 0, 0 0))';
DECLARE @g3 geometry = 'CURVEPOLYGON((0 0 1, 0 0 2, 0 0 3, 0 0 3))'
DECLARE @g4 geometry = 'CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))';
DECLARE @g5 geography = 'CURVEPOLYGON((-122.3 47, 122.3 -47, 125.7 -49, 121 -38, -122.3 47))';
@g3 는 Z 값이 무시되므로 시작점과 끝점의 Z 값이 다르더라도 허용됩니다.
@g5 는 형식 인스턴스가 geography 유효하지 않더라도 허용됩니다.
다음 예제에서는 throw System.FormatException합니다.
DECLARE @g1 geometry = 'CURVEPOLYGON((0 5, 0 0, 0 0, 0 0))';
DECLARE @g2 geometry = 'CURVEPOLYGON((0 0, 0 0, 0 0))';
@g1 는 시작점과 끝점의 Y 값이 같지 않기 때문에 허용되지 않습니다.
@g2 은 링에 포인트가 충분하지 않기 때문에 허용되지 않습니다.
유효한 인스턴스
인스턴스가 CurvePolygon 유효하려면 외부 및 내부 링이 다음 조건을 충족해야 합니다.
단일 탄젠트 지점에서만 터치할 수 있습니다.
그들은 서로 교차 할 수 없습니다.
각 링에는 4개 이상의 점이 포함되어야 합니다.
각 링은 허용되는 곡선 유형이어야 합니다.
CurvePolygon 인스턴스는 geometry 또는 geography 데이터 형식인지에 따라 특정 기준을 충족해야 합니다.
기하 데이터 형식
유효한 geometryCurvePolygon 인스턴스에는 다음 특성이 있어야 합니다.
모든 내부 링은 외부 링 내에 포함되어야 합니다.
여러 개의 내부 링이 있을 수 있지만 내부 링에는 다른 내부 링이 포함될 수 없습니다.
어떤 링도 자체 또는 다른 링을 교차할 수 없습니다.
링은 하나의 접점에서만 닿을 수 있습니다(링이 닿는 지점의 수는 반드시 유한해야 합니다).
다각형의 내부를 연결해야 합니다.
다음 예제에서는 유효한 geometryCurvePolygon 인스턴스를 보여 줍니다.
DECLARE @g1 geometry = 'CURVEPOLYGON EMPTY';
DECLARE @g2 geometry = 'CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))';
SELECT @g1.STIsValid(), @g2.STIsValid();
CurvePolygon 인스턴스는 CurvePolygon 인스턴스가 새 원호 세그먼트 형식을 수락할 수 있다는 예외를 제외하고 Polygon 인스턴스와 동일한 유효성 규칙을 갖습니다. 유효하거나 유효하지 않은 인스턴스의 더 많은 예제는 Polygon을 참조하세요.
지리 데이터 형식
유효한 geographyCurvePolygon 인스턴스에는 다음 특성이 있어야 합니다.
다각형의 내부는 왼쪽 규칙을 사용하여 연결됩니다.
어떤 링도 자체 또는 다른 링을 교차할 수 없습니다.
링은 하나의 접점에서만 만날 수 있으며, 링이 만나는 접점의 수는 유한해야 합니다.
다각형의 내부를 연결해야 합니다.
다음 예제에서는 유효한 geography CurvePolygon 인스턴스를 보여 줍니다.
DECLARE @g geography = 'CURVEPOLYGON((-122.3 47, 122.3 47, 125.7 49, 121 38, -122.3 47))';
SELECT @g.STIsValid();
예시
A. 빈 CurvePolygon으로 Geometry 인스턴스를 생성하기
이 예제에서는 빈 CurvePolygon 인스턴스를 만드는 방법을 보여 줍니다.
DECLARE @g geometry;
SET @g = geometry::Parse('CURVEPOLYGON EMPTY');
B. CurvePolygon을 활용하여 하나의 문장에서 Geometry 인스턴스 선언 및 생성하기
이 코드 조각은 동일한 문에서 기하 도형 인스턴스 CurvePolygon 를 선언하고 초기화하는 방법을 보여 줍니다.
DECLARE @g geometry = 'CURVEPOLYGON(CIRCULARSTRING(2 4, 4 2, 6 4, 4 6, 2 4))'
C. Geography 인스턴스 생성에 CurvePolygon 사용하기.
이 코드 조각은 geography 인스턴스를 CurvePolygon로 선언하고 초기화하는 방법을 보여줍니다.
DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';
D. 외부 경계 링만으로 CurvePolygon을 저장하기
이 예제에서는 인스턴스에 CurvePolygon 단순 원을 저장하는 방법을 보여 줍니다(원을 정의하는 데 외부 경계 링만 사용됨).
DECLARE @g geometry;
SET @g = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(2 4, 4 2, 6 4, 4 6, 2 4))');
SELECT @g.STArea() AS Area;
E. 내부 링이 포함된 곡선 폴리곤 저장
이 예제에서는 CurvePolygon 인스턴스에 도넛을 생성하며, 외부 경계 링과 내부 링을 모두 사용하여 도넛을 정의합니다.
DECLARE @g geometry;
SET @g = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(0 4, 4 0, 8 4, 4 8, 0 4), CIRCULARSTRING(2 4, 4 2, 6 4, 4 6, 2 4))');
SELECT @g.STArea() AS Area;
이 예제에서는 내부 링을 사용할 때 유효한 CurvePolygon 인스턴스와 잘못된 인스턴스를 모두 보여 줍니다.
DECLARE @g1 geometry, @g2 geometry;
SET @g1 = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(0 5, 5 0, 0 -5, -5 0, 0 5), (-2 2, 2 2, 2 -2, -2 -2, -2 2))');
IF @g1.STIsValid() = 1
BEGIN
SELECT @g1.STArea();
END
SET @g2 = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(0 5, 5 0, 0 -5, -5 0, 0 5), (0 5, 5 0, 0 -5, -5 0, 0 5))');
IF @g2.STIsValid() = 1
BEGIN
SELECT @g2.STArea();
END
SELECT @g1.STIsValid() AS G1, @g2.STIsValid() AS G2;
@g1과 @g2은 동일한 외부 경계 링을 사용합니다. 반경이 5인 원이며, 둘 다 내부 링으로 사각형을 사용합니다. 그러나 인스턴스 @g1 는 유효하지만 인스턴스 @g2 가 잘못되었습니다. 잘못된 이유는 내부 링이 @g2 외부 링으로 경계가 지정된 내부 공간을 4개의 개별 영역으로 분할하기 때문입니다. 다음 드로잉은 발생한 내용을 보여줍니다.
또한 참조하십시오
다각형
CircularString
CompoundCurve
기하학 데이터 유형 메서드 참조
geography 데이터 형식 메서드 참조
공간 데이터 형식 개요