Simplifier les polygones en linestring?


16

Je voudrais simplifier certains polygones qui représentent des rivières en chaînes linéaires. Je suppose que les trous dans les polygones peuvent être omis. Quelqu'un a une bonne idée de comment le faire simplement?

Ce serait bien, s'il était possible de le faire directement dans postgis ou par un autre outil open source, mais une brève description de l'algorithme sera suffisante.

Réponses:


13

Ce dont vous avez besoin est appelé "algorithme de squelette".

Jetez un œil à cet article:

Haunert, J.-H., Sester, M., juin 2008. Effondrement de la zone et axes médians des routes basés sur des squelettes droits. GeoInformatica 12 (2), 169-191. URL http://dx.doi.org/10.1007/s10707-007-0028-x

Certains de ces algorithmes sont développés dans la bibliothèque CGAL .


Aucun des deux liens ne fonctionne plus, Julien: pensez-vous pouvoir fournir un résumé des algorithmes ou au moins des références formelles pour permettre aux gens de consulter les articles?
whuber

Oui, j'ai mis à jour la réponse avec une référence appropriée à un article plus récent.
julien

2
Je vous remercie! (Je ne peux pas ajouter un autre vote positif cependant - je n'en avais qu'un à donner. :-)
whuber

4

Dans PostGIS 2.2 avec SFCGAL, cela peut être fait avec ST_StraightSkeleton ou ST_ApproximateMedialAxis , selon vos critères.


2

le plugin JUMP skeletonizer est disponible dans le cadre de openjump http://www.openjump.org


1

Juste comme un avertissement, je n'ai jamais essayé cela auparavant. Votre succès dépendra de la qualité des données dont vous disposez actuellement.

Considérez donc le polygone comme une bande de triangles. Chaque triangle se connecte à un sommet sur le côté opposé du couloir avec un bord. Maintenant, pour chacun des bords du couloir, placez simplement un sommet droit au centre. Ces nouveaux sommets sont les points de votre chaîne de caractères. Vous pouvez probablement jouer avec la façon dont vous sélectionnez le point central sur le bord pour une plus grande précision.


0

Encore une fois, ET GeoWizards pourrait être la réponse. Essayez l' outil Créer des traits d'axe à partir de polygones .

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.