OSRM est un moteur de calcul d’itinéraire open source très léger et très efficace qui utilise les données Openstreetmap. Pour les experts, on peut ajouter qu'OSRM se démarque des autres moteurs de calcul d’itinéraires en utilisant l’algorithme Contraction hiérarchies moins répandu que le A* par exemple.
OSRM peut être utilisé en ligne mais également installé sur un serveur ou une station de travail personnelle, ce que vous propose cette page.
Itinéraire entre la place du Châtelet à Paris (point 48,85755 - 2,34727) et le quai des Belges à Marseille (point 43,29528 - 5,37439). Syntaxe du lien : <http://router.project-osrm.org/viaroute?loc=48.85755,2.34727&loc=43.29528,5.37439&instructions=true>
Itinéraire entre le pont de l'Europe à Strasbourg (point 48,57636 - 7,80027) et le pont de Recouvrance à Brest (point 48,38453 / -4,49472). Syntaxe du lien : <http://router.project-osrm.org/viaroute?loc=48.57636,7.80027&loc=48.38453,-4.49472&instructions=true>
Vous allez pouvoir installer cette application sur votre propre ordinateur.
Le résultat du calcul OSRM peut apparaître un peu difficile à lire. Voir en bas de page une suggestion de script pour y voir plus clair.
Installer les paquets : build-essential,git,cmake,pkg-config,libprotoc-dev,libprotobuf9v5,protobuf-compiler,libprotobuf-dev,libosmpbf-dev,libpng12-dev,libbz2-dev,libstxxl-dev,libstxxl-doc,libstxxl1v5,libxml2-dev,libzip-dev,libboost-all-dev,lua5.2,liblua5.2-dev,libtbb-dev,doxygen,checkinstall.
git clone https://github.com/Project-OSRM/osrm-backend.git
cd osrm-backend
mkdir -p build cd build cmake .. make sudo checkinstall --pkgname osrm-backend
cd <répertoire build> mkdir profiles cd profiles ln -s ../../profiles/car.lua cd .. ln -s ../profiles/lib/
Le serveur est installé.
Il convient désormais d'installer les données cartographiques qui seront utilisées pour les calculs de routage.
Le site Geofabrik (par exemple) fournit ce type de données. Par exemple pour la région PACA, se rendre sur : http://download.geofabrik.de/europe/france/provence-alpes-cote-d-azur.html
et télécharger le fichier provence-alpes-cote-d-azur-latest.osm.pbf
La création de la base de données interne produit un fichier assez volumineux. Par défaut, ce fichier est installé sur la partition racine, au risque de saturer l'espace disque disponible si votre système, comme cela est recommandé, est installé sur une partition séparée. Il est donc conseillé de créer dans le répertoire <build> d'osrm un fichier <.stxxl> qui comporte les instructions nécessaires à l'installation des données dans un autre répertoire, situé dans une autre partition.
La syntaxe de l'instruction est la suivante : disque=nom_complet_du_disque,capacité,méthode_d’accès
Il est généralement conseillé d'installer le fichier de la planète entière sur une partition séparée afin de prévenir un grand nombre d’accès disque en lecture/écriture qui ralentissent le fonctionnement.
Exemple de création d'un fichier <.stxxl>
cd build echo "disk=/tmp/stxxl,25000,syscall" > .stxxl
Pour plus d'information (en anglais) : Projet OSRM
Le retraitement du fichier pbf permettra l'élimination des données inutiles pour le routage et leur reformatage aux normes utilisées par Osrm.
Se rendre dans le répertoire <build>
./osrm-extract provence-alpes-cote-d-azur-latest.osm.pbf
fallocate -l 64G memory.swap chmod 600 memory.swap mkswap memory.swap sudo chown root: memory.swap sudo swapon memory.swap
il est ensuite nécessaire de hiérarchiser ces données :
./osrm-contract provence-alpes-cote-d-azur-latest.osrm
C'est fini. Le serveur est fonctionnel.
Le démarrage du serveur s'effectue en ligne de commande. Il suffit de lancer l'executable osrm-routed suivi du chemin vers le fichier .osrm créé avec osrm-extract et osrm-contract. Exemple :
./osrm-routed ../donnees_carto/provence-alpes-cote-d-azur-latest.osrm
Dés le lancement, un certain nombre d'informations sont affichées dans le terminal. Parmi celles-ci, la ligne <running and waiting for requests> indique que le serveur s'est lancé et est prêt à effectuer les calculs demandés :
[info] running and waiting for requests
L'arrêt du serveur se fait par ctrl + C dans le terminal ou bien par la fermeture du terminal.
Si le lancement est effectué en ligne de commande, passer par kill :
kill $(ps -x | grep osrm | grep -v grep | awk '{print $1;}')
L'utilisation d'Osrm se fait dans le navigateur interne en saisissant localhost:5000 comme adresse.
/!\ Documentation complète de l'API disponible sur la page du projet
http://project-osrm.org/docs/v5.15.2/api/#nearest-service
http://project-osrm.org/docs/v5.15.2/api/#general-options
NB : la forme et les options d'appels de l'API ont un peu évolué par rapport aux exemples cités ci-après
La fonctionnalité utilisée pour obtenir un itinéraire est viaroute, suivi des coordonnées des points à relier.
Exemple : pour calculer l'itinéraire entre le quai des Belges à Marseille et la gare SNCF d'Aix en Provence, saisir : http://localhost:5000/viaroute?loc=43.29528,5.37439&loc=43.52339,5.44452&instructions=true
Vous pouvez contrôler le résultat en ligne avec : http://router.project-osrm.org/viaroute?loc=43.29528,5.37439&loc=43.52339,5.44452&instructions=true
Les résultats ne seront pas forcément identiques entre les deux serveurs selon les données figurant dans chacune des bases de donnée mais c'est excessivement proche.
Bien que fort utiles, les informations reçues mériteraient un peu de mise en forme et de retraitement. Le script ci-dessous est une proposition de solution pour y parvenir. Il est certainement très perfectible.
Suite à venir
Pour supprimer cette application, il suffit de supprimer son paquet. Selon la méthode choisie, la configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.
—- Contributeurs principaux : Zococo.
Basé sur « Building OSRM » parDaniel J. H.