BufferWithCurves(geography 데이터 형식)
호출하는 geography 인스턴스와의 거리가 distance 매개 변수보다 작거나 같은 모든 점의 집합을 나타내는 geography 인스턴스를 반환합니다.
구문
.BufferWithCurves ( distance )
인수
- distance
버퍼를 구성하는 점과 geography 인스턴스 사이에 허용되는 최대 거리를 나타내는 float입니다.
반환 형식
SQL Server 반환 형식: geography
CLR 반환 형식: SqlGeography
예외
다음 조건에서 ArgumentException이 발생합니다.
메서드에 매개 변수가 전달되지 않는 경우(예: @g.BufferWithCurves())
숫자가 아닌 매개 변수가 메서드에 전달되는 경우(예: @g.BufferWithCurves('a'))
NULL 메서드에 전달되는 경우(예: @g.BufferWithCurves(NULL)
주의
다음 표에서는 여러 거리 값에 대해 반환되는 결과를 보여 줍니다.
거리 값 |
유형 차원 |
반환되는 공간 유형 |
---|---|---|
거리 < 0 |
0 또는 1 |
빈 GeometryCollection 인스턴스 |
거리 < 0 |
2 이상 |
음수 버퍼가 있는 CurvePolygon 또는 GeometryCollection 인스턴스
|
거리 = 0 |
모든 차원 |
호출 geography 인스턴스의 복사본 |
거리 > 0 |
모든 차원 |
CurvePolygon 또는 GeometryCollection 인스턴스 |
[!참고]
distance가 float이므로 매우 작은 값은 0으로 계산될 수 있습니다. 이 경우 호출 geography 인스턴스의 복사본이 반환됩니다.
string 매개 변수가 메서드에 전달되면 float로 변환되거나 ArgumentException이 발생합니다.
예
1.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();
2.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()
3.빈 GeometryCollection을 반환하고 매개 변수 값 < 0인 BufferWithCurves() 호출
다음 예에서는 distance 매개 변수가 -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를 반환합니다.
4.매개 변수 값 = 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();
5.매우 작고 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();
6.매개 변수 값 > 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();
7.올바른 문자열 매개 변수 전달
다음 예에서는 앞에서 설명한 것과 동일하지만 문자열 매개 변수가 메서드에 전달되는 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();
8.잘못된 문자열 매개 변수 전달
다음 예에서는 오류가 발생합니다.
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 데이터 형식)