STBuffer (geometry-Datentyp)
Gilt für: SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
SQL-Datenbank in Microsoft Fabric
Gibt ein geometrisches Objekt zurück, dass die Vereinigung aller Punkte darstellt, deren Abstand zu einer geometry -Instanz kleiner oder gleich einem angegebenen Wert ist.
Syntax
.STBuffer ( distance )
Argumente
distance
Ein Wert vom Typ float (double in .NET-Framework), der den Abstand zu der geometry-Instanz angibt, um die der Puffer berechnet werden soll.
Rückgabetypen
SQL Server-Rückgabetyp: geometry
CLR-Rückgabetyp: SqlGeometry
Hinweise
STBuffer()
berechnet einen Puffer wie BufferWithTolerance, wobei tolerance = distance * 0,001 und relative = false ist.
Wenn distance> 0, wird eine Polygon- oder MultiPolygon-Instanz zurückgegeben.
Hinweis
Da distance ein float-Wert 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, dann
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 gegebenen Abstands der Begrenzung der geometry-Instanz.
Die Abweichung zwischen dem theoretischen und dem berechneten Puffer beträgt max(tolerance, extents * 1,E-7), wobei tolerance = distance * 0,001 ist. Weitere Informationen zu Erweiterungen finden Sie unter geometry-Datentyp-Methodenverweis.
Beispiele
A. Aufrufen von STBuffer() mit einem Parameterwert < 0 für eine eindimensionale geometry-Instanz
Im folgenden Beispiel wird eine leere Instanz von GeometryCollection
zurückgegeben:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer(-1).ToString();
B. Aufrufen von STBuffer() mit parameter_value < 0 für eine Polygon-Instanz
Im folgenden Beispiel wird eine Instanz von Polygon
mit einem negativen Puffer zurückgegeben:
DECLARE @g geometry = 'POLYGON((1 1, 1 5, 5 5, 5 1, 1 1))';
SELECT @g.STBuffer(-1).ToString();
C. Aufrufen von STBuffer() mit parameter_value < 0 für eine CurvePolygon-Instanz
Im folgenden Beispiel wird eine Instanz von Polygon
mit einem negativen Puffer von einer CurvePolygon
-Instanz zurückgegeben:
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.STBuffer(-1).ToString();
Hinweis
Anstelle einer Instanz von Polygon
wird eine Instanz von CurvePolygon
zurückgegeben. Informationen zum Zurückgeben einer CurvePolygon
-Instanz finden Sie unter BufferWithCurves (geometry-Datentyp)
D: Aufrufen von STBuffer() mit einem negativen Parameterwert zur Rückgabe einer leeren Instanz
Im folgenden Beispiel wird gezeigt, was geschieht, wenn der distance -Parameter aus dem vorangehenden Beispiel -2 entspricht.
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.STBuffer(-2).ToString();
Diese SELECT-Anweisung gibt GEOMETRYCOLLECTION EMPTY.
zurück.
E. Aufrufen von STBuffer() mit parameter_value = 0
Im folgenden Beispiel wird eine Kopie der aufrufenden Instanz von geometry
zurückgegeben:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer(0).ToString();
F. Aufrufen von STBuffer() mit einem äußerst kleinen Parameterwert ungleich 0
Im folgenden Beispiel wird auch eine Kopie der aufrufenden Instanz von geometry
zurückgegeben:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
DECLARE @distance float = 1e-20;
SELECT @g.STBuffer(@distance).ToString();
G. Aufrufen von STBuffer() mit parameter_value > 0
Im folgenden Beispiel wird eine Instanz von Polygon
zurückgegeben:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer(2).ToString();
H. Aufrufen von STBuffer() mit einem Zeichenfolgenparameterwert
Im folgenden Beispiel wird die gleiche Instanz von Polygon
zurückgegeben, die bereits erwähnt wurde, es wird jedoch ein Zeichenfolgenparameter an die Methode übergeben:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer('2').ToString();
Im folgenden Beispiel wird ein Fehler ausgelöst:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer('a').ToString();
Hinweis
In den beiden vorangehenden Beispielen wurde ein Zeichenfolgenliteral an den STBuffer()
übergeben. Das erste Beispiel kann ordnungsgemäß ausgeführt werden, da das Zeichenfolgenliteral in einen numerischen Wert konvertiert werden kann. Im zweiten Beispiel wird allerdings eine ArgumentException
ausgelöst.
I. Aufrufen von STBuffer() für eine MultiPoint-Instanz
Im folgenden Beispiel werden zwei Instanzen von MultiPolygon
sowie eine Instanz von Polygon
zurückgegeben:
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();
Von den ersten beiden SELECT-Anweisungen wird eine Instanz von MultiPolygon
zurückgegeben, da der distance-Parameter kleiner oder gleich 1/2 des Abstands zwischen den beiden Punkten (1 1) und (1 4) ist. Von der dritten SELECT-Anweisung gibt Polygon
zurückgegeben, da sich die zwischengespeicherten Instanzen der beiden Punkte (1 1) und (1 4) überschneiden.
Siehe auch
BufferWithTolerance (geometry-Datentyp)
OGC-Methoden für geometry-Instanzen