Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza 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