Sdílet prostřednictvím


STBuffer (datový typ geometrie)

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

Vrátí geometrický objekt, který představuje sjednocení všech bodů, jejichž vzdálenost od instance geometrie je menší nebo rovna zadané hodnotě.

Syntax

  
.STBuffer ( distance )  

Arguments

vzdálenost
Je hodnota typu float (double v rozhraní .NET Framework) určující vzdálenost od instance geometrie, kolem které se má vypočítat vyrovnávací paměť.

Návratové typy

Návratový typ SQL Serveru: geometrie

Návratový typ CLR: SqlGeometry

Remarks

STBuffer() vypočítá vyrovnávací paměť, jako je BufferWithTolerance, určení tolerance = vzdálenost * .001 a relativní = false.

Při vzdálenosti> 0 je vrácena instance Polygon nebo MultiPolygon .

Note

Vzhledem k tomu, že vzdálenost je plovoucí, může být ve výpočtech velmi malá hodnota rovna nule. V takovém případě se vrátí kopie volající instance geometrie . Zobrazit plovoucí a reálné (Transact-SQL)

Pokud vzdálenost = 0, vrátí se kopie volající instance geometrie .

Když vzdálenost< 0, pak

  • Prázdná instance GeometryCollection je vrácena, když dimenze instance jsou 0 nebo 1.

  • Pokud jsou dimenze instance 2 nebo více, vrátí se záporná vyrovnávací paměť.

    Note

    Záporná vyrovnávací paměť může také vytvořit prázdnou instanci GeometryCollection .

Záporná vyrovnávací paměť odebere všechny body uzavřené v dané vzdálenosti hranice geometrie.

Chyba mezi teoretickou a vypočítanou vyrovnávací pamětí je max(tolerance, rozsahy * 1.E-7), kde tolerance = vzdálenost * .001. Další informace o rozsahech naleznete v tématu Geometry Data Type Method Reference.

Examples

A. Volání funkce STBuffer() s parameter_value < 0 na 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.STBuffer(-1).ToString();

B. Volání funkce STBuffer() s parameter_value < 0 v instanci Polygonu

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

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

C. Volání metody STBuffer() s parameter_value < 0 v instanci CurvePolygon

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

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

Note

Místo Polygon instance se vrátí CurvePolygon instance. Pokud chcete vrátit CurvePolygon instanci, přečtěte si téma BufferWithCurves (datový typ geometrie)

D. Volání funkce STBuffer() se zápornou hodnotou parametru, která vrací prázdnou instanci

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

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

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

E. Volání funkce STBuffer() s parameter_value = 0

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

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

F. Volání funkce STBuffer() s nenulovou hodnotou parametru, která je extrémně malá

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

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

G. Volání funkce STBuffer() s parameter_value > 0

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

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

H. Volání funkce STBuffer() s hodnotou řetězcového parametru

Následující příklad vrátí stejnou Polygon 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.STBuffer('2').ToString();

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

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

Note

Předchozí dva příklady předaly řetězcový literál .STBuffer() 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í funkce STBuffer() v instanci MultiPointu

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

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

První dva příkazy SELECT vrací MultiPolygon 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í Polygon instanci, protože se překrývají instance dvou bodů (1 1) a (1 4).

Viz také

BufferWithTolerance (datový typ geometrie)
metody OGC v instancích geometrie