Share via


BufferWithTolerance (geometry-Datentyp)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Gibt ein geometrisches Objekt zurück, dass die Vereinigung aller Punktwerte darstellt, deren Abstand zu einer geometry -Instanz kleiner oder gleich einem angegebenen Wert ist, wobei eine angegebene Toleranz gewährt wird.

Syntax

  
.BufferWithTolerance ( distance, tolerance, relative )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

distance
Ein float -Ausdruck, der den Abstand zu der geometry -Instanz angibt, um die der Puffer berechnet werden soll.

tolerance
Ein float -Ausdruck, der die Toleranz des Pufferabstands angibt.

Toleranz verweist auf die maximale Variation im idealen Pufferabstand für die zurückgegebene lineare Näherung.

Beispielsweise kann der ideale Pufferabstand eines Punkts ein Kreis sein, dieser muss jedoch durch ein Polygon näherungsweise angegeben werden. Je geringer die Toleranz, desto mehr Punkte hat das Polygon, wodurch die Komplexität des Ergebnisses erhöht, der Fehler jedoch verringert wird.

relative
Ein bit , das angibt, ob der tolerance -Wert relativ oder absolut ist. Wenn 'TRUE' oder 1, ist die Toleranz relativ und wird als Produkt des tolerance -Parameters und des Durchmessers des umgebenden Felds der Instanz berechnet. Wenn 'FALSE' oder 0, ist die Toleranz absolut und der tolerance -Wert ist die absolute maximale Variation im idealen Pufferabstand für die zurückgegebene lineare Näherung.

Rückgabetypen

SQL Server-Rückgabetyp: geometry

CLR-Rückgabetyp: SqlGeometry

Ausnahmen

Der tolerance -Parameter muss größer als 0 sein. Wenn tolerance<= 0, wird System.ArgumentOutOfRangeException ausgelöst.

Hinweis

Da tolerance is a float ist, kann aufgrund der Rundungsprobleme mit Gleitkommatypen eine System.Runtime.InteropServices.COMException ausgelöst werden, wenn der angegebene Toleranzwert sehr klein ist.

Bemerkungen

Wenn distance> 0, wird eine Polygon- oder MultiPolygon-Instanz zurückgegeben.

Hinweis

Da der Abstand vom Typ floatist, kann ein sehr kleiner Wert in den Berechnungen mit 0 gleichgesetzt werden. In diesem Fall wird eine Kopie der aufrufenden Instanz von geometry zurückgegeben. Siehe float und real (Transact-SQL).

Wenn distance = 0 ist, wird eine Kopie der aufrufenden Instanz von geometry zurückgegeben.

Wenn distance< 0, gilt Folgendes:

  • Es wird eine leere Instanz von GeometryCollection zurückgegeben, wenn die Dimensionen der Instanz 0 oder 1 betragen.

  • Ein negativer Puffer wird zurückgegeben, wenn die Dimensionen der Instanz 2 oder mehr betragen.

    Hinweis

    Ein negativer Puffer erstellt auch möglicherweise eine leere Instanz von GeometryCollection .

Ein negativer Puffer entfernt alle Punkte innerhalb des angegebenen Abstands von der Begrenzung der geometry -Instanz.

Die Abweichung zwischen dem theoretischen und dem berechneten Puffer beträgt max(tolerance, extents * 1,E-7), wobei die Toleranz der Wert des Parameters tolerance ist. Weitere Informationen zu Erweiterungen finden Sie unter geometry-Datentyp-Methodenverweis.

Beispiele

Im folgenden Beispiel wird eine Point -Instanz erstellt und BufferWithTolerance() verwendet, um einen groben Puffer um die Instanz zu erhalten.

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

Siehe auch

STBuffer (geometry-Datentyp)
Erweiterte Methoden für geometry-Instanzen