STBuffer (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 oggetto geometrico che rappresenta l'unione di tutti i punti la cui distanza da un'istanza geometry è minore o uguale a un valore specificato.
Sintassi
.STBuffer ( distance )
Argomenti
distance
Valore di tipo float (double in .NET Framework) che specifica la distanza dall'istanza di geometria intorno alla quale calcolare il buffer.
Tipi restituiti
Tipo SQL Server restituito: geometry
Tipo CLR restituito: SqlGeometry
Osservazioni:
STBuffer()
calcola un buffer in modo analogo a BufferWithTolerance, specificando tolerance = distance * 0,001 e relative = false.
Se distance> 0 viene restituita un'istanza Polygon o MultiPolygon.
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)
Quando distance = 0, viene restituita una copia dell'istanza geometry chiamante.
Quando distance <0,
viene restituita un'istanza GeometryCollection vuota se le dimensioni dell'istanza sono 0 o 1.
viene restituito un buffer negativo quando le dimensioni dell'istanza sono 2 o maggiori di 2.
Nota
È possibile che un buffer negativo crei un'istanza GeometryCollection vuota.
Un buffer negativo rimuove tutti i punti racchiusi nella distanza specificata del limite della geometria.
L'errore tra il buffer teorico e quello calcolato è max(tolerance, extents * 1.E-7), dove tolerance = distance * .001. Per altre informazioni sulle estensioni, vedere la Guida di riferimento ai metodi per il tipo di dati geometry.
Esempi
R. Chiamata di STBuffer() con parameter_value < 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.STBuffer(-1).ToString();
B. Chiamata di STBuffer() con parameter_value < 0 in un'istanza Polygon
Nell'esempio seguente viene restituita un'istanza Polygon
con un buffer negativo:
DECLARE @g geometry = 'POLYGON((1 1, 1 5, 5 5, 5 1, 1 1))';
SELECT @g.STBuffer(-1).ToString();
C. Chiamata di STBuffer() con parameter_value < 0 in un'istanza CurvePolygon
Nell'esempio seguente viene restituita un'istanza Polygon
con un buffer negativo da un'istanza CurvePolygon
:
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.STBuffer(-1).ToString();
Nota
Viene restituita un'istanza Polygon
anziché CurvePolygon
. Per restituire un'istanza CurvePolygon
, vedere BufferWithCurves (tipo di dati geometry)
D. Chiamata a STBuffer () con un valore di parametro negativo mediante il quale viene restituita un'istanza vuota
Nell'esempio seguente viene illustrato cosa accade quando nell'esempio precedente il parametro distance è uguale a -2.
DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';
SELECT @g.STBuffer(-2).ToString();
Questa istruzione SELECT restituisce GEOMETRYCOLLECTION EMPTY.
E. Chiamata a STBuffer() con parameter_value = 0
Nell'esempio seguente viene restituita una copia dell'istanza geometry
chiamante:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer(0).ToString();
F. Chiamata a STBuffer() 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.STBuffer(@distance).ToString();
G. Chiamata a STBuffer() con parameter_value > 0
Nell'esempio seguente viene restituita un'istanza Polygon
:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer(2).ToString();
H. Chiamata a STBuffer() con un valore di parametro stringa
Nell'esempio seguente viene restituita la stessa istanza Polygon
come indicato precedentemente, ma un parametro di stringa viene passato al metodo:
DECLARE @g geometry= 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer('2').ToString();
Nell'esempio seguente verrà generato un errore:
DECLARE @g geometry = 'LINESTRING(3 4, 8 11)';
SELECT @g.STBuffer('a').ToString();
Nota
Nei due esempi precedenti è stato passato un valore letterale stringa a STBuffer()
. 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 STBuffer() in un'istanza MultiPoint
Nell'esempio seguente vengono restituite due istanze MultiPolygon
e un'istanza Polygon
:
DECLARE @g geometry = 'MULTIPOINT((1 1),(1 4))';
SELECT @g.STBuffer(1).ToString();
SELECT @g.STBuffer(1.5).ToString();
SELECT @g.STBuffer(1.6).ToString();
Le prime due istruzioni SELECT restituiscono un'istanza MultiPolygon
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 Polygon
perché le istanze dei due punti (1 1) e (1 4) memorizzate nel buffer si sovrappongono.
Vedi anche
BufferWithTolerance (tipo di dati geometry)
Metodi OGC sulle istanze di geometria