BufferWithTolerance (tipo di dati geography)
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 dei valori di tutti i 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 tolerance 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, ma tale distanza deve essere approssimata da un poligono. Minore è la tolleranza, maggiore sarà il numero di punti del poligono. Ciò aumenta la complessità del risultato, ma riduce al minimo le possibilità di 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. Il valore è il prodotto tra il parametro tolerance e l'estensione angolare * raggio equatoriale dell'ellissoide. La tolleranza è assoluta se il valore è "FALSE" o 0. Il valore tolerance indica la variazione massima assoluta nella distanza ideale del buffer per l'approssimazione lineare restituita.
Tipi restituiti
Tipo SQL Server restituito: geography
Tipo CLR restituito: SqlGeography
Osservazioni:
Questo metodo genera un'eccezione ArgumentException se distance non è un numero (NAN, Not-a-Number) o se distance è un valore infinito positivo o negativo. Questo metodo genera inoltre un'eccezione ArgumentException se tolerance è zero (0), non un numero, un valore negativo o 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à un'eccezione ArgumentException nelle istanze FullGlobe in cui la distanza del buffer supera 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 altre informazioni sulle estensioni, vedere la Guida di riferimento ai metodi per il tipo di dati geography.
Questo 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();
Vedi anche
STBuffer (tipo di dati geography)
Metodi estesi sulle istanze di geografia