Contenu | Rechercher | Menus
Selon les tags présents sur cette page, les informations qu'elle contient n'ont pas été vérifiées pour les dernières versions LTS depuis Ubuntu 14.04 LTS.
Cette page est en cours de rédaction.
Apportez votre aide…

OSRM

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.

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.

Pré-requis

sudo apt-get install build-essential git cmake pkg-config libprotoc-dev libprotobuf8 protobuf-compiler libprotobuf-dev libosmpbf-dev libpng12-dev libbz2-dev libstxxl-dev libstxxl-doc libstxxl1 libxml2-dev libzip-dev libboost-all-dev lua5.1 liblua5.1-0-dev libluabind-dev libluajit-5.1-dev libtbb-dev

Installation

Télécharger les sources

git clone https://github.com/Project-OSRM/osrm-backend.git

Compiler

Se placer dans le réperoire à l'intérieur duquel les sources ont été téléchargées :

cd osrm-backend

Puis lancer la compilation :

mkdir -p build
cd build
cmake ..
make
sudo checkinstall

Création de liens

cd <répertoire build>
ln -s ../profiles/car.lua profile.lua
ln -s ../profiles/lib/

Le serveur est installé.

Configuration

Il convient désormais d'installer les données cartographiques qui seront utilisées pour les calculs de routage.

Télécharger les données cartographiques

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

Création du fichier .stxxl

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

  • nom_complet_du_disque : chemin complet d’accès au disque depuis la racine : /tmp/stxxl, /mnt/disk0, /media/utilisateur/mon_disque par exemple.
  • capacité : capacité maximale du disque en mégaoctets. Sur le site osrm la valeur 25000 est souvent conseillée, plusieurs posts de forums suggèrent de porter cette valeur à 100000 pour le fichier de la planète entière.
  • méthode_d'accés : à choisr parmi les différentes implémentations d’accès au disque.
    • syscall : appels en lecture/écriture au système qui permettent des transferts directs du disque vers la mémoire paginée de l'utilisateur en évitant les copies superflues (généralement la méthode la plus rapide)
    • mmap : les transferts disques sont réalisés à travers des appels système à mmap et munmap
    • simdisk : simule l'horloge (timings ?) du disque IBM IC35L080AVVA07. nom_complet_du_disque doit pointer sur un fichier situé sur une partition RAM disposant d'un espace disque suffisant.

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
Lorsque la taille du fichier stxxl excède l'espace disponible sur la partition, l'erreur <"External memory block allocation error"> est affichée.

Pour plus d'information (en anglais) : Projet OSRM

Retraitement du fichier pbf

Le retraitement du fichier pbf permettra l'élimination des données inutiles pour le routage et leur reformatage aux normes utilisées par Osrm.

Selon le site officiel, l'extraction de données couvrant la planète tout entière peut prendre plusieurs heures, en fonction essentiellement de la vitesse du disque dur. Avec un ordinateur Core i7 doté de 8 GO de RAM et disposant d'un disque dur (lent) 5400 RPM Samsung SATA, le retraitement d'un fichier PBF à couverture planétaire a duré 65 minutes. Ce temps de traitement est susceptible de varier fortement en fonction des caractéristiques de votre processeur et de votre disque dur. La majeure partie des données est en effet sauvegardée sur disque, la taille de la RAM est réduite et l'extraction des données correspondant à la planète peut constituer des fichiers de 35 GO ou davantage.

Se rendre dans le répertoire <build>

 ./osrm-extract provence-alpes-cote-d-azur-latest.osm.pbf 

il est ensuite nécessaire de hiérarchiser ces données :

./osrm-prepare provence-alpes-cote-d-azur-latest.osrm

C'est fini. Le serveur est fonctionnel.

Utilisation

Démarrage du serveur

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-prepare. 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

Arrêt du serveur

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;}')

Lancement des requêtes

L'utilisation d'Osrm se fait dans le navigateur interne en saisissant localhost:5000 comme adresse.

La fonctionnalité utilisée pour obtenir un itinéraire est viaroute, suivi des coordonnées des points à relier.

Les coordonnées sont saisies en faisant précéder la longitude par la latitude, les résultats d'une inversion de données peuvent être fantaisistes puisque mettant en relation deux points bien différents des points recherchés. Les latitudes nord sont positives, les latitudes sud sont négatives. Les longitudes est sont positives, les longitudes ouest sont négatives (selon le méridien de Greenwich évidemment).

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.

Pour connaître les coordonnées géographiques d'un point particulier, le site http://tile.openstreetmap.fr/ permet de faire apparaître en bas à droite de l'écran les coordonnées du point survolé par le curseur de la souris. Utile pour un usage occasionnel, probablement pas si vous avez fait le choix d'installer OSRM. En effet, dans ce cas on peut supposer que vous disposez déjà d'un nombre conséquent de coordonnées géographiques organisées en base de données.

Retraiter les données

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

Désinstallation

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.

L'utilisation de checkinstall au lieu de make install lors de l'installation permet une suppression de paquet pour des applications compilées par l'utilisateur. C'est donc checkinstall qui a été utilisé ci-dessus.

Voir aussi

—- Contributeurs principaux : Zococo.

Basé sur « Building OSRM » parDaniel J. H.



Le contenu de ce wiki est sous licence : CC BY-SA v3.0