BufferWithTolerance (tipo di dati geometry)
Restituisce un oggetto geometrico che rappresenta l'unione di tutti i valori di punti la cui distanza da un'istanza geometry è minore o uguale a un valore specificato, consentendo una tolleranza specificata.
Sintassi
.BufferWithTolerance ( distance, tolerance, relative )
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 della distanza del buffer ideale 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 riquadro dell'istanza. Se il valore è 'FALSE' o 0, la tolleranza è assoluta e il valore tolerance è la variazione massima assoluta nella distanza del buffer ideale per l'approssimazione lineare restituita.
Tipi restituiti
SQL Server tipo restituito: geometry
Tipo CLR restituito: SqlGeometry
Eccezioni
Il valore del 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 è minimo a causa di problemi di arrotondamento di tipi con virgola mobile.
Osservazioni
Quando distance > 0, viene restituita un'istanza Polygon o MultiPolygon.
[!NOTA]
Poiché la distanza è float, nei calcoli un valore estremamente ridotto può corrispondere a zero. Quando ciò si verifica, viene restituita una copia dell'istanza di geometry chiamante. Vedere float e real (Transact-SQL).
Quando distance = 0, viene restituita una copia dell'istanza di geometry chiamante.
Quando distance < 0,
viene restituita un'istanza GeometryCollection vuota quando 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]
È inoltre possibile che un buffer negativo crei un'istanza GeometryCollection vuota.
Un buffer negativo consente di rimuovere 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 ulteriori informazioni su extents, vedere 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();
Vedere anche
Riferimento
STBuffer (tipo di dati geometry)