BufferWithTolerance (tipo di dati geography)
Restituisce un oggetto geometrico che rappresenta l'unione di tutti i valori di punti la cui distanza da un'istanza geography è minore o uguale a un valore specificato, consentendo una tolleranza specificata.
Questo metodo con tipo di dati geography supporta le istanze FullGlobe o le istanze spaziali con dimensioni maggiori di un emisfero.
Sintassi
.BufferWithTolerance ( distance, tolerance, relative )
Argomenti
distance
Espressione float che specifica la distanza dall'istanza geography intorno alla quale calcolare il buffer.La distanza massima del buffer non può superare 0,999 * π * minorAxis * minorAxis / majorAxis (~0,999 * 1/2 della circonferenza della Terra) o l'intero globo.
tolerance
Espressione float che specifica la tolleranza della distanza del buffer.Il valore 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.
Il limite minimo è lo 0,1 percento della distanza e qualsiasi tolleranza inferiore verrà arrotondata al limite minimo.
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 del parametro tolerance e dell'estensione angolare * raggio equatoriale dell'ellissoide. 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: geography
Tipo CLR restituito: SqlGeography
Osservazioni
Questo metodo genererà un'eccezione ArgumentException se distance non è un numero (NAN, Not-a-Number) o se distance è un valore infinito positivo o negativo. Questo metodo, inoltre, genererà un'eccezione ArgumentException se tolerance è zero (0), non è un numero (NAN) oppure è un valore infinito positivo o negativo.
STBuffer() restituisce un'istanza FullGlobe in determinati casi; ad esempio, STBuffer() restituisce un'istanza FullGlobe su due poli quando la distanza del buffer è maggiore della distanza dall'equatore ai poli.
Questo metodo genererà ArgumentException nelle istanze FullGlobe in cui la distanza del buffer eccede il limite seguente:
0,999 * π * minorAxis * minorAxis / majorAxis (~0,999 * 1/2 della circonferenza della Terra)
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 geography.
Il metodo non è preciso.
Esempi
Nell'esempio seguente viene creata un'istanza Point e viene utilizzato BufferWithTolerance() per ottenere un buffer approssimato intorno all'istanza stessa.
DECLARE @g geography;
SET @g = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();
Vedere anche
Riferimento
STBuffer (tipo di dati geography)