다음을 통해 공유


STBuffer(geometry 데이터 형식)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

기하 도형 인스턴스와의 거리가 지정된 값보다 작거나 같은 모든 점의 합합을 나타내는 기하학적 개체를 반환합니다.

구문

  
.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으로 계산될 수 있습니다. 이 경우 호출 기하 도형 인스턴스의 복사본이 반환됩니다. float 및 real(Transact-SQL)을 참조하세요.

distance = 0이면, 호출 geometry 인스턴스의 복사본이 반환됩니다.

distance< 0이면

  • 인스턴스의 크기가 0 또는 1이면 빈 GeometryCollection 인스턴스가 반환됩니다.

  • 인스턴스의 차원이 2 이상이면 음수 버퍼가 반환됩니다.

    참고 항목

    버퍼가 음수이면 빈 GeometryCollection 인스턴스가 생성될 수도 있습니다.

음수 버퍼는 기하 도형 경계의 지정된 거리에 포함된 모든 점을 제거합니다.

이론적 버퍼와 계산된 버퍼 간의 오차는 max(tolerance, extents * 1.E-7)입니다. 여기서 tolerance = distance * .001입니다. 익스텐트에 대한 자세한 내용은 geometry 데이터 형식 메서드 참조를 참조하세요.

예제

A. 1차원 geometry 인스턴스에서 parameter_value < 0을 사용하여 STBuffer() 호출

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

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(-1).ToString();

B. 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();

C. CurvePolygon 인스턴스에서 parameter_value < 0을 사용하여 STBuffer() 호출

다음 예제에서는 인스턴스에서 음수 버퍼가 있는 인스턴스를 반환 Polygon 합니다 CurvePolygon .

 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 데이터 형식)를 참조하세요.

D. 빈 인스턴스를 반환하는 음수 매개 변수 값을 사용하여 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.

E. parameter_value = 0으로 STBuffer() 호출

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

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(0).ToString();

F. 0이 아닌 매우 작은 매개 변수 값을 사용하여 STBuffer() 호출

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

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';  
 DECLARE @distance float = 1e-20;  
 SELECT @g.STBuffer(@distance).ToString();

G. parameter_value > 0을 사용하여 STBuffer() 호출

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

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer(2).ToString();

H. 문자열 매개 변수 값을 사용하여 STBuffer() 호출

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

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer('2').ToString();

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

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.STBuffer('a').ToString();

참고 항목

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

9\. MultiPoint 인스턴스에서 STBuffer() 호출

다음 예제에서는 두 개의 MultiPolygon 인스턴스와 하나의 Polygon 인스턴스를 반환합니다.

 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 메서드