CircularStringCircularString

CircularString 은 0개 이상의 연속 원호 세그먼트 컬렉션입니다.A CircularString is a collection of zero or more continuous circular arc segments. 원호 세그먼트는 2차원 평면에서 3개의 점으로 정의되는 곡선 세그먼트입니다. 첫 번째 점은 세 번째 점과 같을 수 없습니다.A circular arc segment is a curved segment defined by three points in a two-dimensional plane; the first point cannot be the same as the third point. 원호 세그먼트의 세 점 모두가 공선상에 있는 경우 원호 세그먼트가 선분으로 처리됩니다.If all three points of a circular arc segment are collinear, the arc segment is treated as a line segment.

중요

SQL Server 2012SQL Server 2012CircularString 하위 유형을 포함하여 에 도입된 새로운 공간 기능에 대한 자세한 설명 및 예제를 보려면 [SQL Server 2012의 새로운 공간 기능](http://go.microsoft.com/fwlink/?LinkId=226407)백서를 다운로드하세요.For a detailed description and examples of the new spatial features introduced in SQL Server 2012SQL Server 2012, including the CircularString subtype, download the white paper, New Spatial Features in SQL Server 2012.

CircularString 인스턴스CircularString instances

다음 그림에서는 유효한 CircularString 인스턴스를 보여 줍니다.The drawing below shows valid CircularString instances:

5ff17e34-b578-4873-9d33-79500940d0bc

허용되는 인스턴스Accepted instances

CircularString 인스턴스는 비어 있거나 홀수(n: n > 1) 점을 포함하는 경우 허용됩니다.A CircularString instance is accepted if it is either empty or contains an odd number of points, n, where n > 1. 다음 CircularString 인스턴스가 허용됩니다.The following CircularString instances are accepted.

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 인스턴스를 허용할 수 있지만 유효하지 않음을 보여 줍니다.@g3 shows that CircularString instance may be accepted, but not valid. 다음 CircularString 인스턴스 선언은 허용되지 않습니다.The following CircularString instance declaration is not accepted. 이 선언에서는 System.FormatException이 발생합니다.This declaration throws a System.FormatException.

DECLARE @g geometry = 'CIRCULARSTRING(1 1, 2 0, 2 0, 1 1)';  

유효한 인스턴스Valid instances

유효한 CircularString 인스턴스는 비어 있거나 다음 특성을 포함해야 합니다.A valid CircularString instance must be empty or have the following attributes:

  • 이러한 인스턴스는 하나 이상의 원호 세그먼트(즉, 최소 3개의 점)를 포함해야 합니다.It must contain at least one circular arc segment (that is, have a minimum of three points).

  • 마지막 세그먼트를 제외하고 시퀀스에 있는 각 원호 세그먼트의 마지막 끝점은 시퀀스에 있는 다음 세그먼트의 첫 번째 끝점이어야 합니다.The last endpoint for each circular arc segment in the sequence, except for the last segment, must be the first endpoint for the next segment in the sequence.

  • 이 인스턴스에는 홀수 점이 있어야 합니다.It must have an odd number of points.

  • 이 인스턴스는 일정 간격으로 겹치면 안 됩니다.It cannot overlap itself over an interval.

  • CircularString 인스턴스에 선분이 포함될 수 있지만 이러한 선분은 3개의 공선점으로 정의되어야 합니다.Although CircularString instances may contain line segments, these line segments must be defined by three collinear points.

    다음 예에서는 유효한 CircularString 인스턴스를 보여 줍니다.The following example shows valid CircularString instances.

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 인스턴스는 하나의 완전한 원을 정의하기 위해 두 개 이상의 원호 세그먼트를 포함해야 합니다.A CircularString instance must contain at least two circular arc segments to define a complete circle. CircularString 인스턴스는 (1 1, 3 1, 1 1)과 같은 하나의 원호 세그먼트를 사용하여 하나의 완전한 원을 정의할 수 없습니다.A CircularString instance cannot use a single circular arc segment (such as (1 1, 3 1, 1 1)) to define a complete circle. (1 1, 2 2, 3 1, 2 0, 1 1)을 사용하여 원을 정의합니다.Use (1 1, 2 2, 3 1, 2 0, 1 1) to define the circle.

다음 예에서는 유효하지 않은 CircularString 인스턴스를 보여 줍니다.The following example shows CircularString instances that are not valid.

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();  

공선점을 포함하는 인스턴스Instances with collinear points

다음 경우에는 원호 세그먼트가 선분으로 처리됩니다.In the following cases a circular arc segment will be treated as a line segment:

  • 3개의 점이 모두 공선상에 있는 경우(예: (1 3, 4 4, 7 5))When all three points are collinear (for example, (1 3, 4 4, 7 5)).

  • 첫 번째 및 중간 점이 동일하지만 세 번째 점이 다른 경우(예: (1 3, 1 3, 7 5))When the first and middle point are the same, but the third point is different (for example, (1 3, 1 3, 7 5)).

  • 중간 및 마지막 점이 동일하지만 첫 번째 점이 다른 경우(예: (1 3, 4 4, 4 4))When the middle and last point are the same, but the first point is different (for example, (1 3, 4 4, 4 4)).

Examples

1.A. 빈 CircularString을 사용하여 Geometry 인스턴스 인스턴스화Instantiating a Geometry Instance with an Empty CircularString

이 예에서는 빈 CircularString 인스턴스를 만드는 방법을 보여 줍니다.This example shows how to create an empty CircularString instance:

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

2.B. 원호 세그먼트가 하나인 경우 CircularString을 사용하여 Geometry 인스턴스 인스턴스화Instantiating a Geometry Instance Using a CircularString with One Circular Arc Segment

다음 예에서는 단일 원호 세그먼트(반원)를 사용하여 CircularString 인스턴스를 만드는 방법을 보여 줍니다.The following example shows how to create a CircularString instance with a single circular arc segment (half-circle):

DECLARE @g geometry;  
SET @g = geometry:: STGeomFromText('CIRCULARSTRING(2 0, 1 1, 0 0)', 0);  
SELECT @g.ToString();  

3.C. 원호 세그먼트가 여러 개인 경우 CircularString을 사용하여 Geometry 인스턴스 인스턴스화Instantiating a Geometry Instance Using a CircularString with Multiple Circular Arc Segments

다음 예에서는 두 개 이상의 원호 세그먼트(완전한 원)를 사용하여 CircularString 인스턴스를 만드는 방법을 보여 줍니다.The following example shows how to create a CircularString instance with more than one circular arc segment (full circle):

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));    

이 구문은 4∏에 해당하는This produces the following output:

Circumference = 6.28319  

LineString 대신 CircularString을 사용하는 경우의 출력과 비교합니다.Compare the output when LineString is used instead of CircularString:

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));  

이 구문은 4∏에 해당하는This produces the following output:

Perimeter = 5.65685  

CircularString 예의 값이 원의 실제 원주인 2∏에 가깝습니다.Notice that the value for the CircularString example is close to 2∏, which is the actual circumference of the circle.

4.D. 동일한 문에서 CircularString을 사용하여 Geometry 인스턴스 선언 및 인스턴스화Declaring and Instantiating a Geometry Instance with a CircularString in the Same Statement

이 조각은 동일한 문에서 geometry 을 사용하여 CircularString 인스턴스를 선언하고 인스턴스화하는 방법을 보여 줍니다.This snippet shows how to declare and instantiate a geometry instance with a CircularString in the same statement:

DECLARE @g geometry = 'CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)';  

5.E. CircularString을 사용하여 Geography 인스턴스 인스턴스화Instantiating a Geography Instance with a CircularString

다음 예에서는 geography 을 사용하여 CircularString인스턴스를 선언하고 인스턴스화하는 방법을 보여 줍니다.The following example shows how to declare and instantiate a geography instance with a 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)';  

6.F. 직선인 CircularString을 사용하여 Geometry 인스턴스 인스턴스화Instantiating a Geometry Instance with a CircularString that is a Straight Line

다음 예에서는 직선인 CircularString 인스턴스를 만드는 방법을 보여 줍니다.The following example shows how to create a CircularString instance that is a straight line:

DECLARE @g geometry;  
SET @g = geometry::STGeomFromText('CIRCULARSTRING(0 0, 1 2, 2 4)', 0);  

참고 항목See Also

공간 데이터 형식 개요 Spatial Data Types Overview
CompoundCurve CompoundCurve
MakeValid(geography 데이터 형식) MakeValid (geography Data Type)
MakeValid(geometry 데이터 형식) MakeValid (geometry Data Type)
STIsValid(geometry 데이터 형식) STIsValid (geometry Data Type)
STIsValid(geography 데이터 형식) STIsValid (geography Data Type)
STLength(geometry 데이터 형식) STLength (geometry Data Type)
STStartPoint(geometry 데이터 형식) STStartPoint (geometry Data Type)
STEndpoint(geometry 데이터 형식) STEndpoint (geometry Data Type)
STPointN(geometry 데이터 형식) STPointN (geometry Data Type)
STNumPoints(geometry 데이터 형식) STNumPoints (geometry Data Type)
STIsRing(geometry 데이터 형식) STIsRing (geometry Data Type)
STIsClosed(geometry 데이터 형식) STIsClosed (geometry Data Type)
STPointOnSurface(geometry 데이터 형식) STPointOnSurface (geometry Data Type)
LineString LineString