Freigeben über


BufferWithCurves (geography-Datentyp)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

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

Syntax

  
.BufferWithCurves ( distance )  

Arguments

distance
Ein float-Wert, der den maximalen Abstand der Punkte von der geography-Instanz angibt, die den Puffer bilden.

Rückgabetypen

SQL Server-Rückgabetyp: geography

CLR-Rückgabetyp: SqlGeography

Exceptions

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)

Remarks

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

Distanzwert Typmaße Räumlicher Rückgabetyp
Abstand < 0 Null oder eins Leere Instanz von GeometryCollection
Abstand < 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.
Abstand = 0 Alle Maße Kopie der aufrufenden Instanz geography
Abstand > 0 Alle Maße Instanz von CurvePolygon oder GeometryCollection

Note

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 geography zurückgegeben.

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

Examples

A. Aufrufen von BufferWithCurves() mit einem Parameterwert < 0 für eine eindimensionale geography-Instanz

Im folgenden Beispiel wird eine leere Instanz von GeometryCollection zurückgegeben:

DECLARE @g geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves(-1).ToString();

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

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

DECLARE @g geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';  
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 geography = 'CURVEPOLYGON(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';  
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 geography zurückgegeben:

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
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 geography zurückgegeben:

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
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 geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
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 geography= 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)';  
SELECT @g.BufferWithCurves('2').ToString();

H. Übergeben eines ungültigen Zeichenfolgenparameters

Im folgenden Beispiel wird ein Fehler ausgelöst:

DECLARE @g geography = 'LINESTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)'  
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.

Siehe auch

Erweiterte Methoden für geography-Instanzen
BufferWithCurves (geometry-Datentyp)