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)