Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Returnerar en geometriinstans som representerar uppsättningen med alla punkter vars avstånd från den anropande geometriinstansen är mindre än eller lika med avståndsparametern.
Syntax
.BufferWithCurves ( distance )
Arguments
avstånd
Är en flottör som anger det maximala avståndet som punkter som bildar bufferten kan vara från geometriinstansen .
Returtyper
SQL Server-returtyp: geometri
CLR-returtyp: SqlGeometry
Exceptions
Följande villkor genererar ett ArgumentException.
Ingen parameter skickas till metoden, till exempel
@g.BufferWithCurves()En icke-numerisk parameter skickas till metoden, till exempel
@g.BufferWithCurves('a')NULL skickas till metoden, till exempel
@g.BufferWithCurves(NULL)
Remarks
Följande bild visar ett exempel på en geometriinstans som returneras av den här metoden.
I följande tabell visas de resultat som returneras för olika avståndsvärden.
| avståndsvärde | Typdimensioner | Rumslig typ returnerad |
|---|---|---|
| avstånd < 0 | Noll eller ett | Tom GeometryCollection-instans |
| avstånd < 0 | Två eller fler | En CurvePolygon - eller GeometryCollection-instans med en negativ buffert. Not: En negativ buffert kan skapa en tom GeometryCollection |
| Avstånd = 0 | Alla dimensioner | Kopia av den anropande geometriinstansen |
| avstånd > 0 | Alla dimensioner | CurvePolygon- eller GeometryCollection-instans |
Note
Eftersom avståndet är en flyttal kan ett mycket litet värde motsvara noll i beräkningarna. När detta inträffar returneras en kopia av den anropande geometriinstansen . Se float och real (Transact-SQL).
En negativ buffert tar bort alla punkter som omges av det angivna avståndet för geometrins gräns. Följande bild visar en negativ buffert som cirkelns ljusare skuggade område. Den streckade linjen är gränsen för den ursprungliga polygonen och den fasta linjen är gränsen för den resulterande polygonen.
Om en strängparameter skickas till metoden konverteras den till en flyttal eller så genererar den en ArgumentException.
Examples
A. Anropa BufferWithCurves() med parametervärdet < 0 på en dimensionell geometriinstans
I följande exempel returneras en tom GeometryCollection instans:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves(-1).ToString();
B. Anropa BufferWithCurves() med parametervärdet < 0 på en tvådimensionell geometriinstans
I följande exempel returneras en CurvePolygon instans med en negativ buffert:
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.BufferWithCurves(-1).ToString()
C. Anropa BufferWithCurves() med parametervärdet < 0 som returnerar en tom GeometryCollection
I följande exempel visas vad som händer när avståndsparametern är lika med -2:
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.BufferWithCurves(-2).ToString();
Den här SELECT-instruktionen returnerar GEOMETRYCOLLECTION EMPTY
D. Anropa BufferWithCurves() med parametervärdet = 0
I följande exempel returneras en kopia av den anropande geometriinstansen :
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves(0).ToString();
E. Anropar BufferWithCurves() med ett parametervärde som inte är noll och som är extremt litet
I följande exempel returneras också en kopia av den anropande geometriinstansen :
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
DECLARE @distance float = 1e-20;
SELECT @g.BufferWithCurves(@distance).ToString();
F. Anropa BufferWithCurves() med parametervärdet > 0
I följande exempel returneras en CurvePolygon instans:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves(2).ToString();
G. Skicka en giltig strängparameter
I följande exempel returneras samma CurvePolygon instans som tidigare nämnts, men en strängparameter skickas till metoden:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.BufferWithCurves('2').ToString();
H. Skicka en ogiltig strängparameter
Följande exempel utlöser ett fel:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'
SELECT @g.BufferWithCurves('a').ToString();
Observera att de föregående två exemplen skickade en strängliteral till BufferWithCurves() metoden. Det första exemplet fungerar eftersom strängliteralen kan konverteras till ett numeriskt värde. Det andra exemplet genererar dock en ArgumentException.
I. Anropa BufferWithCurves() på MultiPoint-instans
I följande exempel returneras två GeometryCollection instanser och en CurvePolygon instans:
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();
De två första SELECT-uttrycken returnerar en GeometryCollection instans eftersom parameteravståndet är mindre än eller lika med 1/2 avståndet mellan de två punkterna (1 1) och (1 4). Den tredje SELECT-instruktionen returnerar en CurvePolygon instans eftersom de buffrade instanserna av de två punkterna (1 1) och (1 4) överlappar varandra.