STCurveN(geography 데이터 형식)
적용 대상: Microsoft Fabric의 SQL ServerAzure SQL Database Azure SQL Managed Instance SQL 데이터베이스
LineString, CircularString 또는 CompoundCurve인 지리 인스턴스에서 지정된 곡선을 반환합니다.
구문
.STCurveN( n )
인수
n
1과 geography 인스턴스에 있는 곡선의 개수 사이의 int 식입니다.
반환 형식
SQL Server 반환 형식: geography
CLR 반환 형식: SqlGeography
예외
n < 1인 경우 ArgumentOutOfRangeException이 throw됩니다.
설명
다음 조건에서는 NULL이 반환됩니다.
geography 인스턴스가 선언되었지만 인스턴스화되지 않음
지리 인스턴스가 비어 있습니다.
n은 geography 인스턴스의 커브 수를 초과합니다(STNumCurves(geography 데이터 형식) 참조).
geography 인스턴스의 차원이 동일하지 않습니다(STDimension(geography 데이터 형식) 참조).
예제
A. CircularString에서 STCurveN() 사용
다음 예제에서는 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)';
SELECT @g.STCurveN(2).ToString();
이 예제에서는 반환합니다.
CIRCULARSTRING (-122.348 47.658, -122.358 47.658, -122.358 47.653)
B. CompoundCurve에 STCurveN() 사용
다음 예제에서는 CompoundCurve 인스턴스에서 두 번째 곡선을 반환합니다.
DECLARE @g geography = 'COMPOUNDCURVE(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';
SELECT @g.STCurveN(2).ToString();
이 예제에서는 반환합니다.
CIRCULARSTRING (-122.348 47.658, -122.358 47.658, -122.358 47.653)
C. 3개의 CircularStrings가 포함된 CompoundCurve에서 STCurveN() 사용
다음 예제에서는 세 개의 별도 CircularString 인스턴스를 이전 예제와 동일한 곡선 시퀀스로 결합하는 CompoundCurve 인스턴스를 사용합니다.
DECLARE @g geography = 'COMPOUNDCURVE (CIRCULARSTRING (-122.358 47.653, -122.348 47.649, -122.348 47.658), CIRCULARSTRING(-122.348 47.658, -122.358 47.658, -122.358 47.653))';
SELECT @g.STCurveN(2).ToString();
이 예제에서는 반환합니다.
CIRCULARSTRING (-122.348 47.658, -122.358 47.658, -122.358 47.653)
STCurveN()
는 사용되는 WKT(잘 알려진 텍스트) 형식에 관계없이 동일한 결과를 반환합니다.
D. STCurve()를 호출하기 전에 유효성 테스트
다음 예제에서는 STCurveN() 메서드를 호출하기 전에 n이 유효한지 확인하는 방법을 보여 줍니다.
DECLARE @g geography;
DECLARE @n int;
SET @n = 2;
SET @g = geography::Parse('LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)');
IF @n >= 1 AND @n <= @g.STNumCurves()
BEGIN
SELECT @g.STCurveN(@n).ToString();
END