Reduce (tipo di dati geography)

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

Restituisce un'approssimazione dell'istanza geography specificata prodotta eseguendo l'algoritmo Douglas-Peucker sull'istanza con la tolleranza specificata.

Questo metodo con tipo di dati geography supporta le istanze FullGlobe o le istanze spaziali con dimensioni maggiori di un emisfero.

Sintassi

  
.Reduce ( tolerance )  

Nota

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

Argomenti

Termine Definizione
tolerance Valore di tipo float. tolerance è la tolleranza per l'input dell'algoritmo Douglas-Peucker. tolerance deve essere un numero positivo.

Tipi restituiti

Tipo SQL Server restituito: geography

Tipo CLR restituito: SqlGeography

Osservazioni:

Per i tipi relativi a una raccolta, questo algoritmo opera indipendentemente su ogni tipo geography contenuto nell'istanza. Questo algoritmo non modifica le istanze Point.

Questo metodo prova a mantenere gli endpoint delle istanze LineString, ma il tentativo può non riuscire se si vuole mantenere un risultato valido.

Se Reduce() viene chiamato con un valore negativo, il metodo genera l'eccezione ArgumentException. Le tolleranze utilizzate in Reduce() devono essere numeri positivi.

L'algoritmo Douglas-Peucker può essere usato su ogni curva o cerchio nell'istanza geography rimuovendo tutti i punti ad eccezione di quello iniziale e di quello finale. Ogni punto rimosso viene quindi aggiunto nuovamente, a partire da quello esterno più lontano, fino a quando nessun punto ha una distanza dal risultato superiore al valore tolerance. Poiché deve essere garantito un risultato valido, se necessario il risultato viene reso valido.

In SQL Server 2012 (11.x) questo metodo è stato esteso alle istanze FullGlobe.

Il metodo non è preciso.

Esempi

Nell'esempio seguente viene creata un'istanza LineString e viene utilizzato il metodo Reduce() per semplificarla.

DECLARE @g geography = 'LineString(120 45, 120.1 45.1, 199.9 45.2, 120 46)'  
SELECT @g.Reduce(10000).ToString()  

Vedi anche

Metodi estesi sulle istanze di geografia