#1 Wed 06 December 2023 19:44
- Ricola62
- Participant assidu
- Date d'inscription: 24 Apr 2012
- Messages: 167
pg_routing: bases
Bonjour,
J'ai réussi à importer via osm2pgrouting le réseau routier d'OSM dans la BDD. j'ai les tables suivantes public.ways, public.ways_vertices_pgr.
J'ai une table restaurant, la question est :comment exploiter les algos de pg routing pour calculer la distance la plus courte et le temps de trajet entre chaque restaurants?
Est ce qu'ils faut créer une requête afin de savoir lequel des nodes est le plus proche ou projeter les pts restaurants dans le réseau routier?
merci d'avance
Dernière modification par Ricola62 (Wed 06 December 2023 22:44)
Hors ligne
#2 Thu 07 December 2023 11:45
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: pg_routing: bases
Bonjour,
Oui, il faut déterminer les vertex du reseau de routes qui sont les plus proches des restaurants: ca sera les points de départ pour le routing.
Les deux méthodes: node le plus proche d'un restau, ou projection du restau dans le graphe se valent je dirais, mais la projection nécessite d'intégrer les points dans le graphe avant de lancer le routing pour que le graphe soit complet.
Si le graphe est prêt, faites d'abord un test avec une requete qui chope le node le plus proche de chaque restau.
Nicolas
Hors ligne
#3 Thu 07 December 2023 16:28
- Ricola62
- Participant assidu
- Date d'inscription: 24 Apr 2012
- Messages: 167
Re: pg_routing: bases
ok merci.
deuxième question les tables ways et ways_vertices_pgr sont en EPSG:4326 , les colonnes cost... sont en degrées .
pour obtenir en mètre agg_cost après exécution de l’algorithme Dijkstra faut il que je transforme la table ways en 3857 ou bien je fais juste un st_length (st_transform(to_geom,3857)) de l’itinéraire final ?
Hors ligne
#4 Thu 07 December 2023 16:35
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: pg_routing: bases
Plutot convertir la colonne cost en metre à partir des ways en 4326.
Ne reprojetez pas en 3857 pour mesurer des distances: la projection déforme beaucoup les données.
Postgis sait calculer des distances en metre pour des data 4326 (geography): c'est beaucoup plus précis.
qq chose comme:
Code:
update ways set cost = st_length(geom::geography);
Nicolas
Dernière modification par Nicolas Ribot (Thu 07 December 2023 16:37)
Hors ligne