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 wystąpienie geometrii reprezentujące zestaw wszystkich punktów, których odległość od wywołania wystąpienia geometrii jest mniejsza lub równa parametrowi odległości .
Syntax
.BufferWithCurves ( distance )
Arguments
odległość
Jest zmiennoprzecinkiem wskazującym maksymalną odległość, jaką punkty tworzące bufor mogą pochodzić z wystąpienia geometrii .
Typy zwracane
Zwracany typ programu SQL Server: geometria
Typ zwracania CLR: SqlGeometry
Exceptions
Poniższe kryteria spowodują zgłoszenie argumentuException.
Do metody nie jest przekazywany żaden parametr, na przykład
@g.BufferWithCurves()Parametr nieliczbowy jest przekazywany do metody, takiej jak
@g.BufferWithCurves('a')Wartość NULL jest przekazywana do metody, takiej jak
@g.BufferWithCurves(NULL)
Remarks
Poniższa ilustracja przedstawia przykład wystąpienia geometrii zwróconego przez tę metodę.
W poniższej tabeli przedstawiono wyniki zwracane dla różnych wartości odległości.
| Wartość odległości | Wymiary typu | Zwracany typ przestrzenny |
|---|---|---|
| odległość < 0 | Zero lub jeden | Puste wystąpienie GeometryCollection |
| odległość < 0 | Co najmniej dwa | Wystąpienie CurvePolygon lub GeometryCollection z buforem ujemnym. Nuta: Bufor ujemny może utworzyć pusty obiekt GeometryCollection |
| odległość = 0 | Wszystkie wymiary | Kopia wywoływania wystąpienia geometrii |
| odległość > 0 | Wszystkie wymiary | Wystąpienie CurvePolygon lub GeometryCollection |
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 float i real (Transact-SQL).
Bufor ujemny usuwa wszystkie punkty ujęte w daną odległość granicy geometrii. Poniższa ilustracja przedstawia bufor ujemny jako jaśniejszy obszar okręgu. Linia kropkowana jest granicą oryginalnego wielokąta, a linia ciągła jest granicą wynikowego wielokąta.
Jeśli parametr ciągu zostanie przekazany do metody, zostanie on przekonwertowany na zmiennoprzecinkowy lub zgłosi wartość ArgumentException.
Examples
A. Wywoływanie metody BufferWithCurves() z wartością < parametru 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.BufferWithCurves(-1).ToString();
B. Wywoływanie metody BufferWithCurves() z wartością < parametru 0 w wystąpieniu geometrii dwuwymiarowej
Poniższy przykład zwraca CurvePolygon wystąpienie z buforem ujemnym:
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.BufferWithCurves(-1).ToString()
C. Wywoływanie metody BufferWithCurves() z wartością parametru 0 zwracającą pustą wartość < GeometryCollection
W poniższym przykładzie pokazano, co się dzieje, gdy parametr odległości jest równy -2:
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.BufferWithCurves(-2).ToString();
Ta instrukcja SELECT zwraca GEOMETRYCOLLECTION EMPTY
D. Wywoływanie funkcji BufferWithCurves() z wartością parametru = 0
Poniższy przykład zwraca kopię wystąpienia geometrii wywołującej:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves(0).ToString();
E. Wywoływanie metody BufferWithCurves() z wartością parametru innego niż zero, która jest bardzo mała
Poniższy przykład zwraca również kopię wystąpienia geometrii wywołującej:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
DECLARE @distance float = 1e-20;
SELECT @g.BufferWithCurves(@distance).ToString();
F. Wywoływanie funkcji BufferWithCurves() z wartością > parametru 0
Poniższy przykład zwraca CurvePolygon wystąpienie:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves(2).ToString();
G. Przekazywanie prawidłowego parametru ciągu
Poniższy przykład zwraca to samo CurvePolygon wystąpienie, jak wspomniano wcześniej, ale parametr ciągu jest przekazywany do metody:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves('2').ToString();
H. Przekazywanie nieprawidłowego parametru ciągu
W poniższym przykładzie zostanie zgłoszony błąd:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'
SELECT @g.BufferWithCurves('a').ToString();
Zwróć uwagę, że w poprzednich dwóch przykładach do metody przekazano literał BufferWithCurves() ciągu. 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 buforuWithCurves() w wystąpieniu MultiPoint
Poniższy przykład zwraca dwa GeometryCollection wystąpienia i jedno CurvePolygon wystąpienie:
DECLARE @g geometry = 'MULTIPOINT((1 1),(1 4))';
SELECT @g.BufferWithCurves(1).ToString();
SELECT @g.BufferWithCurves(1.5).ToString();
SELECT @g.BufferWithCurves(1.6).ToString();
Pierwsze dwie instrukcje SELECT zwracają GeometryCollection 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 CurvePolygon wystąpienie, ponieważ buforowane wystąpienia dwóch punktów (1 1) i (1 4) nakładają się na siebie.