Signification du paramètre de tolérance de Simplify

45

Les paramètres standard de l'algorithme simplifié de Douglas-Peucker sont la géométrie et la tolérance (par exemple, ST_Simplify dans PostGIS). Quelle est la signification du paramètre de tolérance ? Je sais que plus la valeur est grande, plus la géométrie sera grossière. Mais le nombre a-t-il une unité ou est-il simplement arbitraire?

ejel
la source

Réponses:

41

La tolérance est une distance . En gros, toute "agitation" dans une courbe qui varie d'une ligne droite de moins que ce montant sera redressée. L'algorithme trouve les ondulations les plus extrêmes qui dépassent la tolérance, repère les points où elles s'écartent le plus d'un chemin rectiligne, puis s'applique récursivement aux arcs entre les ondulations épinglées.

La tolérance doit être exprimée dans les mêmes unités que celles utilisées par le logiciel pour exécuter l'algorithme. (Cela dépendra de l'utilisation des coordonnées stockées ou projetées "à la volée" pour l'affichage ou l'analyse.) Une description illustrée apparaît dans l'article de Wikipedia sur l'algorithme de Douglas-Peucker.

whuber
la source
Grande explication, +1.
Derek Swingley le
1
Habituellement, cette valeur de paramètre de tolérance doit être égale à la résolution cible.
Julien
1
@julien Cela a du sens. J'aime toujours comprendre le raisonnement qui sous-tend de telles règles empiriques, car, selon mon expérience, de nombreuses conclusions de ce type ne résistent pas à l'examen approfondi. (Et c'est ravissant d'être surpris comme ça: on apprend toujours quelque chose.) Pourriez-vous donc nous dire pourquoi la tolérance doit être égale à la "résolution cible" (et quelle est exactement cette résolution)?
whuber
6

Je ne l'ai pas vu dans le lien que vous avez posté mais trouvé ceci:

Les unités de tolérance sont les mêmes que la projection de la géométrie en entrée.

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

Derek Swingley
la source
1
Je vois. Mais qu'est-ce que cela signifie exactement quand, par exemple, la géométrie est WGS84 (lat / lon) et que la tolérance est définie sur 1.0? Erreur dans 1 degré? Encore un peu confus.
ejel
1
Je ne dirais pas "erreur dans les 1 degré" ... jetez un coup d'oeil à la page de wikipedia pour l'algorithme, il y a un joli graphique et une bonne explication ici: en.wikipedia.org/wiki/…
Derek Swingley