BufferWithCurves (datatyp för geometri)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-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.

Diagram som 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.

Se även

Utökade metoder för geometriinstanser