Service de calcul d'itinéraire

Magazine
Marque
GNU/Linux Magazine
Numéro
189
Mois de parution
janvier 2016
Spécialité(s)


Résumé
Il peut être très utile de savoir comment se rendre d'un point A à un point B. C'est encore plus utile quand on connaît le temps de trajet estimé. Installons ça chez nous.

Body


Dans cet article, nous allons installer (en compilant) OSRM qui va nous permettre de calculer des itinéraires. Ensuite, nous verrons comment le configurer, où trouver les données et comment les traiter avec OSRM. Enfin, nous aurons un service Web qui répondra aux requêtes d'itinéraire.

1. Installation

Comme pour le précédent article [2], cet article se base sur l'utilisation d'Ubuntu 14.04.

Pour l'instant il n'y a pas de paquets à ma connaissance pour OSRM donc nous allons le compiler ; c'est un logiciel léger donc ça ne va pas prendre trop de temps, rassurez-vous.

Nous allons commencer par installer les logiciels nécessaires à son installation :

$ 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

Le développement a lieu sur GitHub et nous allons télécharger les sources sur ce site. Même si les développeurs ont l'air de faire en sorte que la branche master fonctionne correctement, je trouve plus sûr d'utiliser une release.

Il faut donc aller sur https://github.com/Project-OSRM/osrm-backend/releases afin de trouver la dernière release puis on récupère l'archive tar.gz. À l'heure où ces lignes sont écrites, la dernière version est la v4.7.1. Je vous laisse soit utiliser cette version soit modifier les commandes données pour qu'elles s'appliquent à la version que vous téléchargez. Nous allons créer un répertoire pour mettre les sources. Je vous laisse choisir celui que vous voulez, libre à vous d'utiliser celui que je crée ou non.

$ mkdir ~/osrm-src && cd ~/osrm-src

$ wget https://github.com/Project-OSRM/osrm-backend/archive/v4.7.1.tar.gz 

$ tar xvzf v4.7.1.tar.gz

$ cd osrm-backend-4.7.1

Maintenant, nous allons compiler OSRM. Les commandes sont normalement valables, quelle que soit la version téléchargée. On va créer un répertoire pour compiler OSRM puis générer un makefile à l'aide de cmake. Enfin, on va installer OSRM afin de pouvoir l'utiliser :

$ mkdir build && cd build

$ cmake .. 

$ sudo make install

Maintenant, OSRM devrait être installé si tout s'est déroulé correctement.

2. Configuration

Si vous avez suivi l'installation du serveur de tuiles dans l'article précédent [2], vous devriez déjà avoir les données Openstreetmap dans un fichier pbf. Sinon il faut aller télécharger sur http://download.geofabrik.de/ pour la région que vous souhaitez. Pour changer, je vais utiliser la Bretagne comme exemple pour cet article.

Nous allons créer un répertoire de travail. Encore une fois, vous pouvez utiliser celui que vous voulez.

$ mkdir ~/osrm && cd ~/osrm

OSRM a besoin d'un fichier de profil en Lua pour fonctionner. Rassurez-vous, il y a plusieurs fichiers de profil fournis avec. Ils sont disponibles dans le dossier profiles présent dans l'archive d'OSRM qu'on a téléchargé. Supposons que vous souhaitiez faire du calcul d'itinéraire pour les voitures. On prendra alors le fichier nommé car.lua puis nous créerons un lien symbolique en l'appelant profile.lua :

$ ln -s ~/osrm-src/osrm-backend-4.7.1/profiles/car.lua profile.lua

OSRM est très rapide car il fait une grande partie des calculs avant, ce qu'on appelle du pre-processing. Ce pre-processing utilise une bibliothèque pour gérer l'espace disque [3]. On va donc créer un dossier de travail puis créer un fichier pour dire combien on alloue sous la forme disk=path,capacity,access. J'ai choisi arbitrairement 1G et j'ai laissé les autres options aux valeurs conseillées sur la page précédemment indiquée :

$ echo "disk=/tmp/stxxl,1G,syscall" > .stxxl

Nous allons exécuter deux commandes afin de lancer les calculs du pre-processing. La première commande va préparer les données pour OSRM et la deuxième va calculer les hiérarchies qui permettent au moteur de routage de trouver le chemin le plus court en un temps très rapide.

Puisque ces deux commandes consistent à faire beaucoup de calculs, la rapidité d'exécution de ces commandes dépend de la taille des données en entrée (si vous calculez pour une région de la France, ça ne prendra évidemment pas le même temps que pour toute la planète) et, comme toujours, de la puissance de la machine.

OSRM met les fichiers résultants de son traitement dans le dossier où on lui a donné le fichier source, donc le mieux est de le mettre dans le dossier de travail, qui est dans mon cas ~/osrm :

$ osrm-extract bretagne-latest.osm.pbf

Cette commande a généré un fichier portant le même nom que celui que vous aviez donné en entrée mais qui a comme extension .osrm. C'est ce fichier que nous allons donner à la commande suivante :

$ osrm-prepare bretagne-latest.osrm

Maintenant, OSRM a tout ce dont il a besoin. On va donc utiliser la commande pour lancer le service qui va répondre aux requêtes :

$ osrm-routed bretagne-latest.osrm

Cette commande va alors écouter le port 5000 afin de répondre aux requêtes. Si tout s'est déroulé correctement, la dernière ligne devrait être :

[info] running and waiting for requests

Il suffit alors de prendre son navigateur préféré (donc Firefox :)) pour aller demander un itinéraire afin de vérifier son bon fonctionnement. Je vous invite à vous munir des coordonnées géographiques (en degrés décimaux) de deux points situés dans la zone que vous avez choisie.

On va donc à l'url http://adresse-ip:5000/viaroute?loc=lat1,long1&loc=lat2,long2 en remplaçant les mots lat1 et long1 par la latitude et la longitude du premier point et lat2 et long2 par la latitude et la longitude du deuxième point. Dans mon cas, pour la Bretagne ça donne http://xxx.xx.xx.x:5000/viaroute?loc=48.4574,-4.3650&loc=48.4009,-4.1188 (n'essayez pas d'y voir un quelconque signe des Illuminatis, ce sont deux points au hasard pour vérifier qu'OSRM me donne bien une route).

Conclusion

On a donc installé le service qui permet de faire des calculs d'itinéraire. Il ne reste plus qu'à installer un frontend (tel que osrm-frontend [4]) pour afficher la route directement sur une carte.

Références

[1] Méthode des contractions hiérarchies : https://en.wikipedia.org/wiki/Contraction_hierarchies

[2] JACKOTS D., « Installer son propre serveur de tuiles », GNU/Linux Magazine n°188, novembre 2015.

[3] STXXL : http://stxxl.sourceforge.net/tags/master/install_config.html

[4] Frontend pour OSRM : https://github.com/Project-OSRM/osrm-frontend




Article rédigé par

Par le(s) même(s) auteur(s)

Le nouveau système de queueing de Packet Filter

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
74
Mois de parution
septembre 2014
Spécialité(s)
Résumé

Si vous avez déjà joué avec un BSD, vous devez certainement connaître (et apprécier) Packet Filter (PF), le firewall développé sur OpenBSD. Si ce n'est pas le cas, on a déjà sûrement dû vous en vanter la syntaxe claire par rapport à celle incompréhensible d'iptables (certes, au bout de la 15ème fois qu'on utilise une commande, on commence à se rappeler à quoi sert l'obscure option -machin). Mais quid du queueing avec PF ?

Les derniers articles Premiums

Les derniers articles Premium

Stubby : protection de votre vie privée via le chiffrement des requêtes DNS

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Depuis les révélations d’Edward Snowden sur l’espionnage de masse des communications sur Internet par la NSA, un effort massif a été fait pour protéger la vie en ligne des internautes. Cet effort s’est principalement concentré sur les outils de communication avec la généralisation de l’usage du chiffrement sur le web (désormais, plus de 90 % des échanges se font en HTTPS) et l’adoption en masse des messageries utilisant des protocoles de chiffrement de bout en bout. Cependant, toutes ces communications, bien que chiffrées, utilisent un protocole qui, lui, n’est pas chiffré par défaut, loin de là : le DNS. Voyons ensemble quels sont les risques que cela induit pour les internautes et comment nous pouvons améliorer la situation.

Surveillez la consommation énergétique de votre code

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Être en mesure de surveiller la consommation énergétique de nos applications est une idée attrayante, qui n'est que trop souvent mise à la marge aujourd'hui. C'est d'ailleurs paradoxal, quand on pense que de plus en plus de voitures permettent de connaître la consommation instantanée et la consommation moyenne du véhicule, mais que nos chers ordinateurs, fleurons de la technologie, ne le permettent pas pour nos applications... Mais c'est aussi une tendance qui s'affirme petit à petit et à laquelle à terme, il devrait être difficile d'échapper. Car même si ce n'est qu'un effet de bord, elle nous amène à créer des programmes plus efficaces, qui sont également moins chers à exécuter.

Donnez une autre dimension à vos logs avec Vector

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Avoir des informations précises et détaillées sur ce qu’il se passe dans une infrastructure, et sur les applications qu'elle héberge est un enjeu critique pour votre business. Cependant, ça demande du temps, temps qu'on préfère parfois se réserver pour d'autres tâches jugées plus prioritaires. Mais qu'un système plante, qu'une application perde les pédales ou qu'une faille de sécurité soit découverte et c'est la panique à bord ! Alors je vous le demande, qui voudrait rester aveugle quand l'observabilité a tout à vous offrir ?

Les listes de lecture

8 article(s) - ajoutée le 01/07/2020
Découvrez notre sélection d'articles pour faire vos premiers pas avec les conteneurs, apprendre à les configurer et les utiliser au quotidien.
11 article(s) - ajoutée le 02/07/2020
Si vous recherchez quels sont les outils du DevOps et comment les utiliser, cette liste est faite pour vous.
8 article(s) - ajoutée le 02/07/2020
Il est essentiel d'effectuer des sauvegardes régulières de son travail pour éviter de perdre toutes ses données bêtement. De nombreux outils sont disponibles pour nous assister dans cette tâche.
Voir les 49 listes de lecture

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous