Udostępnij za pomocą


BufferWithCurves (geometryczny typ danych)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza 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ę.

Diagram przedstawiający 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.

Zobacz też

Metody rozszerzone w wystąpieniach geometrycznych