STBuffer(geometry 데이터 형식)
geometry 인스턴스와의 거리가 지정된 값보다 작거나 같은 모든 요소의 합집합을 나타내는 기하학적 개체를 반환합니다.
구문
.STBuffer ( distance )
인수
- distance
해당 버퍼를 계산할 geometry 인스턴스와의 거리를 지정하는 float(.NET Framework의 경우 double) 형식의 값입니다.
반환 형식
SQL Server 반환 형식: geometry
CLR 반환 형식: SqlGeometry
주의
STBuffer()는 tolerance = distance * .001, relative = false로 지정하여 BufferWithTolerance와 동일한 방식으로 버퍼를 계산합니다.
distance > 0이면 Polygon 또는 MultiPolygon 인스턴스가 반환됩니다.
[!참고]
거리가 float이므로 매우 작은 값은 0으로 계산될 수 있습니다. 이 경우 호출 geometry 인스턴스의 복사본이 반환됩니다. float 및 real(Transact-SQL)를 참조하십시오.
distance = 0이면 호출 geometry 인스턴스의 복사본이 반환됩니다.
distance < 0인 경우
인스턴스의 차원이 0 또는 1이면 빈 GeometryCollection 인스턴스가 반환됩니다.
인스턴스의 차원이 2 이상이면 음수 버퍼가 반환됩니다.
[!참고]
버퍼가 음수이면 빈 GeometryCollection 인스턴스가 생성될 수도 있습니다.
버퍼가 음수이면 geometry 경계에서 지정된 거리 내에 있는 모든 요소가 제거됩니다.
이론상의 버퍼와 계산된 버퍼 간의 오차는 max(tolerance, extents * 1.E-7)이며, 여기서 tolerance = distance * .001입니다. extents에 대한 자세한 내용은 geometry 데이터 형식 메서드 참조를 참조하십시오.
예
1.1차원 geometry 인스턴스에서 parameter_value < 0을 사용하여 STBuffer() 호출
다음 예에서는 빈 GeometryCollection 인스턴스를 반환합니다.
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer(-1).ToString();
2.Polygon 인스턴스에서 parameter_value < 0을 사용하여 STBuffer() 호출
다음 예에서는 버퍼가 음수인 Polygon 인스턴스를 반환합니다.
DECLARE @g geometry = 'POLYGON((1 1, 1 5, 5 5, 5 1, 1 1))';
SELECT @g.STBuffer(-1).ToString();
3.CurvePolygon 인스턴스에서 parameter_value < 0을 사용하여 STBuffer() 호출
다음 예에서는 CurvePolygon 인스턴스에서 버퍼가 음수인 Polygon 인스턴스를 반환합니다.
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.STBuffer(-1).ToString();
[!참고]
Polygon 인스턴스는 CurvePolygon 인스턴스 대신 반환됩니다. CurvePolygon 인스턴스를 반환하려면 BufferWithCurves(geometry 데이터 형식)를 참조하십시오.
4.빈 인스턴스를 반환하는 음수 매개 변수 값을 사용하여 STBuffer() 호출
다음 예에서는 이전 예에서 distance 매개 변수가 -2인 경우에 발생하는 결과를 보여 줍니다.
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.STBuffer(-2).ToString();
이 SELECT 문은 GEOMETRYCOLLECTION EMPTY.를 반환합니다.
5.parameter_value = 0을 사용하여 STBuffer() 호출
다음 예에서는 호출 geometry 인스턴스의 복사본을 반환합니다.
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer(0).ToString();
6.0이 아닌 매우 작은 매개 변수 값을 사용하여 STBuffer() 호출
다음 예에서도 호출 geometry 인스턴스의 복사본을 반환합니다.
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
DECLARE @distance float = 1e-20;
SELECT @g.STBuffer(@distance).ToString();
7.parameter_value > 0을 사용하여 STBuffer() 호출
다음 예에서는 Polygon 인스턴스를 반환합니다.
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer(2).ToString();
8.문자열 매개 변수 값을 사용하여 STBuffer() 호출
다음 예에서는 앞에서 설명한 것과 동일하지만 문자열 매개 변수가 메서드에 전달되는 Polygon 인스턴스를 반환합니다.
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer('2').ToString();
다음 예에서는 오류가 발생합니다.
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer('a').ToString();
[!참고]
위의 두 예에서 STBuffer()에 문자열 리터럴을 전달한 경우. 첫 번째 예는 문자열 리터럴을 숫자 값으로 변환할 수 있으므로 정상적으로 작동하지만, 두 번째 예에서는 ArgumentException이 발생합니다.
9.MultiPoint 인스턴스에서 STBuffer() 호출
다음 예에서는 MultiPolygon 인스턴스 2개와 Polygon 인스턴스 1개를 반환합니다.
DECLARE @g geometry = 'MULTIPOINT((1 1),(1 4))';
SELECT @g.STBuffer(1).ToString();
SELECT @g.STBuffer(1.5).ToString();
SELECT @g.STBuffer(1.6).ToString();
처음 두 SELECT 문은 distance 매개 변수가 두 요소 (1 1)과 (1 4) 사이 거리의 1/2보다 작거나 같기 때문에 MultiPolygon 인스턴스를 반환합니다. 세 번째 SELECT 문은 두 요소 (1 1)과 (1 4)의 버퍼링된 인스턴스가 겹치기 때문에 Polygon 인스턴스를 반환합니다.
참고 항목
참조
BufferWithTolerance(geometry 데이터 형식)