Freigeben über


BufferWithCurves (geometry-Datentyp)

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

Gibt eine Instanz von geometry zurück, die die Menge aller Punkte darstellt, deren Abstand von der aufrufenden Instanz von geometry kleiner oder gleich dem Wert des distance-Parameters ist.

Syntax

.BufferWithCurves ( 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 float-Wert, der den maximalen Abstand der Punkte von der geometry-Instanz angibt, die den Puffer bilden.

Rückgabetypen

SQL Server-Rückgabetyp: geometry

CLR-Rückgabetyp: SqlGeometry

Ausnahmen

Die folgenden Kriterien lösen eine ArgumentException aus.

  • Es wird kein Parameter an die Methode übergeben, beispielsweise @g.BufferWithCurves()

  • Es wird ein nicht numerischer Parameter an die Methode übergeben, beispielsweise @g.BufferWithCurves('a')

  • NULL wird an die Methode übergeben, beispielsweise @g.BufferWithCurves(NULL)

Bemerkungen

Die folgende Abbildung zeigt ein Beispiel für eine geometry-Instanz an, die von dieser Methode zurückgegeben wurde.

Diagram showing an example of a geometry instance returned by this method.

Die folgende Tabelle zeigt die Ergebnisse an, die für verschiedene Entfernungswerte zurückgegeben wurden.

distance-Wert Type-Dimensionen Räumlicher Rückgabetyp
distance < 0 Null oder eins Leere Instanz von GeometryCollection
distance < 0 Zwei oder mehr Eine Instanz von CurvePolygon oder GeometryCollection mit einem negativen Puffer. Hinweis: Ein negativer Puffer erstellt möglicherweise eine leere Instanz von GeometryCollection.
distance = 0 Alle Dimensionen Kopie der aufrufenden Instanz von geometry
distance > 0 Alle Dimensionen Instanz von CurvePolygon oder GeometryCollection

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).

Ein negativer Puffer entfernt alle Punkte innerhalb des gegebenen Abstands der Begrenzung der geometry-Instanz. In der folgenden Abbildung wird ein negativer Puffer als heller schattierter Bereich des Kreises angezeigt. Die gepunktete Linie ist die Grenze des ursprünglichen Polygons, und die durchgezogenen Linie ist die Grenze des resultierenden Polygons.

Wenn ein string-Parameter an die Methode übergeben wird, erfolgt eine Konvertierung in einen float-Wert, oder eine ArgumentException wird ausgelöst.

Beispiele

A. Aufrufen von BufferWithCurves() 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.BufferWithCurves(-1).ToString(); 

B. Aufrufen von BufferWithCurves() mit einem Parameterwert < 0 für eine zweidimensionale geometry-Instanz

Im folgenden Beispiel wird eine Instanz von CurvePolygon mit einem negativen Puffer zurückgegeben:

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.BufferWithCurves(-1).ToString()

C. Aufrufen von BufferWithCurves() mit einem Parameterwert < 0 zur Rückgabe einer leeren GeometryCollection

Im folgenden Beispiel wird gezeigt, was geschieht, wenn der distance-Parameter –2 entspricht:

 DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))'; 
 SELECT @g.BufferWithCurves(-2).ToString();

Diese SELECT-Anweisung gibt GEOMETRYCOLLECTION EMPTY zurück.

D: Aufrufen von BufferWithCurves() mit einem Parameterwert = 0

Im folgenden Beispiel wird eine Kopie der aufrufenden Instanz von geometry zurückgegeben:

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.BufferWithCurves(0).ToString();

E. Aufrufen von BufferWithCurves() mit einem sehr kleinen Parameterwert ungleich 0

Im folgenden Beispiel wird ebenfalls eine Kopie der aufrufenden Instanz von geometry zurückgegeben:

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'; 
 DECLARE @distance float = 1e-20; 
 SELECT @g.BufferWithCurves(@distance).ToString();

F. Aufrufen von BufferWithCurves() mit einem Parameterwert > 0

Im folgenden Beispiel wird eine Instanz von CurvePolygon zurückgegeben:

 DECLARE @g geometry= 'LINESTRING(3 4, 8 11)'; 
 SELECT @g.BufferWithCurves(2).ToString();

G. Übergeben eines gültigen Zeichenfolgenparameters

Im folgenden Beispiel wird die gleiche Instanz von CurvePolygon 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.BufferWithCurves('2').ToString();

H. Übergeben eines ungültigen Zeichenfolgenparameters

Im folgenden Beispiel wird ein Fehler ausgelöst:

 DECLARE @g geometry = 'LINESTRING(3 4, 8 11)' 
 SELECT @g.BufferWithCurves('a').ToString();

Beachten Sie, dass in den beiden vorangehenden Beispielen ein Zeichenfolgenliteral an die BufferWithCurves()-Methode übergeben wurde. 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 BufferWithCurves() für eine MultiPoint-Instanz

Im folgenden Beispiel werden zwei Instanzen von GeometryCollection sowie eine Instanz von CurvePolygon zurückgegeben:

 DECLARE @g geometry = 'MULTIPOINT((1 1),(1 4))'; 
 SELECT @g.BufferWithCurves(1).ToString(); 
 SELECT @g.BufferWithCurves(1.5).ToString(); 
 SELECT @g.BufferWithCurves(1.6).ToString();

Von den ersten beiden SELECT-Anweisungen wird eine Instanz von GeometryCollection 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 CurvePolygon zurückgegeben, da sich die zwischengespeicherten Instanzen der beiden Punkte (1 1) und (1 4) überschneiden.

Siehe auch

Erweiterte Methoden für geometry-Instanzen