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
합니다.