Share via


STBuffer (geometry-Datentyp)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceSQL Analytics-Endpunkt in Microsoft FabricWarehouse 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 )  

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 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 ArgumentExceptionausgelö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