Dela via


STBuffer (datatyp för geometri)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Förhandsversion av Microsoft Fabric

Returnerar ett geometriskt objekt som representerar union av alla punkter vars avstånd från en geometriinstans är mindre än eller lika med ett angivet värde.

Syntax

  
.STBuffer ( distance )  

Arguments

distance
Är ett värde av typen float (dubbelt i .NET Framework) som anger avståndet från den geometriinstans som bufferten ska beräknas runt.

Return Types

SQL Server-returtyp: geometri

CLR-returtyp: SqlGeometry

Remarks

STBuffer() beräknar en buffert som BufferWithTolerance och anger tolerans = avstånd * .001 och relativ = false.

När avstånd> 0 returneras antingen en Polygon - eller MultiPolygon-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)

När avståndet = 0 returneras en kopia av den anropande geometriinstansen .

När avstånd< 0, då

  • en tom GeometryCollection-instans returneras när instansens dimensioner är 0 eller 1.

  • en negativ buffert returneras när instansens dimensioner är 2 eller fler.

    Note

    En negativ buffert kan också skapa en tom GeometryCollection-instans .

En negativ buffert tar bort alla punkter som omges av angivet avstånd från geometrins gräns.

Felet mellan den teoretiska och beräknade bufferten är max(tolerans, omfattningar * 1.E-7) där tolerans = avstånd * .001. Mer information om omfattningar finns i referens för geometridatatypmetod.

Examples

A. Anropa STBuffer() med parameter_value < 0 på en dimensionell geometriinstans

I följande exempel returneras en tom GeometryCollection instans:

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

B. Anropa STBuffer() med parameter_value < 0 på en Polygon-instans

I följande exempel returneras en Polygon instans med en negativ buffert:

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

C. Anropa STBuffer() med parameter_value < 0 på en CurvePolygon-instans

I följande exempel returneras en Polygon instans med en negativ buffert från en CurvePolygon instans:

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

Note

En Polygon instans returneras i stället för en CurvePolygon instans. Information om hur du returnerar en CurvePolygon instans finns i BufferWithCurves (datatyp för geometri)

D. Anropa STBuffer() med ett negativt parametervärde som returnerar en tom instans

I följande exempel visas vad som inträffar när avståndsparametern är lika med -2 för föregående exempel.

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

Den här SELECT-instruktionen returnerar en GEOMETRYCOLLECTION EMPTY.

E. Anropa STBuffer() med parameter_value = 0

I följande exempel returneras en kopia av den anropande geometry instansen:

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

F. Anropar STBuffer() med ett parametervärde som inte är noll och som är extremt litet

I följande exempel returneras också en kopia av den anropande geometry instansen:

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

G. Anropa STBuffer() med parameter_value > 0

I följande exempel returneras en Polygon instans:

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

H. Anropa STBuffer() med ett strängparametervärde

I följande exempel returneras samma Polygon instans som tidigare nämnts, men en strängparameter skickas till metoden:

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

Följande exempel utlöser ett fel:

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

Note

De föregående två exemplen STBuffer()skickade en strängliteral till . Det första exemplet fungerar eftersom strängliteralen kan konverteras till ett numeriskt värde. Det andra exemplet genererar dock en ArgumentException.

I. Anropa STBuffer() på en MultiPoint-instans

I följande exempel returneras två MultiPolygon instanser och en Polygon instans:

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

De två första SELECT-uttrycken returnerar en MultiPolygon 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 Polygon instans eftersom de buffrade instanserna av de två punkterna (1 1) och (1 4) överlappar varandra.

See Also

BufferWithTolerance (datatyp för geometri)
OGC-metoder för geometriinstanser