Condividi tramite


BufferWithCurves (tipo di dati geography)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL in Microsoft Fabric

Restituisce un'istanza geography che rappresenta il set di tutti i punti la cui distanza dall'istanza geography chiamante è minore o uguale al parametro distance.

Sintassi

  
.BufferWithCurves ( distance )  

Argomenti

distance
Valore float che indica la distanza massima a cui possono trovarsi i punti che compongono il buffer dall'istanza geography.

Tipi restituiti

Tipo SQL Server restituito: geography

Tipo CLR restituito: SqlGeography

Eccezioni

I criteri seguenti genereranno un'eccezione ArgumentException.

  • Nessun parametro viene passato al metodo, ad esempio @g.BufferWithCurves()

  • Un parametro non numerico viene passato al metodo, ad esempio @g.BufferWithCurves('a')

  • NULL viene passato al metodo, ad esempio @g.BufferWithCurves(NULL)

Osservazioni:

Nella tabella seguente vengono illustrati i risultati restituiti per i diversi valori della distanza.

Valore del parametro distance Dimensioni tipo Tipo spaziale restituito
distance < 0 Zero o uno Istanza GeometryCollection vuota
distance < 0 Due o più Istanza CurvePolygon o GeometryCollection con buffer negativo.

Nota: è possibile che un buffer negativo crei un'istanza GeometryCollection vuota.
distance = 0 Tutte le dimensioni Copia dell'istanza geography di chiamata
distance > 0 Tutte le dimensioni Istanza CurvePolygon o GeometryCollection

Nota

Poiché distance è di tipo float, nei calcoli un valore estremamente ridotto può corrispondere a zero. Quando ciò si verifica, viene restituita una copia dell'istanza geography chiamante.

Se un parametro string viene passato al metodo, verrà convertito in float o verrà generata un'eccezione ArgumentException.

Esempi

R. Chiamata a BufferWithCurves() con un valore di parametro < 0 in un'istanza di geografia unidimensionale

Nell'esempio seguente viene restituita un'istanza GeometryCollection vuota:

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. Chiamata a BufferWithCurves() con un valore di parametro < 0 in un'istanza di geografia bidimensionale

Nell'esempio seguente viene restituita un'istanza CurvePolygon con un buffer negativo:

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. Chiamata a BufferWithCurves() con un valore di parametro < 0 che restituisce un'istanza GeometryCollection vuota

Nell'esempio seguente viene illustrato cosa accade quando il parametro distance è uguale a -2:

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();

Questa istruzione SELECT restituisce GEOMETRYCOLLECTION EMPTY

D. Chiamata a BufferWithCurves() con un valore di parametro = 0

Nell'esempio seguente viene restituita una copia dell'istanza geography chiamante:

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. Chiamata a BufferWithCurves() con un valore di parametro diverso da zero ed estremamente basso

Anche nell'esempio seguente viene restituita una copia dell'istanza geography chiamante:

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. Chiamata a BufferWithCurves() con un valore di parametro > 0

Nell'esempio seguente viene restituita un'istanza CurvePolygon:

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. Passaggio di un parametro di stringa valido

Nell'esempio seguente viene restituita la stessa istanza CurvePolygon come indicato precedentemente, ma un parametro di stringa viene passato al metodo:

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. Passaggio di un parametro di stringa non valido

Nell'esempio seguente verrà generato un errore:

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();

Si noti che nei due esempi precedenti è stato passato un valore letterale stringa al metodo BufferWithCurves(). Il primo esempio funziona perché il valore letterale stringa può essere convertito in un valore numerico. Tuttavia, nel secondo esempio viene generata un'eccezione ArgumentException.

Vedi anche

Metodi estesi sulle istanze di geografia
BufferWithCurves (tipo di dati geometry)