BufferWithTolerance (tipo di dati geometry)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Restituisce un oggetto geometrico che rappresenta l'unione dei valori di tutti i punti la cui distanza da un'istanza geometry è minore o uguale a un valore specificato, consentendo una tolleranza specificata.

Sintassi

  
.BufferWithTolerance ( distance, tolerance, relative )  

Nota

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

Argomenti

distance
Espressione float che specifica la distanza dall'istanza geometry intorno alla quale calcolare il buffer.

tolerance
Espressione float che specifica la tolleranza della distanza del buffer.

Il termine tolleranza indica la variazione massima nella distanza ideale del buffer per l'approssimazione lineare restituita.

La distanza ideale del buffer di un punto ad esempio è un cerchio, che però deve essere approssimato da un poligono. Minore è il valore della tolleranza, maggiore sarà il numero di punti del poligono. In questo caso aumenterà la complessità del risultato, ma diminuirà l'errore.

relative
Valore bit che specifica se il valore tolerance è relativo o assoluto. Se il valore è TRUE o 1, la tolleranza è relativa e viene calcolata come prodotto tra il parametro tolerance e il diametro del rettangolo di selezione dell'istanza. Se il valore è FALSE o 0, la tolleranza è assoluta e il valore tolerance è la variazione massima assoluta nella distanza ideale del buffer per l'approssimazione lineare restituita.

Tipi restituiti

Tipo SQL Server restituito: geometry

Tipo CLR restituito: SqlGeometry

Eccezioni

Il parametro tolerance deve essere maggiore di zero. Se tolerance<= 0 viene generata un'eccezione System.ArgumentOutOfRangeException.

Nota

Poiché tolerance è di tipo float, è possibile che venga generata un'eccezione System.Runtime.InteropServices.COMException se il valore specificato per la tolleranza è estremamente ridotto. Ciò è dovuto a problemi di arrotondamento dei tipi a virgola mobile.

Osservazioni:

Se distance> 0 viene restituita un'istanza Polygon o MultiPolygon.

Nota

Poiché distance è di tipo float, un valore estremamente ridotto può corrispondere a zero nei calcoli. 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 all'interno della distanza specificata del limite dell'istanza geometry.

L'errore tra il buffer calcolato e quello teorico è max(tolerance, extents * 1.E-7) dove tolerance è il valore del parametro tolerance. Per altre informazioni sulle estensioni, vedere la Guida di riferimento ai metodi per il tipo di dati geometry.

Esempi

Nell'esempio seguente viene creata un'istanza Point e viene utilizzato BufferWithTolerance() per ottenere un buffer approssimato intorno all'istanza stessa.

DECLARE @g geometry;  
SET @g = geometry::STGeomFromText('POINT(3 3)', 0);  
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();  

Vedi anche

STBuffer (tipo di dati geometry)
Metodi estesi sulle istanze di geometria