Megosztás a következőn keresztül:


BufferWithCurves (geometriai adattípus)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Olyan geometriai példányt ad vissza, amely azoknak a pontoknak a készletét jelöli, amelyek távolsága a hívó geometriapéldánytól kisebb vagy egyenlő a távolságparaméternél .

Syntax

.BufferWithCurves ( distance )  

Arguments

távolság
A puffert alkotó pontok maximális távolságát jelző lebegtetés a geometriai példánytól.

Visszatérési típusok

SQL Server visszatérési típusa: geometria

CLR visszatérési típus: SqlGeometry

Exceptions

Az alábbi feltételek argumentumexceptionet eredményeznek.

  • Nincs paraméter átadva a metódusnak, például @g.BufferWithCurves()

  • A metódus nem numerikus paramétert ad át, például @g.BufferWithCurves('a')

  • A null értéket adjuk át a metódusnak, például @g.BufferWithCurves(NULL)

Remarks

Az alábbi ábrán egy, a metódus által visszaadott geometriai példány látható.

A módszer által visszaadott geometriai példány példáját bemutató diagram.

Az alábbi táblázat a különböző távolságértékekhez visszaadott eredményeket mutatja.

távolság értéke Típusméretek Térbeli típus visszaadva
távolság < 0 Nulla vagy Egy Üres GeometryCollection-példány
távolság < 0 Kettő vagy több CurvePolygon vagy GeometryCollection-példány negatív pufferrel. Jegyzet: A negatív puffer üres GeometryCollectiont hozhat létre
távolság = 0 Minden dimenzió Az invokáló geometriapéldány másolata
távolság > 0 Minden dimenzió CurvePolygon vagy GeometryCollection példány

Note

Mivel a távolságlebegőpontos, egy nagyon kis érték nullával egyenlő lehet a számításokban. Ha ez történik, a hívó geometriapéldány egy példányát adja vissza a függvény. Lásd : lebegőpontos és valós (Transact-SQL).

A negatív puffer eltávolítja a geometria határának adott távolságában lévő összes pontot. Az alábbi ábrán egy negatív puffer látható a kör világosabb árnyalatú területeként. A pontozott vonal az eredeti sokszög határa, a folytonos vonal pedig az eredményül kapott sokszög határa.

Ha egy sztringparamétert ad át a metódusnak, akkor a rendszer lebegőpontossá alakítja, vagy egy ArgumentException.

Examples

A. A BufferWithCurves() meghívása 0 paraméterértékkel < egy dimenziós geometriapéldányon

Az alábbi példa egy üres GeometryCollection példányt ad vissza:

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

B. BufferWithCurves() meghívása 0 paraméterértékkel < egy kétdimenziós geometriapéldányon

Az alábbi példa egy CurvePolygon negatív pufferrel rendelkező példányt ad vissza:

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

C. A BufferWithCurves() meghívása egy 0 paraméterértékkel < , amely üres GeometryCollection értéket ad vissza

Az alábbi példa azt mutatja be, hogy mi történik, ha a távolsági paraméter értéke -2:

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

Ez a SELECT utasítás visszaadja GEOMETRYCOLLECTION EMPTY

D. BufferWithCurves() meghívása paraméterértékkel = 0

Az alábbi példa a hívó geometriapéldány másolatát adja vissza:

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

E. A BufferWithCurves() meghívása nem nulla paraméterértékkel, amely rendkívül kicsi

Az alábbi példa a hívó geometriapéldány egy példányát is visszaadja:

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

F. BufferWithCurves() meghívása 0 paraméterértékkel >

Az alábbi példa egy példányt CurvePolygon ad vissza:

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

G. Érvényes sztringparaméter átadása

Az alábbi példa ugyanazt CurvePolygon a példányt adja vissza, mint korábban, de egy sztringparamétert ad át a metódusnak:

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

H. Érvénytelen sztringparaméter átadása

Az alábbi példa hibát jelez:

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

Vegye figyelembe, hogy az előző két példa egy sztringkonstanst adott át a BufferWithCurves() metódusnak. Az első példa azért működik, mert a sztringkonstans numerikus értékké alakítható. A második példa azonban egy ArgumentException.

I. BufferWithCurves() hívása MultiPoint-példányon

Az alábbi példa két GeometryCollection példányt és egy példányt CurvePolygon ad vissza:

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

Az első két SELECT utasítás egy példányt GeometryCollection ad vissza, mert a paraméter távolsága kisebb vagy egyenlő, mint 1/2 a két pont (1 1) és (1 4) közötti távolság. A harmadik SELECT utasítás egy példányt CurvePolygon ad vissza, mert a két pont (1 1) és (1 4) pufferelt példányai átfedésben vannak.

Lásd még:

Kiterjesztett módszerek geometriai példányokon