Sdílet prostřednictvím


BufferWithCurves (datový typ geometrie)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Vrátí instanci geometrie , která představuje množinu všech bodů, jejichž vzdálenost od volající instance geometrie je menší nebo rovna parametru vzdálenosti .

Syntax

.BufferWithCurves ( distance )  

Arguments

vzdálenost
Je plovoucí hodnota označující maximální vzdálenost, kterou body tvořící vyrovnávací paměť mohou být z instance geometrie .

Návratové typy

Návratový typ SQL Serveru: geometrie

Návratový typ CLR: SqlGeometry

Exceptions

Následující kritéria vyvolá výjimku ArgumentException.

  • Metodě se nepředá žádný parametr, například @g.BufferWithCurves()

  • Metodě se předá nečíselný parametr, například @g.BufferWithCurves('a')

  • Metodě se předá hodnota NULL, například@g.BufferWithCurves(NULL)

Remarks

Následující obrázek znázorňuje příklad instance geometrie vrácené touto metodou.

Diagram znázorňující příklad instance geometrie vrácené touto metodou

Následující tabulka ukazuje výsledky vrácené pro různé hodnoty vzdálenosti.

Hodnota vzdálenosti Rozměry typu Vrácený prostorový typ
vzdálenost < 0 Nula nebo jedna Prázdná instance GeometryCollection
vzdálenost < 0 Dvě nebo více A CurvePolygon nebo GeometryCollection instance s negativní vyrovnávací pamětí. Poznámka: Záporná vyrovnávací paměť může vytvořit prázdnou geometryCollection.
vzdálenost = 0 Všechny rozměry Kopie vyvolání instance geometrie
vzdálenost > 0 Všechny rozměry Instance CurvePolygon nebo GeometryCollection

Note

Vzhledem k tomu, že vzdálenost je plovoucí, může být ve výpočtech velmi malá hodnota rovna nule. Pokud k tomu dojde, vrátí se kopie volající instance geometrie . Viz float a real (Transact-SQL).

Záporná vyrovnávací paměť odebere všechny body uzavřené v dané vzdálenosti hranice geometrie. Následující obrázek znázorňuje zápornou vyrovnávací paměť jako světlejší oblast kruhu. Tečkovaná čára je hranice původního mnohoúhelníku a plná čára je hranice výsledného mnohoúhelníku.

Pokud je řetězcový parametr předán metodě, pak bude převeden na float nebo vyvolá ArgumentException.

Examples

A. Volání BufferWithCurves() s hodnotou < parametru 0 v jedné dimenzionální instanci geometrie

Následující příklad vrátí prázdnou GeometryCollection instanci:

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

B. Volání BufferWithCurves() s hodnotou < parametru 0 ve dvourozměrné instanci geometrie

Následující příklad vrátí CurvePolygon instanci se zápornou vyrovnávací pamětí:

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

C. Volání BufferWithCurves() s hodnotou < parametru 0, která vrací prázdnou GeometryCollection

Následující příklad ukazuje, co nastane, když se parametr vzdálenosti rovná -2:

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

Tento příkaz SELECT vrátí GEOMETRYCOLLECTION EMPTY

D. Volání BufferWithCurves() s hodnotou parametru = 0

Následující příklad vrátí kopii volající instance geometrie :

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

E. Volání BufferWithCurves() s nenulovou hodnotou parametru, která je extrémně malá

Následující příklad také vrátí kopii volající instance geometrie :

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

F. Volání BufferWithCurves() s hodnotou > parametru 0

Následující příklad vrátí CurvePolygon instanci:

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

G. Předání platného parametru řetězce

Následující příklad vrátí stejnou CurvePolygon instanci, jakou jsme zmínili dříve, ale řetězcový parametr se předá metodě:

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

H. Předání neplatného parametru řetězce

Následující příklad vyvolá chybu:

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

Všimněte si, že předchozí dva příklady předaly řetězcový literál metodě BufferWithCurves() . První příklad funguje, protože řetězcový literál lze převést na číselnou hodnotu. Druhý příklad však vyvolá výjimku ArgumentException.

I. Volání bufferWithCurves() v instanci MultiPointu

Následující příklad vrátí dvě GeometryCollection instance a jednu CurvePolygon instanci:

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

První dva příkazy SELECT vrací GeometryCollection instanci, protože vzdálenost parametru je menší nebo rovna 1/2 vzdálenosti mezi dvěma body (1 1) a (1 4). Třetí příkaz SELECT vrátí CurvePolygon instanci, protože se překrývají instance dvou bodů (1 1) a (1 4).

Viz také

Rozšířené metody v instancích geometrie