Anteckning
Å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 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