Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL 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