STBuffer(geometry 데이터 형식)

적용 대상: Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL 분석 엔드포인트

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

Syntax

  
.STBuffer ( distance )  

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

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