Generating graph data from BD TOPO to use for a Chinese Postman problem #55
Description
(Version française en fin de ticket!)
I am trying to create a route that passes through the lanes contained within a polygon (IRIS), to create a map that will support a field survey (a pedestrian team survey route).
- The route must pass through each route at least once;
- The route should be as short as possible.
- The route can eventually leave the polygon and use the adjacent lanes to return to the polygon by another route if this allows optimisation.
This corresponds to the problem of the Chinese postman: https://fr.wikipedia.org/wiki/Probl%C3%A8me_du_postier_chinois
pgRouting seems to be able to calculate these routes: https://docs.pgrouting.org/latest/en/chinesePostmanProblem-family.html.
The data I want to work with is the troncon_de_route layer of the BD TOPO. If I'm not mistaken, I'll have to use route-graph-generator to generate the graphs.
I followed the r2gg README and already made progress. Here is what I've done so far:
- The troncon_de_route layer has been imported into a PostGIS database, on which the postgres_fdw and pgRouting extensions have also been installed;
- The procedures https://github.com/IGNF/pgrouting-procedures are also installed;
- I have adapted the general config file config.json to fit my project. My version is available here: https://mapper.space/tests/r2gg/config.json
- The other config files have also been customized (for log management, database connection management, and cost calculation);
- I finally tried to customize bduni_convert.sql but without much success and this is where I get stuck. Running
r2gg-pivot2pgrouting config.json
gets me numerous SQL errors. Completely modifying the SQL conversion script without errors seems to be beyond my skills at the moment.
I have several questions:
- Am I on the right track?
- Do you have any guidance on what to include in the SQL script? I don't need to get the attribute data from road_section, geometry and georeferencing info would be enough.
- Do you know of any other solution, if possible simpler, to achieve what I am trying to do? (I have already tried the Chinese Postman plugin from QGIS but the plugin has outdated dependencies. I filed a ticket a week ago, with no news yet, and I haven't tried to modify the plugin to fix the dependency issues. It could be a a solution but for the moment I'm focused on r2gg).
Thanks in advance for your feedback :)
Je cherche à créer un itinéraire qui passe par les voies contenues au sein d'un polygone (IRIS), pour créer une carte qui servira d'appui à une enquête de terrain (itinéraire d'enquête d'une équipe piétonne).
- L'itinéraire doit passer par chaque voie au moins une fois;
- L'itinéraire doit être le plus court possible.
- L'itinéraire peut éventuellement sortir du polygone et emprunter les voies adjacentes pour revenir dans le polygone par un autre chemin si ça permet d'optimiser.
Ça correspond au problème du postier chinois: https://fr.wikipedia.org/wiki/Probl%C3%A8me_du_postier_chinois
pgRouting semble être en mesure de calculer ces itinéraires: https://docs.pgrouting.org/latest/en/chinesePostmanProblem-family.html.
Les données à partir desquelles je souhaite travailler correspondent à la couche troncon_de_route de la BD TOPO. Si je ne fais pas erreur, il faut donc que je passe par route-graph-generator pour générer les graphes à partir de la BD TOPO.
J'ai suivi le README et déjà avancé. Voilà où j'en suis:
- Les données troncon_de_route sont importées dans une base PostGIS, sur laquelle les extensions postgres_fdw et pgRouting ont été également installées;
- Les procédures https://github.com/IGNF/pgrouting-procedures sont installées elles aussi;
- J'ai adapté le fichier de config générale config.json pour correspondre à mon projet. Ma version est consultable ici: https://mapper.space/tests/r2gg/config.json
- Les autres fichiers de config ont également été personnalisés (pour la gestion des logs, la gestion des connexions aux bases de données, et pour le calcul des coûts);
- J'ai enfin tenté de personnaliser bduni_convert.sql mais en tatonnant, et c'est ici que ça bloque. Lorsque je lance
r2gg-pivot2pgrouting config.json
, j'ai de nombreuses erreurs lors de l'éxécution du SQL. La modification complète et sans erreur du script de conversion SQL semble être au-delà de mes compétences pour l'instant.
Je me pose donc plusieurs questions:
- Est-ce que je suis sur la bonne voie?
- Auriez-vous des indications sur ce qu'il faut indiquer dans le script SQL? Je n'ai pas besoin de récupérer les données attributaires de troncon_de_route, la géométrie et le géoréférencement suffiraient.
- Auriez-vous connaissance d'une autre solution, si possible plus simple, pour réaliser ce que j'essaye de faire?
(J'ai déjà essayé le plugin Chinese Postman de QGIS mais le plugin a des problèmes de dépendances obsolètes. J'ai déposé un ticket il y a une semaine, sans nouvelles pour l'instant, et je n'ai pas essayé de modifier le plugin pour en corriger les problèmes de dépendances. C'est une solution mais pour le moment je me suis concentré sur r2gg.)
Merci d'avance pour vos retours :)
Activity