BufferWithTolerance (datatyp för geometri)

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

Returnerar ett geometriskt objekt som representerar union av alla punktvärden vars avstånd från en geometriinstans är mindre än eller lika med ett angivet värde, vilket möjliggör en angiven tolerans.

Syntax

  
.BufferWithTolerance ( distance, tolerance, relative )  

Arguments

avstånd
Är ett flyttaluttryck som anger avståndet från den geometriinstans som bufferten ska beräknas runt.

tolerance
Är ett flyttaluttryck som anger toleransen för buffertavståndet.

Tolerans avser den maximala variationen i det ideala buffertavståndet för den returnerade linjära uppskattningen.

Det idealiska buffertavståndet för en punkt är till exempel en cirkel, men detta måste approximeras av en polygon. Ju mindre tolerans desto fler punkter kommer polygonen att ha, vilket ökar resultatets komplexitet, men minskar felet.

relative
Anger lite om toleransvärdet är relativt eller absolut. Om "TRUE" eller 1 är tolerans relativ och beräknas som produkten av toleransparametern och diametern för instansens avgränsningsruta. Om "FALSE" eller 0 är tolerans absolut och toleransvärdet är den absoluta högsta variationen i det idealiska buffertavståndet för den returnerade linjära uppskattningen.

Returtyper

SQL Server-returtyp: geometri

CLR-returtyp: SqlGeometry

Exceptions

Toleransparametern måste vara större än noll. Om tolerans<= 0 genereras en System.ArgumentOutOfRangeException .

Note

Eftersom tolerans är en flyttaltyp kan en System.Runtime.InteropServices.COMException genereras om värdet som anges för tolerans är mycket litet på grund av avrundningsproblemen med flyttalstyper.

Remarks

När avstånd> 0 returneras antingen en Polygon - eller MultiPolygon-instans .

Note

Eftersom avståndet är en flyttal kan ett extremt 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 sedan

  • 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 inom det angivna avståndet från geometriinstansens gräns.

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

Examples

I följande exempel skapas en Point instans och används BufferWithTolerance() för att få en grov buffert runt den.

DECLARE @g geometry;  
SET @g = geometry::STGeomFromText('POINT(3 3)', 0);  
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();  

Se även

STBuffer (datatyp för geometri)
Utökade metoder för geometriinstanser