적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric의 SQL 데이터베이스
호출하는 geography 인스턴스와의 거리가 거리 매개 변수보다 작거나 같은 모든 지점의 집합을 나타내는 지리 인스턴스를 반환합니다.
Syntax
.BufferWithCurves ( distance )
Arguments
distance
버퍼를 구성하는 점과 geography 인스턴스 사이에 허용되는 최대 거리를 나타내는 float입니다.
반환 형식
SQL Server 반환 형식: geography
CLR 반환 형식: SqlGeography
Exceptions
다음 조건은 ArgumentException을 throw합니다.
메서드에 매개 변수가 전달되지 않는 경우(예:
@g.BufferWithCurves())숫자가 아닌 매개 변수가 메서드에 전달되는 경우(예:
@g.BufferWithCurves('a'))NULL 은 메서드에 전달됩니다(예:
@g.BufferWithCurves(NULL)
Remarks
다음 표에서는 서로 다른 거리 값에 대해 반환된 결과를 보여 있습니다.
| 거리 값 | 유형 크기 | 반환되는 공간 유형 |
|---|---|---|
| 거리 < 0 | 0 또는 1 | 빈 GeometryCollection 인스턴스 |
| 거리 < 0 | 2 이상 | 음수 버퍼가 있는 CurvePolygon 또는 GeometryCollection 인스턴스입니다. 참고: 음수 버퍼는 빈 GeometryCollection을 만들 수 있습니다. |
| 거리 = 0 | 모든 차원 | 호출하는 geography 인스턴스의 복사본 |
| 거리 > 0 | 모든 차원 | CurvePolygon 또는 GeometryCollection 인스턴스 |
Note
거리가 float이므로 매우 작은 값은 0으로 계산될 수 있습니다. 이 경우 호출 geography 인스턴스의 복사본이 반환됩니다.
문자열 매개 변수가
Examples
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이 발생합니다.