BufferWithTolerance (geometry-Datentyp)
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 )
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 ist, wird eine System.ArgumentOutOfRangeException ausgelöst.
![]() |
---|
Da tolerance vom Typ float ist, kann aufgrund der Rundungsprobleme mit Gleitkommatypen eine System.Runtime.InteropServices.COMException ausgelöst werden, wenn der angegebene Toleranzwert sehr klein ist. |
Hinweise
Wenn distance > 0 ist, wird eine Instanz von Polygon oder eine Instanz von MultiPolygon zurückgegeben.
![]() |
---|
Da der Abstand vom Typ float ist, 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 ist, 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 berechnetem Puffer ist max(tolerance, extents * 1.E-7), wobei tolerance der Wert des tolerance-Parameters ist. Weitere Informationen zu extents 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();