Freigeben über


Reduce (geography-Datentyp)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Gibt einen Näherungswert der gegebenen geography -Instanz zurück. Dieser Näherungswert wird unter Verwendung des Douglas-Peucker-Algorithmus mit der angegebenen Toleranz ermittelt.

Diese geography -Datentypmethode unterstützt Instanzen von FullGlobe oder räumliche Instanzen, die größer als eine Hemisphäre sind.

Syntax

  
.Reduce ( tolerance )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

Begriff Definition
tolerance Ein Wert vom Typ float. tolerance ist die Toleranz, die für den Douglas-Peucker-Algorithmus angegeben wird. tolerance muss eine positive Zahl sein.

Rückgabetypen

SQL Server-Rückgabetyp: geography

CLR-Rückgabetyp: SqlGeography

Bemerkungen

Bei Auflistungstypen arbeitet dieser Algorithmus unabhängig für jeden geography -Wert, der in der Instanz enthalten ist. Dieser Algorithmus ändert keine Point -Instanzen.

Diese Methode versucht, die Endpunkte von LineString -Instanzen beizubehalten. Dies kann aber fehlschlagen, um ein gültiges Ergebnis zu erhalten.

Wenn Reduce() mit einem negativen Wert aufgerufen wird, erzeugt diese Methode eine ArgumentException. In Reduce() verwendete Toleranzen müssen positive Zahlen sein.

Der Douglas-Peucker-Algorithmus kann für jede Kurve oder jeden Ring in der geography -Instanz verwendet werden, indem alle Punkte mit Ausnahme des Start- und Endpunkts entfernt werden. Anschließend wird jeder entfernte Punkt erneut hinzugefügt, beginnend mit dem äußersten Punkt, bis kein Punkt mehr als tolerance vom Ergebnis entfernt ist. Das Ergebnis wird dann gegebenenfalls gültig gemacht, da ein gültiges Ergebnis garantiert wird.

In SQL Server 2012 (11.x) wurde diese Methode auf FullGlobe-Instanzen erweitert.

Diese Methode ist nicht exakt.

Beispiele

Im folgenden Beispiel wird eine LineString -Instanz erstellt und Reduce() verwendet, um die Instanz zu vereinfachen.

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

Weitere Informationen

Erweiterte Methoden für geography-Instanzen