MASTER II -INFORMATIQUE APPLIQUEE AUX SYSTEMES D INFORMATIONS GEOGRAPHIQUE (M2 - IASIG) PROJET PERSONNEL GEOMATIQUE : IMPLEMENTATION DES FONCTIONNALITES DE ROUTAGE DANS UN RESEAU ROUTIER EN SE BASANT SUR LA BIBLIOTHEQUE OPEN SOURCE PGROUTING QUI EST UNE EXTENSION DE LA BASE DE DONNEE SPATIALE POSTGIS/POSTGRESQL. Application sur le réseau routier de la ville de Garoua Cameroun Par : MOSKOLAI Waytehad Rose Juillet 2015 Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 1
SOMMAIRE INTRODUCTION... 3 I. Concepts généraux... 4 I.1- Fonctionnalités de routage... 4 I.2- pgrouting... 4 I.3- Caractéristiques de pgrouting... 5 I.4- Outils nécessaires... 5 II. Implémentation... 7 II.1- Prérequis... 7 II.2- Algorithme plus court chemin Dijkstra : pgr_dijkstra... 13 II.3- Algorithme plus court chemin tous les couples Johnson : pgr_apspjohnson... 15 II.4- Algorithme Plus court chemin A-Etoile : pgr_astar... 16 II.5- Algorithme plus court chemin bidirectionnel A* : pgr_bdastar... 17 II.6- Les autres algorithmes... 17 CONCLUSION... 19 Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 2
INTRODUCTION Au cours de la formation M2 IASIG (Master II en Informatique Appliquée aux Systèmes d Informations Géographiques), de l université de Douala, en partenariat avec l Agence Universitaire de le Francophonie, l Ecole Nationale des Sciences Géographiques de France et l Université Paris Est Marne la Vallée, chaque étudiant doit mener, avant son stage académique de fin de formation, une étude exploratoire sur un thème d actualité relevant de la géomatique. L optimisation des transports urbains et interurbains par l implémentation des algorithmes de routage dans les réseaux routiers étant un domaine en pleine expansion, notre choix de sujet dans le cadre du présent projet personnel géomatique a porté sur la bibliothèque OpenSouce pgrouting qui est une extension de la base de données géo spatiale Postgis/PostgreSQL. Cette bibliothèque propose plusieurs fonctionnalités dont celles de routage grâce à divers algorithmes tel que l algorithme de Dijkstra qui permet le calcul du plus court chemin entre 2 points dans un réseau par exemple. L objectif ici est de présenter les techniques pour implémenter les fonctionnalités de routage dans un réseau routier existant en se basant sur la bibliothèque. Pour y arriver, il sera question, dans le présent rapport, de présenter d abord les différents concepts liés autour du sujet pour mieux s imprégner de la technologie et ensuite, d expliquer toutes les étapes nécessaires conduisant à l implémentation des fonctionnalités de pgrouting sur un réseau routier réel, à l occurrence celui de la ville de Garoua (Nord Cameroun). Nous partirons ainsi des installations des outils requis à la visualisation des résultats sur QGis. Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 3
I. Concepts généraux I.1- Fonctionnalités de routage Selon l encyclopédie libre WIKIPEDIA, un réseau routier est défini comme «l'ensemble des voies de circulation terrestres permettant le transport par véhicules routiers, et en particulier, les véhicules motorisés (automobiles, motos, autocars, poids lourds...)». Pour optimiser les déplacements dans un tel réseau, plusieurs algorithmes de routage, (dont l ensemble constitue les fonctionnalités de routage), ont été élaborés par les chercheurs parmi lesquelles on peut citer : - Plus court chemin Dijkstra : c est un algorithme de routage sans heuristique, - Plus court chemin A-Étoile utilisant deux directions, - Algorithme de Johnson, Plus Court Chemin de tous les couples - Distance de conduite - Voyageur du commerce - Plus Court Chemin avec Restriction de Virage - Plus court chemin Shooting-Star : routage prenant en compte le sens giratoire - Distance de pilotage (Isolines). - Etc. L un des tous premiers algorithmes de recherche du plus court chemin entre deux points dans un réseau routier fut celui de Dijkstra, publié la première fois en 1959. En effet, l algorithme qui porte le nom de son inventeur l informaticien Néerlandais Edsger Dijkstra, s'applique à un graphe connexe dont le coût des arcs est un réel positif. En fonction de l objectif recherché, le poids des arcs peut prendre différentes valeurs : la distance lorsqu on recherche le chemin le plus court, le temps estimé pour ce qui est du trajet le plus rapide ou alors la quantité de carburant utilisée et le prix des péages en ce qui concerne le parcours le moins couteux. Cet algorithme trouve ainsi son utilité dans le calcul des itinéraires routiers et constitue un véritable outil d aide à la décision. I.2- pgrouting Une des applications de l'algorithme de Dijkstra se trouve dans la bibliothèque OpenSource pgrrouting qui est extension de la base de données Postgis/postgreSQL. Cette bibliothèque permet d implémenter les algorithmes de routage ainsi que d autres fonctionnalités d analyse de réseau routier. Entrepris au cours de l année 2005 par la société CampToCamp, pgrouting implémentait seulement l algorithme de Dijkstra pour le calcul du plus court chemin et portait alors le nom de pgdijkstra. Par la suite, en 2006, d autres fonctions supplémentaires se sont ajoutées et la bibliothèque a changé de nom pour devenir pgrouting. Cet outil est disponible sous licence GPLv2 et est maintenu par la communauté Géorepublic qui regroupe des entreprises, des particuliers et des organisations. L utilisation des systèmes de gestion des bases de données pour les algorithmes de routage est très avantageuse : Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 4
- L organisation des données est bien faite et les données facilement consultable ; - A partir des postes clients tels que QGIS ou udig, ou même directement à partir des requêtes de PostgreSQL, les différents champs ainsi que leurs valeurs peuvent être modifiés ; - Sont considérés comme clients les ordinateurs (PCs) ou les périphériques mobiles ; - Les modifications effectuées sur les données sont capables d être reflétées directement par le moteur de routage, aucun calcul préalable n est nécessaire ; - L utilisation de l extension spatiale Postgis de postgresql permet de mettre sur pied des applications complètes dans le domaine des SIG ; - Le paramètre coût peut être calculé dynamiquement par des requêtes SQL et peut correspondre à la valeur de plusieurs champs ou tables. I.3- Caractéristiques de pgrouting La nouvelle version 2.0 de pgrouting apporte plusieurs innovations parmi lesquelles on peut citer : - Compatibilité avec PostgreSQL 9.1 ou plus récent ; - Compatibilité avec PostGIS 2.0 ou plus récent ; - Graph Analytics ce sont des outils qui permettent de déterminer et de résoudre certains problèmes liés aux connexions dans un graphe ; - Ajout du préfixe pgr_ aux fonctions et types ; - Intégration de plusieurs nouvelles fonctions utiles ; - Prise en compte de 02 nouveaux algorithmes de calcul du plus court chemin toutes paires dans un graphe (pgr_apspjohnson et pgr_apspwarshall) ; - L algorithme pgr_trsp du plus court chemin à virage restreint (pgr_trsp) qui remplace Shooting Star ; - Amélioration du processus build pour Windows ; - Conception en librairie modulaire. I.4- Outils nécessaires Afin d implémenter correctement les fonctionnalités de routage en se basant sur pgrouting, les outils suivants doivent être téléchargés et/ou installés. - Le système de gestion de base de données postgresql version 9.2 avec l extexsion postgis version 2.0. Cet outil est téléchargeable sur le site http://www.postgresql.org/; - Bibliothèque pgrouting dans sa version 2.0 disponible à l adresse suivante http://www.pgrouting.org. - Un réseau routier open-source : OpenStreetMap (OSM) "OpenStreetMap a pour objectif de créer et fournir des informations géographiques libres telles que des plans de rue à toute personne le désirant. Le projet fut démarré car la plupart des cartes qui semblent libres ont en fait des restrictions d utilisation légales ou techniques, empêchant de les utiliser de manière créative, productive ou tout simplement selon vos souhaits." Source http://wiki.openstreetmap.org/wiki/fr:portal:press Une fois téléchargées, les données OSM peuvent être utilisées librement sans restriction technique, ce qui fait d elle une parfaite source de données pour pgrouting. Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 5
Les données OSM peuvent être téléchargées à partir de QGIS, Geofabrik Downloads, BBBike, HOT Exports ou directement à partir de l adresse http://www.openstreetmap.org/. - Un outil d importation: OSM2PO Les données de réseau routier téléchargées directement depuis OSM ne sont pas exploitables dans leur état initial. En effet, des traitements supplémentaires doivent être effectués pour les rendre compatible avec pgrouting. Aussi, une autre alternative serait d utiliser des outils open source d importation tels qu osm2pgrouting, osm2pgsql ou osm2po qui chargent des données directement aux formats acceptables par pgrouting. Dans notre projet, nous allons utiliser OMS2PO qui peut fonctionner sur système Windows ou linux. - Quantum GIS version Brighton (verion 2.6.1) disponible à l adresse www.qgis.org/ pour la visualisation des rendus. Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 6
II. Implémentation II.1- Prérequis - Téléchargement et installation de pgrouting Premièrement, faudrait se rassurer que PostgreSQL ainsi que l extension Postgis sont correctement installés sur votre ordinateur. Par la suite, se rendre sur le site http://www.pgrouting.org pour télécharger la bibliothèque. On note ici que pour utiliser la version 2.0 de pgrouting, il faut installer au moins PostgreSQL 9.1 et Postgis 2.0. Une fois le fichier zip téléchargé, en extraire le contenu (trois dossiers bin, lib et share ainsi que deux fichiers textes) ; copier ce dossier dans le dossier d installation de PostgreSQL qui est par exemple dans notre cas «C:\Program Files\PostgreSQL\9.2» L installation de pgrouting est ainsi terminée. La prochaine étape juste après l installation est celle de créer une base de données avec le template postgis et d intégrer les fonctionnalités de routage à la base de données : o soit en exécutant la requête SQL qui va créer l extension postgis et pgrouting CREATE DATABASE mon_ppg ; CREATE EXTENSION postgis; CREATE EXTENSION pgrouting; o soit à partir de pgadminiii (click droit sur la base de donnée, ajouter un objet, ajouter une extension). Pour vérifier que tout fonctionne correctement, interroger la base par la requête «SELECT pgr_version() ;» vous devriez avoir en retour la version de pgrouting installée. Figure 1 : Version installée On peut également vérifier si les extensions ont bien été prises en compte en déroulant la ligne Extension de la base de données créée. Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 7
Figure 2 : extensions disponibles Notre base de données étant créée, il est question à présent de télécharger notre réseau routier à partir de http://www.openstreetmap.org/. Pour notre projet nous avons choisi de travailler sur le réseau routier de la ville de Garoua, qui se trouve dans le nord du Cameroun. Figure 3 : réseau routier de Garoua sur OpenStreetMap On clique sur «Exporter» et on recadre manuellement la zone à exporter si on le souhaite. - Extraction de données OSM o Méthode 1 : extraction par couches thématiques grâce aux requêtes SQL Les données OSM téléchargées contiennent toutes les couches disponibles du réseau routier (multilignes, lignes, polygones, points) or pgrouting travaille uniquement sur les données de type ligne. Ainsi nous allons voir ici comment extraire uniquement les routes. A cet effet, sachons que dans OpenStreetMap, la clé du fichier XML "highway" correspond aux routes. Nous devons donc avant tout nous assurer de ce que dans osmconf.ini, au niveau de l élément Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 8
«lines», la valeur highway figure dans la liste des attributs. Dans le fichier de configuration, il est également possible d insérer d autres clés utiles pour notre couche route telles que les clés oneway pour les voies à sens uniques, tunnel, bridge pour les ponts, etc. Figure 4 : Contenu XML de la couche OSM extraite Figure 5: extrait du fichier osmconf.ini La création du Shape file contenant notre extraction se fera alors par la requête suivante : ogr2ogr -f "ESRI Shapefile" roads.shp -sql "select osm_id, name, ref, highway AS "type", oneway, bridge, tunnel, maxspeed from lines where highway is not null" Garoua_map.osm Nous obtenons alors le Shape File roads.shp qu on peut tout aisément charger et visualiser dans QGIS. Figure 6 : Visualisation du réseau routier de Garoua après extraction sur QGIS (couche roads.shp) Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 9
On retrouve généralement les colonnes suivantes dans les Shape files générés : «gid» qui est l identifiant de tronçon routier «class_id» qui est la classe du tronçon «length» qui est la longuer du tronçon routier «name» qui est le nom du tronçon Et la colonne «the_geom» qui représente la géométrie du tronçon Pour charger le Shape file dans la base de données postgresql, on utilise d abord la commande suivante qui prend en entrée le Shape file roads.shp et écrit les instructions qui vont construire la table routes. Cette requête SQL à taper dans l invite de commande en une seule ligne va enregistrer les instructions de création de la table dans le fichier routes.sql : C:\Program Files\PostgreSQL\9.2\bin>shp2pgsql -g the_geom -I -W LATIN1 "E:\test_pgrouting\Garoua\roads.shp" routes > routes.sql Une fois le fichier routes.sql créé, il faut ensuite l intégrer dans notre base de données mon_ppg. Il sera ensuite possible d interroger la table pour en voir le contenu. psql -d mon_ppg -h localhost -U postgres f routes.sql Figure 7 : Appercu du contenu de la table «routes» dans PostgreSQL Cependant, les informations contenues dans notre table ne suffisent pas pour implémenter les fonctionnalités de routage car la table ne contient pas encore d informations sur la topologie du réseau. Nous devons pour cela effectuer encore des étapes supplémentaires telles que l ajout de plusieurs colonnes telles que les colonnes source ou target, l ajout des index ou la création de la topologie réseau à l aide de l instruction SQL «SELECT pgr_createtopology( routes, 0.000001, the_geom, id );». Nous constatons qu en utilisant la méthode 1, il ya trop d étapes préparatoires avant l utilisation des données extraites. Par la suite nous présenterons donc comment éviter toutes ces manipulations en utilisant un outil d importation tel que osm2po qui convertit directement les données pour qu elles soient utilisables par pgrouting. Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 10
o Méthode 2 : utilisation de l outil OSM2PO Osm2po est à la fois un «moteur de routage» et un importateur de données OSM compatibles à pgrouting. Il a été écrit en Java et son utilisation nécessite que l ordinateur sur lequel on travaille soit dotée d un environnement Java. OSM2PO fonctionne aussi bien sur Windows que sur système Unix/Linux. Pour utiliser correctement cet outil, les étapes suivantes doivent être suivies : - Premièrement, télécharger la dernière version osm2po-4.8.8.zip disponible dans le site http://osm2po.de ; - Extraire le contenu du fichier.zip ; - Copier et renommer le fichier demo.bat - Modifier le contenu du fichier.bat en remplaçant l url qui se termine par.pbf par le chemin de votre fichier OSM, nous obtiendrons alors une ligne ressemblant à la suivante : Java -Xmx1408m -jar osm2po-core-5.0.0-signed.jar prefix=hh tilesize=x, "E:\test_pgrouting\garoua\map_garoua.osm". Si Java ne se trouve pas dans le dossier d installation de votre système d exploitation, il faudra mettre le chemin total d accès à java et non tout simplement java. Par exemple sur notre poste Windows, on devra mettre «C:\Program Files (x86)\java\jre7\bin\java» - Exécutez la commande en double-cliquant sur le fichier.bat: si tout se passe bien un fichier SQL hh_2po_4pgr.sql est généré et se trouve dans le dossier hh. - Ce fichier généré sera donc la table sur laquelle les traitements seront effectués car elle contient déjà tous les attributs nécessaires pour implémenter les fonctions de routage avec pgrouting. Figure 8 : exécution de la commande.bat L utilisation de l outil d importation osm2po procure d énormes avantages : - Osm2po est gratuit ; Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 11
- Osm2po importe les données OSM et les rends directement routable, plus aucun autre traitement ne sera à appliquer sur la table générée ; - Osm2po est capable de convertir un jeu de données important, pour tout un continent par exemple ; - Osm2po génère les fichiers SQL compatible avec pgrouting et QGISS ; - Osm2po crée la topologie de réseau ; - Osm2po fonctionne sur Windows, Unix et Mac. Il faut juste avoir au préalable Java 6+ installé ; - Osm2po ne dépend pas de librairie étrangère ; - Osm2po est très facile d utilisation, aucune installation n est nécessaire. Une fois le fichier hh_2po_4pgr.sql généré, il suffit de l intégrer dans notre base de données PostgreSQL tel que nous l avons fait précédemment dans la méthode 1 et on pourra de même voir le contenu de la table dans PostgreSQL : psql -d mon_ppg -h localhost -U postgres f hh_2po_4pgr.sql Figure 9 : aperçu de la table hh_2po_4pgr dans PostgreSQL Par la suite on crée la topologie sur la table hh_2po_4pgr à l aide de la requête SELECT pgr_createtopology( hh_2po_4pgr, 0.000001, geom_way, id ); qui va construire la table hh_2po_4pgr_vertices_pgr qui représente les nœuds ou intersections entre les différentes routes. On peut afficher les couches dans QGIS : Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 12
Figure 10: Aperçu du réseau routier de Garoua dans QGIS avec étiquetage sur les nom des rues Figure 11 : Aperçu des couches hh_2po_4pgr et hh_2po_4pgr_vertices_pgr du réseau routier de Garoua dans QGIS avec étiquetage par les id des points Nos données étant prêtes, il ne reste plus qu à appliquer les différents algorithmes. II.2- Algorithme plus court chemin Dijkstra : pgr_dijkstra Cet algorithme renvoie le plus court chemin entre deux points dans un réseau routier en utilisant l algorithme Dijkstra. Exemple d application sur le tronçon délimité par les points 835 et 844. SELECT seq, id1 AS node, id2 AS edge, cost FROM pgr_dijkstra ( SELECT id, source, target, cost FROM hh_2po_4pgr,835, 844, false, false); Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 13
Figure 12 : Résultat de l algorithme de Dijkstra sur PostgreSQL Création d une vue sur la requête précédente pour afficher le résultat sur QGIS create view al_djikstra as SELECT seq, id1 AS node,id2 AS edge, pt.cost, geom_way FROM pgr_astar ('SELECT id, source, target, cost, x1, y1, x2, y2 FROM hh_2po_4pgr', 844, 835, false, false) as dis JOIN hh_2po_4pgr pt ON dis.id2 = pt.id; Figure 13 : création de la vue Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 14
Figure 14 : Plus court chemin pour aller du point 835 à 844 Algorithme Dijkstra II.3- Algorithme plus court chemin tous les couples Johnson : pgr_apspjohnson Cet algorithme permet calculer le plus court chemin entre toutes les paires de sommets dans le réseau. SELECT seq, id1 AS from, id2 AS to, cost FROM pgr_apspjohnson ( SELECT source, target, cost FROM hh_2po_4pgr ); Après l exécution de la requête, nous obtenons en résultats 1 167 762 lignes représentant le nombre de paires de nœuds dans le graphe. Figure 15 : Algorithme plus court chemin tous les couples Johnson - pgr_apspjohnson Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 15
II.4- Algorithme Plus court chemin A-Etoile : pgr_astar Le présent algorithme retourne le plus court chemin en utilisant l algortithme A* (A Etoile) Exemple : on applique l algorithme sur le segment 844 984 cette fois-ci, sans reverse_cost SELECT seq, id1 AS node, id2 AS edge, cost FROM pgr_astar ( SELECT id, source, target, cost, x1, y1, x2, y2 FROM hh_2po_4pgr, 844, 984, false, false); Figure 16: Plus court chemin pour aller du point 835 à 984 Algorithme A-Etoile Créons à présent la vue pour cette requête puis chargeons la couche dans QGIS Figure17 : Plus court chemin pour aller du point 844 à 984 algorithme A-Etoile Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 16
Maintenant appliquons l algorithme avec reverse_cost, on obtient le même résultat. Figure18: Plus court chemin pour aller du point 844 à 984 algorithme A* II.5- Algorithme plus court chemin bidirectionnel A* : pgr_bdastar pgr_bdastar nous renvoie le plus court chemin entre 2 points en utilisant l algorithme bidirectionnel A*.Ceci est un algorithme de recherche bidirectionnel A*, d une source vers une destination et vice versa. Exemple sans reverse_cost : SELECT seq, id1 AS node, id2 AS edge, cost FROM pgr_bdastar( SELECT id, source, target, cost, x1, y1, x2, y2 FROM hh_2po_4pgr, 4, 10, false, false); II.6- Les autres algorithmes - pgr_trsp : il permet de retourner le plus court chemin avec support pour les restrictions de virage. - pgr_bddijkstra : détermine le plus court chemin en utilisant l algorithme bidirectionnel Dijkstra. - pgr_apspwarshall : cet algorithme permet de retourner tous les coûts pour chaque paire de nœuds dans le graphe. Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 17
- pgr_kdijkstracost : qant à lui renvoie les coûts pour les K plus courts chemins en utilisant l algoithme Dijkstra. - pgr_kdijkstrapath : toujours à partir de l algorithme de Dijkstra, il permet de retourner les chemins pour les K plus courts chemins. - pgr_ksp : algorithme qui retourne les K plus courts chemins. - pgr_tsp : Voyageur du commerce Pour plus de précision sur l implémentation des fonctionnalités de routage, se référer à la documentation de pgrouting disponible à l adresse suivante : http://docs.pgrouting.org/2.0/fr/pgroutingdocumentation.pdf Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 18
CONCLUSION Arrivé au terme de notre projet, nous pouvons dire que l objet visé a été atteint. En effet, il était question d implémenter les fonctionnalités de routage dans un réseau routier en se basant sur la bibliothèque OpenSource pgrouting qui est une extension de la base de données géospatiale Postgis/PostgreSQL. Pour ce faire, nous avons dans un premier temps défini les systèmes de routage et pgrouting, présenté les fonctionnalités de la bibliothèque et les outils nécessaires pour cette implémentation. Par la suite, nous avons présenté de façon pratique l implémentation de quelques algorithmes de routage sur le réseau routier de la ville de Garoua (Nord Cameroun). Nous avons constaté au cours de cette étude que pgrouting est capable de fonctionner avec des données de diverses sources. Aussi, pour faciliter l utilisation des réseaux routiers extraits à partir d Open Street Map par exemple, il existe des outils qui permettent d importer des données directement exploitables par pgrouting tel que celui utilisé dans le cadre de ce projet à savoir OSM2PO. Par la suite, il pourrait être intéressant, de se pencher sur la réalisation d une application web ou mobile interactive, qui fournirait des services de routage en temps réel. Master 2 IASIG, Projet Personnel Géomatique, par MOSKOLAI Waytehad Rose juillet 2015 Page 19