STBuffer (tipo di dati geometry)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure Endpoint di analisiSQL in Microsoft FabricWarehouse 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 )  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

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