CircularString
적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
CircularString은 0개 이상의 연속 원호 세그먼트의 컬렉션입니다. 원호 세그먼트는 2차원 평면에서 3개의 점으로 정의되는 곡선 세그먼트입니다. 첫 번째 점은 세 번째 점과 같을 수 없습니다. 원호 세그먼트의 세 점이 모두 선형인 경우 호 세그먼트는 선 세그먼트로 처리됩니다.
CircularString 인스턴스
아래 그림에서는 유효한 CircularString 인스턴스를 보여 줍니다.
허용되는 인스턴스
CircularString 인스턴스는 비어 있거나 홀수의 포인트(n, 여기서 n > 1)를 포함하는 경우 허용됩니다. 다음 CircularString 인스턴스가 허용됩니다.
DECLARE @g1 geometry = 'CIRCULARSTRING EMPTY';
DECLARE @g2 geometry = 'CIRCULARSTRING(1 1, 2 0, -1 1)';
DECLARE @g3 geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 2 0, 1 1)';
@g3
는 CircularString 인스턴스가 수락될 수 있지만 유효하지 않음을 보여 줍니다. 다음 CircularString 인스턴스 선언은 허용되지 않습니다. 이 선언은 을 throw합니다 System.FormatException
.
DECLARE @g geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 1 1)';
유효한 인스턴스
유효한 CircularString 인스턴스는 비어 있거나 다음 특성을 포함해야 합니다.
- 하나 이상의 원호 세그먼트(즉, 3포인트 이상 포함)를 포함해야 합니다.
- 마지막 세그먼트를 제외하고 시퀀스의 각 원형 호 세그먼트에 대한 마지막 엔드포인트는 시퀀스의 다음 세그먼트에 대한 첫 번째 엔드포인트여야 합니다.
- 홀수의 포인트가 있어야 합니다.
- 간격에 따라 겹칠 수 없습니다.
- CircularString 인스턴스에는 선 세그먼트가 포함될 수 있지만 이러한 선 세그먼트는 세 개의 선형 점으로 정의되어야 합니다.
다음 예제에서는 유효한 CircularString 인스턴스를 보여 줍니다.
DECLARE @g1 geometry = 'CIRCULARSTRING EMPTY';
DECLARE @g2 geometry = 'CIRCULARSTRING(1 1, 2 0, -1 1)';
DECLARE @g3 geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 1 1, 0 1)';
DECLARE @g4 geometry = 'CIRCULARSTRING(1 1, 2 2, 2 2)';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(),@g4.STIsValid();
CircularString 인스턴스는 전체 원을 정의하기 위해 두 개 이상의 원형 호 세그먼트를 포함해야 합니다. CircularString 인스턴스는 단일 원형 호 세그먼트(예: (1 1, 3 1, 1 1))를 사용하여 전체 원을 정의할 수 없습니다. (1 1, 2 2, 3 1, 2 0, 1 1)을 사용하여 원을 정의합니다.
다음 예제에서는 유효하지 않은 CircularString 인스턴스를 보여 줍니다.
DECLARE @g1 geometry = 'CIRCULARSTRING(1 1, 2 0, 1 1)';
DECLARE @g2 geometry = 'CIRCULARSTRING(0 0, 0 0, 0 0)';
SELECT @g1.STIsValid(), @g2.STIsValid();
선형 점이 있는 인스턴스
다음 경우 원호 세그먼트는 선 세그먼트로 처리됩니다.
- 세 점이 모두 선형인 경우(예: 1 3, 4 4, 7 5).
- 첫 번째 및 중간 지점이 동일하지만 세 번째 점이 다른 경우(예: 1 3, 1 3, 7 5).
- 중간 및 마지막 점이 동일하지만 첫 번째 점이 다른 경우(예: (1 3, 4 4, 4 4))
예
A. 빈 CircularString을 사용하여 Geometry 인스턴스 인스턴스 인스턴스화
이 예제에서는 빈 CircularString 인스턴스를 만드는 방법을 보여 줍니다.
DECLARE @g geometry;
SET @g = geometry::Parse('CIRCULARSTRING EMPTY');
B. 원호 세그먼트 하나가 있는 CircularString을 사용하여 Geometry 인스턴스 인스턴스 인스턴스화
다음 예에서는 단일 원호 세그먼트(반원)를 사용하여 CircularString 인스턴스를 만드는 방법을 보여 줍니다.
DECLARE @g geometry;
SET @g = geometry:: STGeomFromText('CIRCULARSTRING(2 0, 1 1, 0 0)', 0);
SELECT @g.ToString();
C. 여러 원호 세그먼트가 있는 CircularString을 사용하여 Geometry 인스턴스 인스턴스 인스턴스화
다음 예에서는 두 개 이상의 원호 세그먼트(완전한 원)를 사용하여 CircularString 인스턴스를 만드는 방법을 보여 줍니다.
DECLARE @g geometry;
SET @g = geometry::Parse('CIRCULARSTRING(2 1, 1 2, 0 1, 1 0, 2 1)');
SELECT 'Circumference = ' + CAST(@g.STLength() AS NVARCHAR(10));
결과 집합은 다음과 같습니다.
Circumference = 6.28319
CircularString 대신 LineString을 사용할 때의 출력을 비교합니다.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(2 1, 1 2, 0 1, 1 0, 2 1)', 0);
SELECT 'Perimeter = ' + CAST(@g.STLength() AS NVARCHAR(10));
결과 집합은 다음과 같습니다.
Perimeter = 5.65685
CircularString 예의 값이 원의 실제 원주인 2∏에 가깝습니다.
D. 동일한 문에서 CircularString을 사용하여 Geometry 인스턴스 선언 및 인스턴스화
이 조각은 동일한 문에서 geometry 을 사용하여 CircularString 인스턴스를 선언하고 인스턴스화하는 방법을 보여 줍니다.
DECLARE @g geometry = 'CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)';
E. CircularString을 사용하여 Geography 인스턴스 인스턴스 인스턴스화
다음 예제에서는 CircularString을 사용하여 지리 인스턴스를 선언하고 인스턴스화하는 방법을 보여 줍니다.
DECLARE @g geography = 'CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';
F. 직선인 CircularString을 사용하여 Geometry 인스턴스 인스턴스 인스턴스화
다음 예제에서는 직선인 CircularString 인스턴스를 만드는 방법을 보여 줍니다.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('CIRCULARSTRING(0 0, 1 2, 2 4)', 0);
참고 항목
공간 데이터 형식 개요
CompoundCurve
MakeValid(geography 데이터 형식)
MakeValid(geometry 데이터 형식)
STIsValid(geometry 데이터 형식)
STIsValid(geography 데이터 형식)
STLength(geometry 데이터 형식)
STStartPoint(geometry 데이터 형식)
STEndpoint(geometry 데이터 형식)
STPointN(geometry 데이터 형식)
STNumPoints(geometry 데이터 형식)
STIsRing(geometry 데이터 형식)
STIsClosed(geometry 데이터 형식)
STPointOnSurface(geometry 데이터 형식)
Linestring
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기