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?

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.


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.