Je fais une carte contenant des informations sur les transports en commun: bus, tramways, etc. La carte aura une couche contenant par exemple les lignes de tramway. Chaque ligne a sa propre couleur et est représentée par une géométrie de chaîne de lignes.
Le problème est que de nombreuses lignes ont des parties qui se chevauchent, où plus d'une ligne de tramway couvre la même section. Pour montrer cela à l'utilisateur, je préfère que les lignes soient parallèles les unes aux autres au lieu d'être tracées les unes sur les autres. Pour un exemple, voyez comment Google Maps affiche les lignes du métro de New York.
Je soupçonne que c'est un problème assez courant en cartographie, mais je ne sais pas quelle terminologie je dois rechercher.
J'utilise PostGIS / GeoServer / OpenLayers comme pile, mais toute solution open source serait acceptable.
Réponses:
Si vous souhaitez en savoir plus sur ce domaine, le problème s'appelle le déplacement cartographique et son seul aspect de la généralisation cartographique .
Quelques articles sur le déplacement et les approches pour gérer le problème:
Bader, Matthias. 2001. Méthodes de minimisation de l'énergie pour le déplacement d'entités dans la généralisation de cartes.
Steiniger, S Tefan S et S Iegfried M Eier. Serpents: une technique de lissage et de déplacement des lignes dans la généralisation de cartes: 1-11.
Ware, Mark J et Christopher B Jones. 1998. Résolution des conflits dans la généralisation des cartes à l'aide de l'amélioration itérative. GeoInformatica 2, no. 4: 383-407 +.
la source
Ce problème est très typique de la généralisation cartographique. Des méthodes automatisées existent pour cela, mais aucune implémentation n'est encore disponible.
Les méthodes basées sur " Beams " et " Snakes " donnent des résultats efficaces pour résoudre ces conflits cartographiques de données réseau (voir aussi les références données par scw ). Voici quelques résultats des algorithmes des poutres sur les données routières:
Avant:
Après:
Voir également cet article et cette présentation qui expliquent comment effectuer cette transformation .
EDIT: Je ne l'ai jamais testé, mais il semble qu'il y ait quelque chose en rapport avec les serpents dans GRASS. Voyez ici .
la source
Je ne connais pas de solution, mais je pense que le terme que vous recherchez est "résolution de conflits" - un sujet de généralisation de la carte. Une recherche Google sur les "conflits de généralisation de carte" montre des informations intéressantes - mais je ne sais pas qu'elles sont très utiles.
la source
Dans les implémentations actuelles, vous pouvez souvent trouver "Offset" ou "Dislocation". En utilisant votre pile actuelle, il semble un peu difficile de réaliser automatiquement des lignes parallèles:
Pour résumer: La façon la plus simple que je connaisse serait d'utiliser UMN Mapserver et la valeur Offset là-bas. Exemple de style pour votre mapfile:
la source
Si vous dessinez des calques de lignes qui se chevauchent, vous disposez de plusieurs options pour permettre au visualiseur de voir toutes les lignes.
Je n'utilise pas GeoServer, mais je sais que MapServer a la fonctionnalité pour faire toutes ces choses. Il est probable que GeoServer le fasse également.
la source