다음을 통해 공유


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 데이터 형식)

관련 자료

geometry 인스턴스의 OGC 메서드