Reduce (tipo de datos geography)
Se aplica a: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de datos de Azure SQL de Microsoft Fabric
Devuelve una aproximación de la instancia de geography especificada que se genera al aplicar el algoritmo de Douglas-Peucker a la instancia con la tolerancia indicada.
Este método del tipo de datos geography admite instancias de FullGlobe o instancias espaciales mayores que un hemisferio.
Sintaxis
.Reduce ( tolerance )
Argumentos
Término | Definición |
---|---|
tolerance | Es un valor de tipo float. tolerance es la tolerancia que se usa como entrada para el algoritmo de Douglas-Peucker. tolerance debe ser un número positivo. |
Tipos de valor devuelto
Tipo de valor devuelto de SQL Server: geography
Tipo de valor devuelto de CLR: SqlGeography
Observaciones
Para los tipos de colección, este algoritmo funciona independientemente en cada tipo geography contenido en la instancia. Este algoritmo no modifica las instancias de Point.
Este método intentará conservar los extremos de las instancias de LineString, pero es posible que no pueda hacerlo para mantener un resultado válido.
Si se llama a Reduce()
con un valor negativo, este método generará una ArgumentException. Las tolerancias utilizadas en Reduce()
deben ser números positivos.
El algoritmo de Douglas Peucker funciona en cada curva o anillo de la instancia de geography quitando todos los puntos excepto el de inicio y el final. Después, cada punto quitado se agrega de nuevo, comenzando con el punto periférico más lejano, hasta que no haya ningún punto más allá de tolerance del resultado. A continuación, el resultado se convierte en válido, si es necesario, cuando se garantiza un resultado válido.
En SQL Server 2012 (11.x), este método se ha extendido a las instancias de FullGlobe.
Este método no es preciso.
Ejemplos
En el ejemplo siguiente se crea una instancia sencilla de LineString
y se utiliza Reduce()
para simplificar la instancia.
DECLARE @g geography = 'LineString(120 45, 120.1 45.1, 199.9 45.2, 120 46)'
SELECT @g.Reduce(10000).ToString()