Open MaelREBOUX opened 2 years ago
Purée : ça fonctionne en version 3.2.1 !
pgr_dijkstraVia('SELECT id, source, target, cost, reverse_cost
FROM osm_roads_pgr', ARRAY[2443, 2360])
pgr_dijkstraVia('SELECT id, source, target, cost, reverse_cost
FROM osm_roads_pgr', ARRAY[2443,2437,2360])
pgr_dijkstraVia('SELECT id, source, target, cost, reverse_cost
FROM osm_roads_pgr', ARRAY[2443,2437,2425,2360])
pgr_dijkstraVia('SELECT id, source, target, cost, reverse_cost
FROM osm_roads_pgr', ARRAY[2443,2437,2425,2419,2360])
Bien bien bien.
Il reste à traiter le pb des ronds-points mais logiquement ceux-ci identifiés par le tag junction=roundabout
.
Sauf que actuellement cette information ne remonte pas dans la couche osm_road_pgr
. cf https://github.com/osm-bzh/ar_redadeg/blob/5b4dcdd49b9fdea04ffe3bde1f6781e74d48ba82/scripts_v2/create_osm_roads.sh#L99-L117
Reste à voir comment indiquer à PgRouting que seuls les ronds-points sont orientés.
Ensuite, pour privilégier les routes automobiles il va falloir introduire un nouvel attribut penality
et mettre un plus gros poids sur les modes doux. Voir exemple ici
Note de https://www.camptocamp.com/en/news-events/pgrouting-as-a-decision-making-aid
Dijkstra It is THE shortest path algorithm. Unfortunately, it’s not really efficient on a large graph.
Disposer d'une base Bzh entièrement routable -> faisable.
Mais comment pour calculer une route entre 2 nœuds via des nœuds intermédiaires avec une seule requête ?
On trouve la fonction
pgr_dijkstraVia
qui semble répondre à ce besoin (https://docs.pgrouting.org/latest/en/pgr_dijkstraVia.html) mais ce n'est pas une fonction officielle.De toute façon, pour chaque secteur, il faut gérer une table de points de passage avec un ordre.