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í 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.
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).