Significado del parámetro de tolerancia de Simplify

45

Los parámetros estándar del algoritmo de simplificación de Douglas-Peucker son la geometría y la tolerancia (por ejemplo, ST_Simplify en PostGIS). ¿Cuál es el significado del parámetro de tolerancia ? Sé que cuanto mayor sea el valor, más gruesa será la geometría. ¿Pero el número tiene alguna unidad o es simplemente arbitrario?

ejel
fuente

Respuestas:

41

La tolerancia es una distancia . Aproximadamente, cualquier "meneo" en una curva que varía de una línea recta por menos de esta cantidad se enderezará. El algoritmo encuentra las oscilaciones más extremas que exceden la tolerancia, establece los puntos donde más se desvían de un camino recto y luego se aplica recursivamente a los arcos entre las oscilaciones fijadas.

La tolerancia debe expresarse en las mismas unidades utilizadas por el software para ejecutar el algoritmo. (Esto dependerá de si usa las coordenadas almacenadas o proyectadas "sobre la marcha" para su visualización o análisis). Una descripción ilustrada aparece en el artículo de Wikipedia sobre el algoritmo Douglas-Peucker.

whuber
fuente
Gran explicación, +1.
Derek Swingley
1
Por lo general, este valor del parámetro de tolerancia debe ser igual a la resolución objetivo.
julien
1
@julien Eso tiene sentido. Siempre me gusta entender el razonamiento detrás de tales reglas generales, porque en mi experiencia muchas de esas conclusiones no se sostienen cuando se examinan más de cerca. (Y es agradable sorprenderse así: siempre aprendes algo). ¿Podrías compartir tus pensamientos sobre por qué la tolerancia debería ser igual a la "resolución objetivo" (y cuál es exactamente esa resolución)?
whuber
6

No lo vi en el enlace que publicó pero encontró esto:

Las unidades de tolerancia son las mismas que la proyección de la geometría de entrada.

http://revenant.ca/www/postgis/workshop/advanced.html#processing-functions

Derek Swingley
fuente
1
Veo. Pero, ¿qué significa exactamente decir que la geometría es WGS84 (lat / lon) y establecer la tolerancia en 1.0? Error dentro de 1 grado? Todavía un poco confundido.
ejel
1
No diría "error dentro de 1 grado" ... eche un vistazo a la página de wikipedia para el algoritmo, hay un buen gráfico y una buena explicación allí: en.wikipedia.org/wiki/…
Derek Swingley