Osm a récemment ajouter le routage c'est chouette.
je dois fournir un service de ce type avec l'ordre des étapes à suivre, en France métropolitaine. Je souhaiterai héberger les data pour ne pas être limité en nombre de requêtes /s pour un usage immodéré pendant 2 heures puis plus rien pendant 24 h ou un mois.
j'ai du coup un ou deux souci de compréhension des différentes étapes. Et c'est l'occasion de faire un joli thread.
Les différentes étapes:
Installation d'un outil de géocodage
d'une adresse une position en lat lon
Installation d'un outil de routing
transformer les positions en nœud
de deux nœuds un chemin en voiture (le plus court)
de plusieurs nœuds les chemins les plus courts
itinéraire la somme des chemins les plus court
indiquer l'ordre des points sur un fond et tracer les chemins.
Génération des images (fusion fond et itinéraires ou installation d'un outils de visualisation
Installation ou création d'une API pour les requêtes par le logiciel client.
Automatiser les update et les contrôles de cohérences.
geocodage
J'ai donc installé (je commence par l’île de France) la BAN avec addok ! Excellent ça geocode
avec un retour Point lon lat {"coordinates": [2.344467, 48.81407],"type": "Point"}
routing
Puis j'ai intégré les data osm (tjs IDF) depuis geofabrik à l'aide de osm2pgrouting
la version actuel semble générer automatiquement la topologie.
Code : Tout sélectionner
osm2pgrouting --conf /usr/share/osm2pgrouting/mapconfig_for_cars.xml --file IDF.osm --dbname france -U umap --clean --password XXX --addnodes
Avec l'extension pgrouting on peut calculer un chemin sur le graph
quelles méthodes pgrouting pour passer de lon lat à un noeud ?
en postgis j'ai trouvé ça :
Code : Tout sélectionner
SELECT * FROM osm_nodes ORDER BY the_geom <-> ST_GeometryFromText('POINT(2.359597 48.81407)',4326) LIMIT 1;
Pour le chemin entre deux points
Code : Tout sélectionner
SELECT seq, node, edge, cost
FROM pgr_dijkstra('SELECT gid as id, source, target,length as cost FROM ways',66275,77801, false);
on reçoit une liste de noeuds.
On peut se demander si on peut passer un liste de nœud en deuxième arguments, comme des point de passage, mais l'ordre sera surement respecté.
pareil il faut encore étudier les fonction pgrouting.
Si vous avez des propositions
outils de visualisation
j'ai vu ça en licence MIT ultra léger et requête deux services à remplacer dans le code et changer la génération du point d'arrivé.
j'ajouterai le dépôt ici quand ce sera fait.
j'ai bien vu osrm mais c'est tout packadgé et je ne saurai pas l'adapter. plutôt du python
j'ai vu aussi sur le wiki simpleosmrouter
mais il charge en mémoire directement le fichier de données, dans le code je ne l'ai pas vu écrire donc à chaque démarrage ..

et 5 ans sans commit

Merci de vos conseils