Condividi tramite


BufferWithCurves (tipo di dati geography)

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
    float che indica la distanza massima a cui possono trovarsi i punti che compongono il buffer dall'istanza di geografia.

Tipi restituiti

SQL Server tipo 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 un 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 è 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 altrimenti verrà generata un'eccezione ArgumentException.

Esempi

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

Nell'esempio seguente viene inoltre 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.

Vedere anche

Riferimento

BufferWithCurves (tipo di dati geometry)

Altre risorse

Metodi estesi sulle istanze di geografia