Compartir a través de


Reduce (tipo de datos geometry)

Devuelve una aproximación de la instancia de geometry especificada que se genera al aplicar el algoritmo de Douglas-Peucker a la instancia con la tolerancia indicada.

Sintaxis

.Reduce ( tolerance )

Argumentos

  • tolerance
    Es un valor de tipo float. tolerance es la tolerancia que se utiliza como entrada para el algoritmo de Douglas-Peucker.

Tipos de valores devueltos

SQL Server Tipo de valor devuelto de : geometry

Tipo de valor devuelto de CLR: SqlGeometry

Notas

Para los tipos de colección, este algoritmo funciona independientemente en cada tipo geometry contenido en la instancia.

Este algoritmo no modifica las instancias de Point.

En las instancias de LineString, el algoritmo de Douglas-Peucker conserva los puntos inicial y final originales de la instancia y va agregando en iteraciones el punto de la instancia original que más se desvía del resultado hasta que ningún punto se desvíe más que la tolerancia especificada.

Nota de advertenciaAdvertencia

El algoritmo de Douglas Peucker puede dar lugar a una instancia de LineString no válida, pero el método Reduce llamará internamente al método MakeValid en la instancia resultante. La consecuencia puede ser que se quiten los puntos inicial y final originales de la instancia resultante. Para obtener un ejemplo, vea Showing an example where the original start and end points are lost.

En las instancias de Polygon, el algoritmo de Douglas-Peucker se aplica independientemente a cada anillo. El método generará una excepción FormatException si la instancia de Polygon devuelta no es válida; por ejemplo, se crea una instancia de MultiPolygon no válida si se aplica Reduce() para simplificar cada anillo de la instancia y los anillos resultantes se superponen.

Ejemplos

Simplificar una instancia de LineString con Reduce ()

En el ejemplo siguiente se crea una instancia de LineString y se utiliza Reduce() para simplificar la instancia.

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(0 0, 0 1, 1 0, 2 1, 3 0, 4 1)', 0);
SELECT @g.Reduce(.75).ToString();

Mostrar un ejemplo en el que se pierden los puntos inicial y final originales

En el ejemplo siguiente se muestra cómo los puntos inicial y final originales no pueden ser conservados por la instancia resultante. Esto se produce porque la conservación de los puntos inicial y final originales daría lugar a una instancia de LineString no válida.

DECLARE @g geometry = 'LINESTRING(0 0, 4 0, 2 .01, 1 0)';
DECLARE @h geometry = @g.Reduce(1);
SELECT @g.STIsValid() AS Valid
SELECT @g.ToString() AS Original, @h.ToString() AS Reduced;

Vea también

Otros recursos