Condividi tramite


BufferWithCurves (tipo di dati geometry)

Restituisce un'istanza geometry che rappresenta il set di tutti i punti la cui distanza dall'istanza geometry 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 geometry.

Tipi restituiti

SQL Server tipo restituito: geometry

Tipo CLR restituito: SqlGeometry

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

Nell'illustrazione seguente viene mostrato un esempio di un'istanza di geometria restituita da questo metodo.

BufferedCurve

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 geometry 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 geometry chiamante. Vedere float e real (Transact-SQL).

Un buffer negativo rimuove tutti i punti racchiusi nella distanza specificata del limite della geometria. Nell'illustrazione seguente viene mostrato un buffer negativo come area lievemente ombreggiata del cerchio. La linea punteggiata è il limite del poligono originale e la linea continua è il limite del poligono risultante.

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 geometria unidimensionale

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

DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';

SELECT @g.BufferWithCurves(-1).ToString();

B.Chiamata a BufferWithCurves() con un valore di parametro < 0 in un'istanza di geometria bidimensionale

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

DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';

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 geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';

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 geometry chiamante:

DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';

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 geometry chiamante:

DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';

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 geometry= 'LINESTRING(3 4, 8 11)';

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 geometry= 'LINESTRING(3 4, 8 11)';

SELECT @g.BufferWithCurves('2').ToString();

H.Passaggio di un parametro di stringa non valido

Nell'esempio seguente verrà generato un errore:

DECLARE @g geometry = 'LINESTRING(3 4, 8 11)'

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.

I.Chiamata a BufferWithCurves() in un'istanza MultiPoint

Nell'esempio seguente vengono restituite due istanze GeometryCollection e un'istanza CurvePolygon:

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

Le prime due istruzioni SELECT restituiscono un'istanza GeometryCollection perché il parametro distance è minore o uguale a 1/2 della distanza tra i due punti (1 1) e (1 4). La terza istruzione SELECT restituisce un'istanza CurvePolygon perché le istanze memorizzate nel buffer dei due punti (1 1) e (1 4) si sovrappongono.

Vedere anche

Altre risorse

Metodi estesi sulle istanze di geometria