BufferWithCurves (tipo di dati geometry)
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL in Microsoft Fabric
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
Valore float che indica la distanza massima a cui possono trovarsi i punti che compongono il buffer dall'istanza geometry.
Tipi restituiti
Tipo SQL Server 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.
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 geometry 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 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 o verrà generata un'eccezione ArgumentException
.
Esempi
R. 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
Anche nell'esempio seguente viene 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 dei due punti (1 1) e (1 4) memorizzate nel buffer si sovrappongono.