Udostępnij za pomocą


STBuffer (geometria typu danych)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Zwraca obiekt geometryczny reprezentujący związek wszystkich punktów, których odległość od wystąpienia geometrii jest mniejsza lub równa określonej wartości.

Syntax

  
.STBuffer ( distance )  

Arguments

odległość
Jest wartością typu zmiennoprzecinkowego (dwukrotnie w programie .NET Framework) określającą odległość od wystąpienia geometrii, dla którego ma być obliczany bufor.

Typy zwracane

Zwracany typ programu SQL Server: geometria

Typ zwracania CLR: SqlGeometry

Remarks

STBuffer()Oblicza bufor, taki jak BufferWithTolerance, określając tolerancję = odległość * .001 i względne = .

Gdy zostanie zwrócona odległość > 0, zwracane jest wystąpienie Wielokąta lub MultiPolygonu.

Note

Ponieważ odległość jest zmiennoprzecinkowa, bardzo mała wartość może równa się zero w obliczeniach. W takim przypadku zostanie zwrócona kopia wywołania wystąpienia geometrii . Zobacz zmiennoprzecinkowe i rzeczywiste (Transact-SQL)

Gdy odległość = 0, zwracana jest kopia wywołania wystąpienia geometrii .

W przypadku odległości< 0, a następnie

  • Puste wystąpienie GeometryCollection jest zwracane, gdy wymiary wystąpienia to 0 lub 1.

  • bufor ujemny jest zwracany, gdy wymiary wystąpienia są co najmniej 2.

    Note

    Bufor ujemny może również utworzyć puste wystąpienie GeometryCollection .

Bufor ujemny usuwa wszystkie punkty ujęte w daną odległość granicy geometrii.

Błąd między buforem teoretycznym i obliczonym jest max(tolerancja, zakresy * 1.E-7), gdzie tolerancja = odległość * .001. Aby uzyskać więcej informacji na temat zakresów, zobacz geometryczna dokumentacja metody typów danych.

Examples

A. Wywoływanie metody STBuffer() z parameter_value < 0 w wystąpieniu geometrii jednowymiarowej

Poniższy przykład zwraca puste GeometryCollection wystąpienie:

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

B. Wywoływanie klasy STBuffer() z parameter_value < 0 w wystąpieniu wielokąta

Poniższy przykład zwraca Polygon wystąpienie z buforem ujemnym:

 DECLARE @g geometry = 'POLYGON((1 1, 1 5, 5 5, 5 1, 1 1))'; 
 SELECT @g.STBuffer(-1).ToString();

C. Wywoływanie metody STBuffer() z parameter_value < 0 w wystąpieniu CurvePolygon

Poniższy przykład zwraca Polygon wystąpienie z ujemnym buforem CurvePolygon z wystąpienia:

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.STBuffer(-1).ToString();

Note

Wystąpienie Polygon jest zwracane zamiast CurvePolygon wystąpienia. Aby zwrócić CurvePolygon wystąpienie, zobacz BufferWithCurves (geometryczny typ danych)

D. Wywoływanie klasy STBuffer() z ujemną wartością parametru zwracającą puste wystąpienie

W poniższym przykładzie pokazano, co się dzieje, gdy parametr odległości jest równy -2 dla poprzedniego przykładu.

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.STBuffer(-2).ToString();

Ta instrukcja SELECT zwraca wartość GEOMETRYCOLLECTION EMPTY.

E. Wywoływanie metody STBuffer() przy użyciu parameter_value = 0

Poniższy przykład zwraca kopię wystąpienia wywołującego geometry :

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

F. Wywoływanie metody STBuffer() z niezerową wartością parametru, która jest bardzo mała

Poniższy przykład zwraca również kopię wystąpienia wywołującego geometry :

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

G. Wywoływanie funkcji STBuffer() przy użyciu parameter_value > 0

Poniższy przykład zwraca Polygon wystąpienie:

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

H. Wywoływanie metody STBuffer() z wartością parametru ciągu

Poniższy przykład zwraca to samo Polygon wystąpienie, jak wspomniano wcześniej, ale parametr ciągu jest przekazywany do metody:

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

W poniższym przykładzie zostanie zgłoszony błąd:

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

Note

W poprzednich dwóch przykładach przekazano literał ciągu do ciągu STBuffer(). Pierwszy przykład działa, ponieważ literał ciągu można przekonwertować na wartość liczbową. Jednak drugi przykład zgłasza błąd ArgumentException.

I. Wywoływanie klasy STBuffer() w wystąpieniu MultiPoint

Poniższy przykład zwraca dwa MultiPolygon wystąpienia i jedno Polygon wystąpienie:

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

Pierwsze dwie instrukcje SELECT zwracają MultiPolygon wystąpienie, ponieważ odległość parametru jest mniejsza lub równa 1/2 odległości między dwoma punktami (1 1) i (1 4). Trzecia instrukcja SELECT zwraca Polygon wystąpienie, ponieważ buforowane wystąpienia dwóch punktów (1 1) i (1 4) nakładają się na siebie.

Zobacz też

BufferWithTolerance (typ danych geometrycznych)
metody OGC w wystąpieniach geometrycznych