Taponjou Kenfack Carlos Gael

publicité
Université de Douala
Master 2 Géomatique
« Informatique Appliquée aux Systèmes
d’Information Géographique » (IASIG)
Rapport de Projet Personnel de Géomatique
Implémentation des 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 spatiale "Postgis/postgreSQL"
Présenté par :
Taponjou Kenfack Carlos Gael
Année académique 2014-2015
1
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
Résumé
Les problèmes liés au déplacement dans un réseau routier est une
problématique de plus en plus ancrer dans des recherches scientifiques ces
dernières années. Notamment dans les possibilités de déplacement des véhicules
que celui du déplacement des piétons. Ce rapport présente des implémentations
des algorithmes de routages dans des réseaux routiers en se basant sur la
bibliothèque pgRouting.
Les algorithmes de Dijksta, A-Etoile et Shooting-Star sont donc dans ce domaine
largement utilisé pour la détermination des itinéraires de coût minimal dans des
réseaux routiers de plus en complexe pour leurs souplesses et analyses dans le
traitement des données. Toutefois, ces algorithmes ont des particularités en ce
qui concerne le traitement des données, la création des topologies de réseaux et le
choix des variables.
Les données routières traitées dans cette thématique sont généralement issues
des bases de données propriétaires ou des services cartographiques en ligne tel
que OpenStreetMap, GoogleMap et bien d’autre.
Abstract
Problems related to the movement in a road network is an issue increasingly
anchored in scientific research in recent years. Especially in cars traveling
opportunities than the pedestrian movement. This report provides
implementations of routing algorithms in road networks based on pgRouting
library.
Algorithms Dijksta, A-Star and Shooting Star are widely used in this area to
determine the minimum cost routes in road networks of more complex for their
suppleness and analysis in the data processing. However, these algorithms have
features regarding the processing of data, creation of network topologies and the
selection of variables.
Road data processed in this theme are usually derived from proprietary
databases or online map services such as OpenStreetMap, GoogleMap and many
other.
2
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
Sommaire
Introduction……………………………………………………………………………….
4
1- PRESENTATION DE POSTGIS/POSTGRESQL………………………………... 5
1.1-
Postgis…………………………………………………………………………... 5
1.2- PostgreSQL……………………………………………………………………….. 5
1.3- Installation de PostgreSQL et Postgis………………………………………... 5
2- PRESENTATION DE pgRouting…………………………………………………….. 5
2.1- Librairie pgRouting……………………………………………………………… 5
2.2- Installation de pgRouting……………………………………………………….. 5
3- FONCTIONNALITES DE ROUTAGES SUR UN RESEAU
ROUTIER…………………………………………………………………………………. 6
3.1- Présentation…………………………………………………………………....... 6
3.2- Problématique du plus court chemin dans un réseau routier…………..... 7
3.3- Principe de l’algorithme du plus court chemin dans le cas
général……………………………………………………………………………………..
7
3.4- Implémentation de quelques algorithmes de routage…………………….
7
3.4.1- Algorithme de Dijkstra…………………………………………………… 7
3.4.1.1- Prérequis de cet algorithme .…………………………………….
7
3.4.1.2- Fonction avec paramètres………………………………………… 8
3.4.2- Algorithme A-Etoile……………………………………………………… 8
3.4.2.1- Prérequis de cet algorithme...……………………………………. 8
3.4.2.2- Fonction avec paramètres………………………………………… 9
3.4.3- Shooting-Star………………………………………………………………… 9
3.4.3.1- Prérequis de cet algorithme .……………………………………... 9
3.4.3.2- Fonction avec paramètres………………………………………. 10
3.5- requêtes de routage……………………………………………………………..
10
3.5.1- Coûts pondérés……………………………………………………………… 10
3.5.2- Restriction d’accès…………………………………………………………… 11
4- Application dans un réseau routier……………………………………………….. 11
4.1- Exemple de réseau routier……………………………………………………... 11
4.2- Fonctionnalité shortest_path_astar()………………………………………… 11
CONCLUSION…………………………………………………………………………… 16
BIBLIOGRAPHIE……………………………………………………………………….. 17
3
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
Introduction
Les progrès scientifiques ont bouleversés depuis quelques décennies la manière
d’appréhender le déplacement des Hommes dans un réseau routier. Notamment
dans le domaine de l’informatique, les applications qui ont été développées
proposent des calculs des itinéraires de déplacements optimaux, et la gestion du
trafic routier dans des réseaux de plus en plus complexe des grandes métropoles.
Ces applications proposent des possibilités de déplacement d’un point à l’autre
dans un réseau en utilisant des données issues du grand projet de
développement tel que : OpenStreetMap, googleMap et bien d’autres.
C’est ainsi que, dans le cadre de notre formation il m’a été proposé d’implémenté
des fonctionnalités de routage dans un réseau routier en se basant sur la
bibliothèque pgRouting, qui est une extension de la base de données
Postgis/PostgreSQL.
Dans la suite de cet ouvrage, nous présenterons d’un premier temps la base de
données Postgis/postgreSQL et la librairie pgRouting, ensuite nous montrerons
comment importé les données d’un réseau routier et nous allons appliquer nos
algorithmes de routage sur ce réseau pour optimiser le trajet d’un point à l’autre.
4
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
1-PRESENTATION DE Postgis/PostgreSQL
1.1-Postgis
Postgis est une extension de la base de données PostreSQl. Elle ajoute à
postgreSQL une cartouche spatiale permettant de traiter les données
géographiques.
1.2-PostgreSQL
Disponible sous licence BSD (Berkeley Software Distribution License)
PostgreSQL est un SGBDR (Système de Gestion de Base de Données
Relationnelle) très populaire, libre et très performant. Ce Système dont de
nombreuses entreprises professionnelles l’utilisent, permet le stockage et la
gestion des grandes quantités d’informations.
1.3-Installation de PostgiSQL/pgRouting
L’installation de PostgreSQL sous Windows est une opération très simpliste.
Une fois PostgreSQL installé, nous pouvons intègres sa cartouche spatial Postgis,
ou téléchargé sa version exécutable à l’adresse http://www.postgis.org/download.
Pour cela rendons nous a l’adresse suivante pour télécharger l’application
spostgreSQL: http://www.postgresql.org/download/ et suivons les instructions
d’installation.
2-PRESENTATION DE pgRouting
2.1- Librairie pgRouting
pgRouting est une extension de PostGIS qui ajoute les fonctionnalités de
routage au couple PostGIS/PostgreSQL. pgRouting avant appelé pgDijkstra, est
un développement antérieur à pgDijkstra .Plus tard d’autres fonctionnalités se
sont ajoutées et la bibliothèque fut renommée.
Cette librairie contient désormais l’implémentation des algorithmes
suivants :





Plus court chemin Dijkstra
Plus court chemin A-Etoile
Plus court chemin Shooting-Star
Problème du voyageur de commerce (TSP)
Distance de pilotage (Isolines)
2.2- Installation de pgRouting
L’installation de pgRouting sur Windows est extrêmement simple du fait de la
disponibilité des fichiers compressés dans la plate-forme Winnie.
Téléchargeons le fichier compressé de pgRouting correspondant à notre système
d’exploitation depuis winnie.postgis.net - /download/windows/pg93/buildbot/.
5
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
 Décompressons le fichier et vérifions qu’il contient les dossiers bin, lib et
share et deux fichiers text.
 Copions ces dossiers et fichiers dans le répertoire C:\Program
Files\PostgreSQL\9.2, ainsi l’installation est faite
Tapons la commande CREATE EXTENSION pgrouting; pour créer l’extension
pgrouting
 Pour vérifier que pgRouting s’est bien installé :

 Taper la commande SELECT pgr_version(),et vous auriez un message
similaire a ceci : "(2.0.0-dev,v2.0.0-beta,18,a3be38b,develop,1.46.1)", tout dépendra
de notre version
3- FONCTIONNALITES DE ROUTAGES SUR UN RESEAU ROUTIER
3.1-Présentation
La problématique de routage a fait l’objet de plusieurs recherches dans le
monde scientifique, il a été étudié dans de très nombreux problèmes, allant du
fameux « voyageur de commerce » au plus court chemin, notamment en passant
par la gestion de trafic dans une approche purement dynamique et très complexe
(réseaux de télécommunication, réseaux routiers, réseaux électriques…). La
problématique du voyageur de commerce est l’un des plus anciens dans ce
domaine, sa première formulation mathématique connue remonte à 1930. La
plupart des problèmes de routage sont de complexité polynômiale et ont conduit
depuis a de très nombreuses recherches, tant sur des aspects purement
théoriques, que sur des heuristiques spécialisées.
De manière générale, nous pouvons distinguer deux types d’algorithmes : ceux
cherchant une réponse en garantissant le principe d’optimalité et ceux cherchant
une solution acceptable sans garantir l’optimalité de la solution.
Ces approches s’appuient sur la théorie des graphes. Pour des problèmes les
mois difficiles (algorithme de complexité polynomiale), des algorithmes
séquentiels et dynamiques sont alors utilisés de façon efficace. Les plus connus
sont :
 Dijskstra : Cet algorithme permet de rechercher le chemin le plus court
dans un graph
 A* : est une extension de de l’algorithme de Dijkstra et basé sur des graphs
de petites distances
 Problem du plus court chemin :Shooting-Star
 Problème du voyageur de commerce (TSP)
 Distance de pilotage (Isolines)
6
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
3.2-PROBLEMATIQUE DU PLUS COURT CHEMIN dans
un Réseaux Routier
La problématique qui nous intéresse peut être simplement décrite par la
question suivante

Comment déterminer l’itinéraire le plus rapide dans un réseau routier
donnée ?
Dans le cadre de notre travail, nous allons utiliser les fonctionnalités de
pgRouting et les données provenant d’OpenStreetMap pour un réseau de route
donnée pour implémenter notre solution au problème posé dans la suite de notre
projet avec un exemple bien précis.
3.3 Principe de l’algorithme du plus court chemin dans le cas général
Soit le graphe valué G= (S, A, V) et X0 le sommet, nous voulons connaitre pour
chaque sommet S la distance et un plus court chemin de X0 à S.
Les problématiques de recherches de distances et de plus court chemin dans
l’implémentation des algorithmes sur des graphes valués fonctionne en générale
de la façon suivante.



Nous pouvons calculés les distances d(X0, S) par approximation
successives. A un niveau donné de l’algorithme, on dispose d’estimation
d(S) (éventuellement égales a +∞) pour ces distances, et de la donnée d’un
prédécesseur P(S) pour les plus courts chemins.
Dans étape, nous considérons un sommet X et successeur Y de X. On peu
alors comparer la valeur d(Y) à celle que l’on obtiendrait en passant par X,
c’est –à-dire d(X) + V(Y)
Si cette deuxième valeur est plus petite que d(Y), on remplace l’estimation
d(Y) par d(X) + V(X, Y) et le père P(Y) par X.
3.4 Implémentation de quelques algorithmes de routage
3.4.1 Algorithme de Dijkstra
L’algorithme de Dijkstra fut la toute première implémentation dans
pgRouting, il utilise des graphes orientés ou non ayant des coûts ou valeurs
positifs. Cet algorithme est basé sur des sommets et nécessite une utilisation des
champs sources et target
3.4.1.1-Prérequis de cet algorithme
Dans le cas où nous voulons être en mesure d’utiliser un coût de parcourt
inverse, nous devons ajouter une colonne de coût
La requête correspondante est la suivante :
7
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
ALTER TABLE tronçon_route ADD COLUMN reverse_cost double precision ;
UPDATE tronçon_route SET reverse_cost = length;
3.4.1.2-Fonction avec paramètres
Shortest_path ( ‘sql’ text;
source integer,
target integer,
directed Boolean,
has_reverse_cost Boolean);
3.4.2- Algorithm A-Etoile
L’algorithme A-Etoile est une extension de Dijkstra, il est également bien
connu dans le domaine de la recherche des itinéraires. Il donne des informations
sur la position géographique du début et fin des tronçons, permettant ainsi de
faire une rechercher mettant l’accent sur les tronçons proches du point d’arrivée
de la recherche.
3.4.2.1- Prérequis de cet algorithme
Pour cet algorithme, il est impérativement souhaitable de préparer les tables de
réseau et d’ajouter les colonnes/latitude (X1, Y1 et X2, Y2) et de calculer leurs
valeurs.
Les requêtes correspondantes sont les suivants :
ALTER TABLE tronçon_route ADD COLUMN x1double précision;
ALTER TABLE tronçon_route ADD COLUMN y1double précision;
ALTER TABLE tronçon_route ADD COLUMN x2double précision;
ALTER TABLE ways ADD COLUMN y2double precision;
UPDATE tronçon_route SET x1 = x (ST_startpoint(the_geom));
UPDATE tronçon_route SET y1 = y (ST_startpoint(the_geom));
UPDATE tronçon_route SET x2 = x (ST_endpoint(the_geom));
UPDATE tronçon_route SET y2 = y (ST_endpoint(the_geom));
UPDATE tronçon_route SET x1 = x (ST_Point (the_geom, 1));
UPDATE tronçon_route SET y1 = y (ST_Point (the_geom, 1));
UPDATE tronçon_route SET x2 = x (ST_Point (the_geom,ST_NumPoints(geom)));
UPDATE tronçon_route SET y2 = y
(ST_PointN(the_geom,ST_NumPoints(geom)));
8
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
3.4.2.2- Fonction avec paramètres
Une grande similitude existe entre l’algorithme de recherche A-Etoile et
l’algorithme de Dijkstra, cet algorithme est plus optimale lorsque les tronçons
sont plus proche du point d’arriver de la recherche. Ainsi nous pouvons définir les
heuristiques de recherche et les utilisateurs de cet algorithme pourront
recompiler pgRouting dans le cas d’un éventuel besoin de modification de ces
heuristiques.
La requête de routage de l’algorithme A-étoile est la suivante :
shortest_path_astar( ‘sql’ text,
source integer,
target integer,
directed boolean,
has_reverse_cost boolean ) ;
3.4.3 Algorithme de recherche Shooting-Star
Cet algorithme est le tout dernier algorithme de recherche de chemin le plus
court. Spécialisé dans la recherche du parcours d’un tronçon à un autre, et non
d’un sommet à un sommet à l’instar des algorithmes comme celui de Dijkstra et
A-Star, elle nous a permis de définir une relation entre les tronçons et cela nous
permet de résoudre des problèmes liés aux recherches d’un sommet à un autre.
Comme par exemple les tronçons parallèles qui ont des sommets de début et fin
équivalents mais de diffèrent coût.
3.4.3.1- Prérequis de cet algorithme
Pour l’implémentation de cet algorithme, nous aurions besoin de préparer nos
tabes de réseau et d’y ajouter les colonnes rule et to-cost. Comme l’algorithme A* cet algorithme possède également une fonction heuristique qui donne
l’avantage aux plus proches tronçons du point d’arrivée.
Les requêtes suivantes ajoutent les colonnes rule et to-cost
ALTER TABLE ways ADD COLUMN to_cost double precision;
ALTER TABLE ways ADD COLUMN rule text;

L’algorithme de recherche Shooting-Star introduit des nouvelles
attributions
9
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
Attribut
Description
Rule
Une chaine de caractères contenant une liste d’identifiants
de tronçon séparés par une virgule, qui
Décrivent le sens giratoire (si vous venez de ce tronçon,
vous pouvez rejoindre le suivant en ajoutant un
Coût défini dans la colonne to_cost)
Pour passer d’un tronçon a l’autre il faut une certaine
dépense en Coût
To_cost
3.4.3.2- Fonctions avec paramètres
La requête de routage de l’algorithme Shooting-Star :
shortest_path_shooting_star( sql text,
source integer,
target integer,
directed boolean,
has_reverse_cost boolean )
3.5- Requêtes de routage
Les requêtes de routages dans un réseau routier pour la détermination de
chemin le plus cours dans une approche générale sont définis de la manière
suivante.
Soit la requête :
SELECT * FROM shortest_path_shooting_star(
’SELECT gid as id,source,target,length as cost, x1, y1, x2, y2,
rule, to_cost, reverse_cost FROM ways’, 6585, 8247, true, true);
Généralement, dans la théorie des graphes les longueurs des arcs sont
représentés ou définis par des coûts. Ces coûts peuvent être représentés par
toutes mesures de valeurs positives ou négatives, cela dépendra de la
problématique qu’on se pose, par exemple le temps, la surface, le type de routes,
etc... Et donc les paramètres de combinaison sont définis par des coûts pondérés.
3.5.1-Coûts pondérés
Diffèrent choix peuvent s’opérer sur la recherche d’un plus court chemin
optimale dans un réseau routier, il peut arriver que nous voulions pouvoir
rechercher un réseau routier de coût minimal mais de distance longue soit de
minimiser la distance et maximiser les coûts. En d’autres termes, nous voulons
10
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
calculer le plus court chemin mais pas le chemin le moins cher. En conclusion,
nous ne pouvons pas restreindre la définition des coûts dans un réseau.
3.5.2 Restriction d’accès
Nous pouvons restreindre l’accès à des routes dans un réseau routier donnée soit
en affectant un coût très élevé à un tronçon ayant un certain attribut ou en
s’assurant de ne sélectionner aucun des tronçons sélectionnés.
La requête suivante permet de mettre à jour les coûts des routes ayant le
dénominateur commun motorway.
UPDATE classes SET cost=100000 WHERE name LIKE ’motorway%’;
On peut également utilisant des sous-requêtes pour “mixer” nos coûts comme
cela nous semble et les résultats obtenus seront directement modifiés. Lors des
mises à jour des coûts, il sera impératif de reconstruire le réseau pour effectuer
des recherches de chemin plus le court dans des requêtes avenirs
Nous pouvons à partir de la clause WHERE dans une requête supprimé une
certaines classe de tronçon.
Requête supprimant un tronçon dans le réseau :
SELECT * FROM shortest_path_shooting_star(
’SELECT gid as id, class_id, source, target, length*c.cost as cost,
x1,y1,x2,y2,rule,to_cost,reverse_cost*c.cost as reverse_cost
FROM way as w, classe as c
WHERE class_id=c.id AND class_id!=111’, 6585, 8247, true, true);
Nous pouvons utilisés toutes les requête supportées par Postgis/PostgreSQL dans
pgRouting.
4- Application dans un réseau routier (tiré de « pgRouting calcul de
l’itinéraire »
4.1- Exemple de réseau routier
Pour appliquer les fonctionnalités de routage dans notre réseau routier donné,
nous pouvons procède de deux manières : Soit nous importons les données
routiers à partir d’une source de données, soit nous créons nos propres données
correspondant à un réseau routier.
Dans le cas de notre application nous allons importer nos données à partir
d’OpenStreetMap qui est une source de données routière.
4.1.1-Chargement des données dans notre base
11
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
Le schape qui va illustre notre devoir ici est fourni à l’adresse
http://www.davidgis.fr/download/troncon_route.zip Une fois le fichier dézippé, comme à
l’accoutumée nous pouvons donc l’importé dans Postgis à partir BD manager
sous Qis.
Les données géométriques du schape en question visualisé sur Qgis
Figure1 : le réseau routier d’une ville vue sur Qgis.
Pour le moment, on a que des tronçons, et pour la suite, nous devons définir les
nœuds du réseau que nous allons utiliser.
Ils seront obtenus en utilisant les instructions SQL suvantes :
ALTER TABLE tronçon_route ADD COLUMN x1double precision;
ALTER TABLE tronçon_route ADD COLUMN y1double precision;
ALTER TABLE tronçon_route ADD COLUMN x2double precision;
ALTER TABLE tronçon_route ADD COLUMN y2double precision;
UPDATE tronçon_route SET x1 = x (ST_startpoint(geom));
12
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
UPDATE tronçon_route SET y1 = y (ST_startpoint(geom));
UPDATE tronçon_route SET x2 = x (ST_endpoint(geom));
UPDATE tronçon_route SET y2 = y (ST_endpoint(geom));
UPDATE tronçon_route SET x1 = x (ST_Point (geom, 1));
UPDATE tronçon_route SET y1 = y (ST_Point (geom, 1));
UPDATE tronçon_route SET x2 = x (ST_Point(geom, ST_NumPoints(geom)));
Ainsi on a la figure suivante :
Figure 2 : Représentation des nœuds du réseau
4.2- Fonctionnalité shortest_path_astar()
 Exemple pour les noeuds 38 et 48.
Nous allons dans ce cas créer la table allée

Pour l'aller (source=38 et target=48)
Ainsi, nous pouvont execute la requite suivante
CREATE TABLE aller(gid int4) WITH oids;
SELECT ST_AddGeometryColumn( 'aller', 'geom', -1, 'MULTILINESTRING', 2 );
13
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
INSERT INTO aller(geom)
(
SELECT geom FROM troncon_route WHERE edge_id IN
(SELECT edge_id FROM shortest_path_astar('SELECT
id,source,target,cost,
reverse_cost, x1,y1,x2,y2 FROM troncon_route_edges',38,48,false,true)
)
);
END TRANSACTION;

Ce qui me donnera le résultat suivant
Figure 3 : Parcours à l’aller

Pour le retour (source=48 et target=38)
Nous pouvons exécute la requete suivante:
CREATE TABLE retour(gid int4) WITH oids;
SELECT ST_AddGeometryColumn( 'retour', 'geom', -1, 'MULTILINESTRING', 2 );
INSERT INTO retour(geom)
(
SELECT geom FROM troncon_route WHERE edge_id IN
(SELECT edge_id FROM shortest_path_astar('SELECT
id,source,target,cost,
reverse_cost, x1,y1,x2,y2 FROM troncon_route',48,38,false,true)
)
14
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
);
END TRANSACTION;

Ce qui nous donne le résultat suivant :
Figure 4 : Parcours au retour
15
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
Conclusion
Ce rapport présente les recherches effectuées pour l’implémentation des
fonctionnalités de routage dans un réseau routier. Nous avons d’un premier
temps présenté et installé les outils qui nous ont servis d’étude dans ce projet, et
nous avons dans un second temps mis en exergue les problématiques de routage
dans les réseaux routiers que nous avons apporté des solutions à partir d’une
application dans un réseau données. Toutefois nous nous sommes heurtés à des
difficultés tant techniques que tactiques lors des traitements des données et donc
nous consacrerons à profit notre temps dans une certaine continuité pour
résoudre ces problèmes.
16
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
Bibliographie
1. A. Juttner, B.Szviatovszki, I. Mec, and Z.Rajko, “Lagrange relaxation
based methode for the Qos routing problem,” 2001.
2. Daniel Kastl , Frédéric Junod, Travaux Pratiques – Routage FOSS4G avec
pgRouting, le réseau routier d’OpenStreetMap et GeoExt version 2
3.OpenMoko.org,“GTA02outlinefootprints,”
Webographie
En ligne <http://Travaux pratiques - Routage FOSS4G avec les outils de pgRouting, le
reseau routier d’OpenStreetMap et GeoExt.html>. Consulté le 20 Mais 2015
17
Master2 IASIG Douala 2014-2015 – par Taponjou Kenfack Carlos Gael
Téléchargement