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.

stachu
la source

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 .

julien
la source
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.

dbaston
la source
2

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

blackholesunn
la source
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.

Jon Bringhurst
la source
0

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

Don Meltz
la source