다음을 통해 공유


BufferWithCurves(geography 데이터 형식)

적용 대상: SQL ServerAzure SQL Database Azure SQL Managed Instance

호출하는 geography 인스턴스와의 거리가 거리 매개 변수보다 작거나 같은 모든 지점의 집합을 나타내는 지리 인스턴스를 반환합니다.

Syntax

  
.BufferWithCurves ( distance )  

참고 항목

SQL Server 2014(12.x) 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

인수

distance
버퍼를 구성하는 점과 geography 인스턴스 사이에 허용되는 최대 거리를 나타내는 float입니다.

반환 형식

SQL Server 반환 형식: geography

CLR 반환 형식: SqlGeography

예외

다음 조건은 ArgumentExceptionthrow합니다.

  • 메서드에 매개 변수가 전달되지 않는 경우(예: @g.BufferWithCurves())

  • 숫자가 아닌 매개 변수가 메서드에 전달되는 경우(예: @g.BufferWithCurves('a'))

  • NULL 은 메서드에 전달됩니다(예: @g.BufferWithCurves(NULL)

설명

다음 표에서는 서로 다른 거리 값에 대해 반환된 결과를 보여 있습니다.

거리 값 형식 차원 반환되는 공간 유형
distance < 0 0 또는 1 GeometryCollection 인스턴스
distance < 0 2 이상 음수 버퍼가 있는 CurvePolygon 또는 GeometryCollection 인스턴스입니다.

참고: 음수 버퍼는 빈 GeometryCollection을 만들 수 있습니다.
distance = 0 모든 차원 호출하는 geography 인스턴스의 복사본
distance > 0 모든 차원 CurvePolygon 또는 GeometryCollection 인스턴스

참고 항목

거리float이므로 매우 작은 값은 0으로 계산될 수 있습니다. 이 경우 호출 geography 인스턴스의 복사본이 반환됩니다.

문자열 매개 변수가 메서드에 전달되면 부동 소수로 변환되거나 throw됩니다ArgumentException.

예제

A. 1차원 geography 인스턴스에서 매개 변수 값 < 0인 BufferWithCurves() 호출

다음 예제에서는 빈 GeometryCollection 인스턴스를 반환합니다.

DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves(-1).ToString();

B. 2차원 geography 인스턴스에서 매개 변수 값 < 0인 BufferWithCurves() 호출

다음 예제에서는 음수 버퍼가 있는 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))';  
SELECT @g.BufferWithCurves(-1).ToString()

C. 빈 GeometryCollection을 반환하고 매개 변수 값 < 0인 BufferWithCurves() 호출

다음 예제에서는 거리 매개 변수가 -2와 같을 때 발생하는 일을 보여 줍니다.

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))';  
SELECT @g.BufferWithCurves(-2).ToString();

SELECT 문은 GEOMETRYCOLLECTION EMPTY를 반환합니다.

D. 매개 변수 값 = 0인 BufferWithCurves() 호출

다음 예제에서는 호출 되는 geography 인스턴스의 복사본을 반환합니다 .

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves(0).ToString();

E. 0이 아닌 매개 변수 값이 매우 작은 BufferWithCurves() 호출

다음 예제에서는 호출 되는 geography 인스턴스의 복사본도 반환합니다 .

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
DECLARE @distance float = 1e-20;  
SELECT @g.BufferWithCurves(@distance).ToString();

F. 매개 변수 값 > 0인 BufferWithCurves() 호출

다음 예제에서는 인스턴스를 반환합니다.CurvePolygon

DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves(2).ToString();

G. 올바른 문자열 매개 변수 전달

다음 예제에서는 앞에서 설명한 것과 동일한 CurvePolygon 인스턴스를 반환하지만 문자열 매개 변수는 메서드에 전달됩니다.

DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves('2').ToString();

H. 잘못된 문자열 매개 변수 전달

다음 예제에서는 오류를 throw합니다.

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)'  
SELECT @g.BufferWithCurves('a').ToString();

위의 두 예에서는 문자열 리터럴이 BufferWithCurves() 메서드에 전달됩니다. 첫 번째 예는 문자열 리터럴을 숫자 값으로 변환할 수 있으므로 정상적으로 작동하지만, 두 번째 예에서는 ArgumentException이 발생합니다.

참고 항목

지리 인스턴스의 확장 메서드
BufferWithCurves(geometry 데이터 형식)