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


STBuffer (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 objektumot ad vissza, amely azoknak a pontoknak az egysége, amelyek mértani példánytól való távolsága kisebb vagy egyenlő egy megadott értéknél.

Syntax

  
.STBuffer ( distance )  

Arguments

távolság
A lebegőpontos (a .NET-keretrendszerben dupla ) típusú érték, amely megadja a puffer kiszámításához használandó geometriai példánytól való távolságot.

Visszatérési típusok

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

CLR visszatérési típus: SqlGeometry

Remarks

STBuffer() olyan puffert számít ki, mint a BufferWithTolerance, a tűrés = távolság * .001 és a relatív = hamis érték megadásával.

Ha a távolság> 0, akkor a függvény egy polygon vagy MultiPolygon példányt ad vissza.

Note

Mivel a távolság lebegő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ánya lesz visszaadva. Lásd : lebegőpontos és valós (Transact-SQL)

Ha a távolság = 0, akkor a hívó geometriapéldány másolata lesz visszaadva.

Ha a távolság< 0, akkor

  • üres GeometryCollection-példányt ad vissza a rendszer, ha a példány mérete 0 vagy 1.

  • negatív puffert ad vissza, ha a példány mérete 2 vagy több.

    Note

    A negatív puffer üres GeometryCollection-példányt is létrehozhat.

A negatív puffer eltávolítja a geometria határának adott távolságában lévő összes pontot.

Az elméleti és a számított puffer közötti hiba a max(tolerancia, mértékek * 1.E-7), ahol a tolerancia = távolság * .001. A kiterjedésekkel kapcsolatos további információkért lásd a geometria adattípusának metódusreferenciáit.

Examples

A. STBuffer() meghívása parameter_value < 0-val egydimenzió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.STBuffer(-1).ToString();

B. STBuffer() meghívása a parameter_value < 0-val egy sokszögpéldányon

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

 DECLARE @g geometry = 'POLYGON((1 1, 1 5, 5 5, 5 1, 1 1))'; 
 SELECT @g.STBuffer(-1).ToString();

C. STBuffer() meghívása parameter_value < 0-val egy CurvePolygon-példányon

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

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

Note

A Polygon rendszer egy példány helyett egy példányt CurvePolygon ad vissza. Példány CurvePolygon visszaadásához lásd: BufferWithCurves (geometriai adattípus)

D. Az STBuffer() meghívása negatív paraméterértékkel, amely üres példányt ad vissza

Az alábbi példa azt mutatja be, hogy mi történik, ha a távolsági paraméter az előző példához -2 egyenlő.

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

Ez a SELECT utasítás egy GEOMETRYCOLLECTION EMPTY.

E. STBuffer() meghívása parameter_value = 0-val

Az alábbi példa a hívó geometry példány egy példányát adja vissza:

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

F. Az STBuffer() meghívása nem nulla paraméterértékkel, amely rendkívül kicsi

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

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

G. STBuffer() hívása parameter_value > 0-val

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

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

H. STBuffer() meghívása sztringparaméter-értékkel

Az alábbi példa ugyanazt Polygon 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.STBuffer('2').ToString();

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

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

Note

Az előző két példa egy sztringkonstanst adott át a STBuffer(). 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. STBuffer() meghívása MultiPoint-példányon

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

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

Az első két SELECT utasítás egy példányt MultiPolygon 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 Polygon ad vissza, mert a két pont (1 1) és (1 4) pufferelt példányai átfedésben vannak.

Lásd még:

BufferWithTolerance (geometriai adattípus)
geometriai példányok OGC-metódusai