Académique Documents
Professionnel Documents
Culture Documents
Effectu par : Jamal HANIN Stage effectu sous lencadrement de M. Karim CHRAIBI: Directeur Gnral (TRC) M. ElHassan ELBRIRCHI (EHTP)
Gestion de flotte
Gestion de flotte
REMERCIEMENTS
Il mest agrable dexprimer ma reconnaissance auprs de toutes les personnes, dont lintervention au cours de ce projet, a favoris son aboutissement.
Ainsi, je tiens remercier mes encadrants M. Karim CHARIBI et M ELHassan ElBRIRCHI pour leurs directives prcieuses et leurs conseils pertinents qui mont t dun appui considrable dans ma dmarche.
Je ne me permets pas doublier de remercier mes amis M. Yousri BenABDELLAH et Jamal BAAMRANI pour leur amabilit et leurs aides durant toute la priode du Projet de Fin dEtudes.
Je noublierai point de macquitter de vifs remerciements envers tous nos professeurs et corps administratif de lEHTP pour les agrables annes que nous avons vcues sous leur bienveillance.
Que tous ceux qui mont aid, de prs ou de loin, trouvent ici lexpression de mes sentiments les meilleurs. Jamal
Gestion de flotte
RESUME
Ce rapport est le fruit du travail ralis dans le cadre du projet de fin dtudes au sein de la socit TRC. Ce projet avait pour objectif de concevoir et mettre en oeuvre une application de gestion de flotte. Cest un projet dune trs grande envergure, il a pour objectif la gnralisation de lemploi du SIG et son intgration dans les mthodologies habituelles de travail. La golocalisation des vhicules fait appel lutilisation des trames GPS qui sont envoyes priodiquement via le rseau GPRS au serveur central, qui son tour fait appel aux services du serveur web cartographique GoogleMaps pour laffichage. La ralisation du projet a fait appel lutilisation de nouvelles technologies du Web de la plate forme J2EE. Le systme devrait tourner sur le serveur dapplication Apache Tomcat. Il utilisera le systme de gestion de base de donnes MySql.
Gestion de flotte
Gestion de flotte
Glossaire
Points Of Interest (POI) : Ils sont des points fixes qui ont un intrt pour lentreprise, il peut tre un client, un dpt, un fournisseuretc. Cest chaque point qui pourrait tre utile pour lentreprise. Point darrt (PA): Cest un point darrt dun vhicule pendant un parcours donn, chaque vhicule qui sest arrt pendant une dure donne dans un point, ce dernier est considr comme un point darrt. Trajet : Cest litinraire suivi par un vhicule pour aller dun point un autre entre deux temps prcis. Parcours : Cest lensemble des trajets effectus pendant une mission donne. Vhicule : Tout quipement mobile: voitures, camionnettes, camions, autocars, bus, engins de chantiers, remorques, conteneurs, bateaux, etc. Dispatcher Le dispatcher est un organisateur qui officie dans une entreprise de transport routier. Il organise, supervise et contrle lacheminement en amont (ramassage) et la livraison des marchandises dans la perspective de la meilleure rentabilit possible. Il occupe videmment une fonction dencadrement dquipe. Le dispatcher dune entreprise de transport tudie lordre de lexpditeur qui a fabriqu la marchandise transporter : destinations, dlais de livraison, distances, conditions de circulation, tonnages, valeur du fret, scurit, cots, etc. Laller comme le retour doivent tre pris en considration. En tant que planificateur il distribue ensuite le travail de ramassage/acheminement aux chauffeurs. Il supervise ou tablit lui-mme les documents lis lopration : numro de la commande, coordonnes du chauffeur, itinraire, dsignation du matriel de transport Il contrle le suivi de lopration. Grce aux moyens de communication (GPS et GPRS), il peut suivre sur son ordinateur la position du fret au cours du trajet. GPS : Le GPS est un systme de positionnement par satellites, capable de donner n' importe o sur le globe une position entre quelques mtres et quelques centimtres, de jour comme de nuit. La partie visible est un petit botier lectronique qui, quel que soit lheure et le lieu, indique: lendroit exact, laltitude, la vitesse, lheure, et ce avec rapidit et prcision. L'inconvnient de ce systme est quil est incapable de donner des mesures prcises dans les zones fortement urbanises dont le signal est difficilement captable. GPRS : Le GPRS est une extension du protocole GSM : il ajoute par rapport ce dernier la transmission par paquets. Cette mthode est plus adapte la transmission des donnes. En effet, les ressources ne sont alloues que lorsque des donnes sont changes, contrairement au mode circuit en GSM o un circuit est tabli et les ressources associes pour toute la dure de la communication.
Gestion de flotte
Gestion de flotte
Conclusion Gnrale .......52 Bibliographie et URLographie .54 Annexe A : Etude de lexistant .....56 Annexe B : Exemple du code .....61
Gestion de flotte
Introduction
La socit TRC (Tl Ressource Contrle) a pour mission la mise en place des systmes de suivi des vhicules pour les acteurs du transport. Elle a initi pour cela un projet de gestion de flotte. Ce projet a pour objectif doptimiser les trajets travers la mise en place dun systme dinformation gographique qui remplacera les mthodes traditionnelles utilises pour effectuer les livraisons. Cette application se base sur les technologies GPS, la tlcommunication GPRS, et le service web cartographique GoogleMaps. Mon travail de fin dtudes au sein de la socit TRC visera concevoir et raliser une application qui permet aux dispatchers de mieux grer leurs flottes et de suivre en temps rel les vhicules sur la carte. Enfin, ce document est compos de six chapitres. Le premier prsente le projet dune faon gnrale. Le deuxime chapitre est consacr au contexte gnral du projet. Le troisime chapitre est rserv lanalyse du systme. Le quatrime chapitre est rserv la conception et la modlisation de la solution. Les deux derniers chapitres, respectivement, justifient les choix technologiques et la ralisation du projet.
Gestion de flotte
Chapitre
Ce premier chapitre donne une prsentation gnrale du projet. On commence par prsenter lorganisme daccueil ensuite on introduit dune manire globale le projet.
I. Prsentation du projet
Au sein dune socit, qui a pour mission doffrir aux gestionnaires de flottes de vhicules un systme de golocalisation par GPS sur un fond cartographique web. Javais loccasion de joindre lquipe du projet qui ntait constitue que de deux personnes qui ont dj initi une tude approfondie du systme, ainsi que la ralisation dune maquette du projet. Pour sintgrer au sein de lquipe, mon encadrant ma propos le choix entre trois sous projets du projet global : Projet 1 : La mise en place dune passerelle entre les donnes GPS et le serveur central. Ce projet se devise en deux modules : Module 1 : La configuration de lappareil denvoie de donnes GPS au serveur central qui va tre embarqu au sein du vhicule golocaliser. Module 2 : Prparer une interface qui va tre capable dintercepter les donnes GPS, de les traiter et les enregistrer dans le serveur.
Projet 2 : Ce projet ressemble au premier, il consiste configurer un appareil denvoie de donnes GPS au serveur. Sauf que cet appareil ncessite le dveloppement dune application sous J2ME (Java 2 Mobile Edition) pour pouvoir le configurer. Projet 3 : Raliser en se basant sur les donnes GPS traites dans le serveur central et le serveur web cartographique GoogleMaps une application de gestion de flotte. Ce projet se divise en trois grands modules : Module 1 : Golocalisation des vhicules en temps rel. Module 2 : Golocalisation des vhicules en temps diffr. Module 3 : Gestion des points dintrt. A cela sajoute un autre module qui est la planification des oprations de livraisons. Finalement, jai choisi le troisime projet, parce quil est le plus proche du domaine SIG, aussi parce que le sujet tait intressant, puisquil offre lopportunit de savoir de prs les techniques de golocalisation.
11
Chapitre
Dans ce chapitre nous allons voir le contexte gnral du projet, dont nous dtaillons la problmatique gnrale, et les fonctionnalits du systme. Nous terminons en fin par une tude dun systme existant.
12
I. Objectif
1. But du projet La ralisation et la mise en place d'une solution de gestion de flotte de vhicules; en se basant sur les nouvelles technologies de positionnement par GPS et de communication GPRS et offrant aux entreprises un suivi de vhicules en temps rel et diffr. 2. Pourquoi Une analyse de situation des oprations de livraisons des produits dune entreprise X, dont les mthodes traditionnelles sont fortement utilises, nous a montr qu'il y a une anarchie dans la gestion des oprations de dispatching des vhicules . En effet, les dispatchers qui travaillent avec une liste des adresses en labsence de toute vision gographique des points de livraisons, dterminent les zones de travail en se basant uniquement sur leurs expriences. De leur part, les livreurs, et dans l'absence d'une dfinition prcise de la mission demande se basent sur leurs connaissances gographiques pour effectuer les oprations de livraisons. La livraison finalement s'effectue avec un cot lev. Les dispatchers sont donc incapables de dfinir les parcours suivre pour chaque vhicule et du coup rduire les kilomtres inutiles. 3. Comment
Tenant compte de la prsente problmatique, nous avons envisag de raliser un outil d'aide la dcision afin d'optimiser les ressources et amliorer la qualit des services offerts par l'entreprise pour ses clients. La solution se divise en trois grandes parties: La gestion du parc de vhicules via une mthode de golocalisation donnant n'importe quel moment la possibilit de visualiser la position du vhicule sur un fond cartographique. La gestion des POI (points d'intrt) qui permettra aux superviseurs de saisir en premier degr les points de livraisons. Une saisie qui tiendra compte aussi bien de la position gographique sur la carte, que des donnes attributaires lies ce point. La planification et le contrle des missions terrain, o le dispatcher peut planifier pour chaque vhicule un parcours de plusieurs trajets suivre pour une mission donne, il donne ensuite une estimation de la dure de chaque trajet. Afin de mettre en place un tel systme on doit: Premirement : Construire la grande base de donnes des points d'intrts du client La saisie se passe d'abord par le positionnement sur la carte, les points d'intrt, ensuite la saisie des donnes attributaires de ces points (Nom, Adresse, Tlphone etc.), il faut dire qu'une grande problmatique se pose ici, aussi bien pour le gestionnaire de la base de donnes que pour le client en tant qu'utilisateur final de lapplication, surtout si on sait que la base de donnes ne concerne pas un seul client, mais, au contraire, elle concerne plusieurs clients. Pour cela on doit prvoir auparavant une base de donnes dynamique qui rpond aux besoins spcifiques de chaque client. En outre, le client peut avoir un souci par rapport aux services proposs, puisquil sera amen mettre sa base de donnes dans le serveur central de lentreprise, qui est le centre
Gestion de flotte
d'installation de tous les clients, ce qui n'est pas toujours vident, du point de vue fiabilit et confidentialit des donnes. Deuximement : Concevoir lapplication de golocalisation. En se basant sur les nouvelles technologies de golocalisation par GPS et de communication par GPRS, on donne un outil qui permet de visualiser la position de n'importe quel vhicule nimporte quel moment sur la carte. Voici quelques fonctionnalits de lapplication de golocalisation:
Savoir la position du vhicule n'importe quel moment ainsi que son conducteur. Savoir les vhicules les plus proches d'une adresse donne. Savoir le parcours exact de tel vhicule durant telle journe. Savoir si les vhicules dpassent souvent les limitations de vitesses, quand et o ? Savoir l'heure exacte dont les conducteurs commencent et finissent leur travail Dtecter toute utilisation des vhicules en dehors du temps de travail. Savoir le temps pass par les conducteurs aux arrts prvus et si ils font des arrts imprvus. etc.
Golocalisation
Palnification
14
Gestion de flotte
1. La golocalisation des vhicules Elle permet le suivi en temps rel et diffr de l'ensemble du parc de vhicules de l'entreprise. Un suivi qui se traduit par laffichage des positions actuelles et des trajets historiques des vhicules sur un fond cartographique. La position du vhicule doit tre dans la mesure du possible une information significative en se basant sur le principe de gocodage inverse qui consiste traduire les donnes GPS (Longitude, Latitude) vers une adresse comprhensible par lHomme. Cette procdure de gocodage inverse se limitera dans un premier temps traduire la position en se basant sur la base de donnes gographiques disponible. 2. La gestion des points d'intrt (POI) Elle permet une saisie simple des points d'intrt de l'entreprise. Les POI sont de type client, fournisseur, dpt,etc. On s'intresse pour chaque point savoir sa position gographique ainsi qu'un ensemble de donnes attributaires : Le nom, l'adresse, le tlphone,etc. L'application doit offrir une simplicit d'utilisation concernant la manipulation des POI par des utilisateurs finaux qui ne sont pas senss connatre les SIG. 3. La planification Elle permet la planification des missions de terrain. Elle consiste affecter pour chaque vhicule un parcours suivre tout en estimant le temps de chaque trajet. La construction des trajets se fait par la dfinition des points de dpart et d'arrive. La planification concerne essentiellement les oprations de livraisons. Pour chaque mission on prcise la description de la livraison, la date, les trajets et lestimation des dures.
15
Gestion de flotte
La planification passe par deux tapes principales, On saisie dabord les oprations de livraisons qui doivent seffectuer une date prcise. Cest le rle du manager qui doit prparer auparavant la liste des commandes livrer. Dans un temps ultrieur, le dispatcher doit partir de ces commandes saisies, planifier les missions de terrain, en spcifiant les vhicules, les conducteurs, les trajets et les temps estims. Le rle de dispatcher est de planifier travers cette fentre les oprations de livraisons. Il dfinit les trajets dans le but davoir le meilleur parcours possible. Le systme ensuite doit interagir pour calculer le plus court chemin, ainsi que la dure de chaque trajet. Lutilisation des mthodes destimation est lie essentiellement la disponibilit de la base de donnes routire, ainsi quaux donnes du trafic collectes directement partir du terrain (Voir chapitre 4)
16
Gestion de flotte
Chapitre
Analyse du systme
Dans ce chapitre nous dcrivons un systme offrant une solution au problme de gestion de flotte qui est base sur lintgration des technologies : systme dinformation gographique (SIG), global positioning system (GPS) et General Packet Radio Service (GPRS). Une problmatique dune grande importance dans ce systme est de pouvoir faire le routage dun vhicule entre deux points donns.
17
Gestion de flotte
18
Gestion de flotte
Serveurs internes
Client Terrain
Serveurs externes
Gestion de flotte
pour afficher un vhicule sur la carte. En dpendance de son statut : un vhicule peut tre en tat stand by, en train de livrer une commande ou retournant au dpt. 2. Trouver un point de livraison. Bas sur ladresse donne par le manager, le systme peut utiliser la fonction de gocodage dadresses pour trouver les cordonnes du client sur la carte. Toutefois, ladresse du client nest pas toujours utile, cest le cas par exemple, lorsque le client est localis dans une rgion qui nest pas couverte par la base de donnes spatiales. 3. Choisir le vhicule appropri pour une opration de livraison. Suivant la position du vhicule, le type et la location du client et les conditions du trafic, le SIG trouve le vhicule appropri pour accomplir la mission. Le choix du vhicule dpend aussi de la nature des produits livrer. Routage du vhicule au dpt et du dpt au client. Le systme trouve le chemin optimal qui correspond aux exigences du manager. La distance plus les donnes du trafic sont prises en considration. Le dpt va tre dtermin suivant la nature de la commande. Telles informations vont tre dduites de la communication entre le dispatcher et le manager travers le systme.
20
Gestion de flotte
Chapitre
Dans ce chapitre nous allons dtailler le systme du point de vue analyse et conception. On a utilis UML qui est un langage orient objet parfaitement adquat pour ce projet. La conception stend sur deux points principaux : La conception du systme de gestion et dadministration de lapplication La conception du systme SIG dont nous dtaillons principalement la gestion du rseau routier. La conception du systme de golocalisation.
21
Gestion de flotte
I. Cas dutilisation
Le systme est divis en deux types : Systme basic avec une seule fonctionnalit et systme professionnel avec fonctionnalits avances. Le premier systme a pour objectif de mettre la disposition de tout le monde travers le web un petit outil daide la dcision concernant la gestion des points dintrt (POI). Cependant le deuxime systme est plus professionnel et qui ne concerne que les entreprises et qui donne plus de fonctionnalits oprationnelles ddies la gestion de flotte de vhicules. 1. Systme basic Cest un systme basic qui permet la gestion des POI pour nimporte quel utilisateur inscrit.
Le cas dutilisation Grer POI donne la possibilit dajouter, de modifier ou de supprimer un POI, il inclut le cas dutilisation SAuthentifier , impliquant que lutilisateur doit sauthentifier avant de pouvoir grer les POI. La cas dutilisation Sinscrire enrichie celui de SAuthentifier indiquant que lutilisateur peut sinscrire dans le cas o il na pas encore un compte.
22
Gestion de flotte
2. Systme professionnel Cest un systme plus avanc qui ne concerne que les entreprises dont linscription est effectue uniquement par ladministrateur du systme. Il contient les trois modules cits avant : Golocalisation, Gestion des POI et Planification, avec un accs complet aux diffrentes fonctionnalits. Il donne pour chaque entreprise deux niveaux dadministration : le manager qui a la responsabilit de grer les POI de lentreprise ainsi que la planification des commandes et le dispatcher qui a la responsabilit de planifier les missions de terrain, ainsi que le suivi des vhicules.
Le cas dutilisation Planifier commandes permet de planifier les commandes livrer en une date prvue. La planification des commandes livrer est effectue en deux tapes : Tout dabord, saisir les informations attributaires qui concernent les commandes livrer. Ensuite, prciser gographiquement les lieux de livraisons. Le cas dutilisation Planifier missions terrain concerne la planification des missions terrain des vhicules. On ne peut planifier sur le terrain que les commandes dj planifies par le manager. Le cas dutilisation Golocaliser permet le suivi en temps rel et diffr des vhicules et permet au dispatcher davoir la position dun vhicule nimporte quel moment. Le cas dutilisation Inscrire concerne uniquement ladministrateur et permet de faire linscription des entreprises dans le systme. Tous ces cas dutilisation font appel celui de Sauthentifier avant dtre appels.
23
Gestion de flotte
2. Planifier Missions terrain Le dispatcher se prsente devant un terminal: (1) Le systme lui demande de s'authentifier. (2) Le dispatcher donne son identification (login, mot de passe). (3) Le dispatcher choisit lopration planification des missions terrain parmi les diffrentes oprations proposes.
24
Gestion de flotte
(4) Le systme lui affiche lensemble des commandes planifies, lensemble des POI, lensemble des vhicules et lensemble des conducteurs. Il met ensuite le dispatcher en mode simulation (5) Le dispatcher entre en mode simulation qui lui permet de planifier les trajets avec la libre possibilit de modifier ou supprimer. (6) Le dispatcher valide sa planification finale. (7) Le systme lui demande la confirmation. (8) Le dispatcher confirme la planification. (9) Le systme valide la planification et lenregistre dans la base de donnes. Variante 1 En (2) le client n'est pas reconnu, dans ce cas, tant qu'il n'est pas reconnu, le systme lui demande de s'authentifier Variante 2 En (8) le dispatcher annule la confirmation et rentre en mode simulation. Variante 3 En (5) le systme peut interagir pour donner des estimations et des propositions au dispatcher.
Le mode simulation permet au dispatcher de dcider lui-mme les trajets suivre par les vhicules. Le systme interagit en donnant des estimations bases sur les choix effectus par le dispatcher.
25
Gestion de flotte
Tous les utilisateurs du systme sont lis leurs entreprises, les utilisateurs sont de deux types, soit manager soit dispatcher. 2. La gestion des points dintrt
Chaque entreprise a ses propres POI, qui sont regroups par catgorie.
26
Gestion de flotte
3. La planification
Le conducteur et le vhicule sont directement lis lentreprise. Pour chaque parcours on affecte un seul conducteur et un seul vhicule. Chaque parcours est compos de plusieurs trajets. Pour chaque trajet on prcise principalement les dates de dbut et de fin, les points de dpart et darrive. 4. La golocalisation
On dsigne par Device lappareil embarqu au sein du vhicule pour la rception et lenvoie des donnes GPS. Chaque Device envoie au serveur central la position et la vitesse du vhicule. Tous les vhicules ne sont pas ncessairement quips par un GPS, il pourrait donc y avoir des vhicules quon ne peut pas suivre travers le systme, ils ne serviront alors que pour la planification, puisque le dispatcher peut planifier la mission terrain pour nimporte quel vhicule mme si ce dernier nest pas quip de GPS.
27
Gestion de flotte
5. Le rseau routier La modlisation du rseau routier se base essentiellement sur le principe Arcs/Nuds (Edges/Junctions). Les routes (Rues, Boulevards, Avenues, Chemins de fer) sont modlises par des arcs et les intersections entre les routes sont modlises par des nuds. Le model du rseau Dans notre modlisation nous allons considrer que toutes les routes sont reprsentes par des arcs, et toutes les intersections sont reprsentes par des nuds. Ainsi notre modle comportera deux parties principales : - Le model Logique : Qui concerne la reprsentation des routes telle quelle est sur la carte, visualisable par lutilisateur, par exemple le boulevard Mohammed VI sera reprsent par une seule entit. - Le model Physique : Cest un niveau un peut plus bas qui nest pas visible que par le systme, qui contient la subdivision des routes en plusieurs arcs, ainsi que la reprsentation des intersections et les relations entre les arcs, par exemple un boulevard sera reprsent par plusieurs arcs relis par des nuds.
COUCHE LOGIQUE
COUCHE PHYSIQUE
Dans cette figure nous observons la sparation entre le model physique et le model logique. La couche Logique concerne la reprsentation de tous ce qui est visualisable par lutilisateur, alors que la couche physique concerne la modlisation du rseau. La classe Route est la classe principale dans notre modle. La classe catgorie permet la classification des routes (Avenue, Boulevard, Rue, etc.)
28
Gestion de flotte
Au niveau physique nous ne sommes pas beaucoup entrs en dtail, parce que chaque logiciel SIG traite le rseau de sa propre mthode. Un logiciel tel que ArcGIS se base sur le concept de Geometric Network qui reprsente le rseau sous forme Arc /Nuds plus une table de Connectivit entre les arcs et les nuds. Problmatiques de la base de donnes routire Pour construire une telle base de donnes il faut prendre en considration plusieurs contraintes dont la plus importante est de prciser son domaine dutilisation. En effet, un model qui rpond un domaine donn peut tre totalement inutilisable pour un autre. La problmatique principale dans ce projet est de pouvoir faire le routage entre deux points donns, c'est--dire, assurer la navigabilit dans le rseau routier. Il faut donc disposer dune base de donnes routire principalement ddie au routage. Une telle base donne est inexistante la socit. En effet, la base de donnes routire qui existe aujourdhui, a des domaines dutilisation trs restreints. Les routes ne sont que des lments daffichage dans une carte gographique. Et cest justifi en quelque sorte, surtout si on sait que la collecte des donnes de routage reprsente la phase la plus gourmande du budget dans tels projets, cest pour cela que les boites SIG au Maroc hsitent toujours enter dans un tel investissement. On aurait aim pour cela quil ait une coopration entre les diffrents intervenants du domaine routier, pour lchange notamment de donnes et dexpriences. La base de donnes routire existante Dans lorganisme daccueil, on dispose dune base de donnes routire qui couvrent plusieurs villes dont les routes sont classes par catgories. Dans cette base de donnes on sest intress par trois informations seulement : Le nom, la largeur et le type de voie. Toutefois, avoir une base de donnes routire ne signifie pas avoir la possibilit de navigation. En effet, en absence des donnes terrain qui ne sont pas disponibles; on peut avoir une base de donnes utilisable uniquement dans des domaines limits Lune des lacunes de cette base est quelle ne prsente pas les intersections entre les routes. Nous signalons ici que pas mal de logiciel SIG permettent de gnrer les intersections automatiquement uniquement partir du rseau. Toutefois lutilisateur de cette fonctionnalit doit tre trs vigilent parce que a ne se passe pas toujours comme on veut. Le problme majeur nest pas de gnrer les intersections plutt que de savoir est ce quil y a vraiment une intersection ou non. Lexemple typique ici est le cas dune route avec un chemin de fer, sur la carte on voit quil y a une intersection alors que dans la ralit lintersection est un pont. Dans le cas o le logiciel est plus intelligent dans le sens o il traite ce scnario, il ne lest pas dans le cas dintersection entre une autoroute et un boulevard par exemple qui est souvent travers un pont.
29
Gestion de flotte
Comme nous le voyons clairement dans cette image, lintersection entre lautoroute et le boulevard est un pont.
Elle nest considre comme intersection que les connexions permettant lchange de flux entre les routes La voie qui lie entre les deux routes na quun seul sens.
Intersection
30
Gestion de flotte
Il faut dire aussi que la base de donnes ne donne pas les sens de flux. Une telle information qui peut tre trs importante, surtout au niveau dinterconnexion entre les grandes routes. Cest le cas par exemple des voies entrantes ou sortantes de lautoroute, qui nont quun seul sens. Sans oublier les donnes du trafic tels : Les arrts, zones de limitation de vitesse, Congestion, etc. En rsume ; la base de donnes est inutilisable dans le domaine de navigation et elle doit tre complte par des donnes collectes directement du terrain.
31
Gestion de flotte
Chapitre
Choix technologiques
Le bon choix des outils de dveloppements est un point trs important pour le succs de nimporte quel projet. En effet, les outils sont multiples et les solutions technologiques sont diverses et seul le contexte du projet peut dterminer loutil de travail.
32
Gestion de flotte
I. GoogleMaps
GoogleMaps est un service web cartographique gratuit cr par Google en 2004 qui utilise la technologie SIG Web pour offrir un ensemble de fonctionnalits SIG qui sexcutent au niveau du serveur. Ce service a de particulier qu'il permet, partir de l'chelle d'un pays, de pouvoir zoomer jusqu' l'chelle d'une rue 1. Services offerts par GoogleMaps On peut naviguer dans GoogleMaps facilement avec la souris, on peut zoomer pour voir le dtail dune rue par exemple. Lutilisateur peut entrer une adresse ou le nom dune place connue pour pouvoir lidentifier rapidement sur la carte. GoogleMaps permet aussi danalyser les requtes utilisateurs. Par exemple, lutilisateur peut entrer la commande suivante : Restaurants in Paris pour avoir la liste des restaurants qui se trouvent dans la ville. Cette fonction peut tre utilise pour trouver une large liste des points dintrt tels : Htels, Hpitaux, Stationsetc. GoogleMaps permet aussi de faire le routage. Il donne lutilisateur une liste des trajets pour arriver sa destination avec une estimation de la dure de chaque trajet et la distance qui spare entre les deux locations. GoogleMaps offre quatre modes daffichage par dfaut : Carte (topographique et rseau routier), Stellite (Images satellites et images ariennes haute rsolution), Hybrid (Rseau routiers sur des images satellites et images ariennes haute rsolution) et tout rcemment Street View qui tait introduite le 30 Mai 2007 et qui donne une vue de 360 de certaines routes. 2. Implmentation GoogleMaps est bas sur JavaScript. Lorsque lutilisateur drag la carte, les images sont tlcharges depuis le serveur. Lorsque lutilisateur cherche une location, une petite bulle est affiche sur la carte pour indiquer la position. GoogleMaps utilise la technologie AJAX (Asynchronous JavaScript and XML) qui combine Javascript avec XML. Cette technologie lavantage de satisfaire les requtes client sans rafrachir chaque fois la carte. Les donnes gographiques sont fournies par TeleAtlas et NAVTEQ, alors que les images ariennes sont fournies par DigitalGlobe. 3. Extensibilit et personnalisation GoogleMaps permet de personnaliser et dajouter des extensions la carte avec des simples codes Javascript et XML. En se basant sur les services offerts et les images (Carte/satellite) hberges GoogleMaps, on peut personnaliser linterface et les icnes utilises pour laffichage et aussi ajouter les propres images rasters dutilisateur. 4. LAPI GoogleMaps LAPI GoogleMaps tait cre par Google afin de faciliter aux dveloppeurs lintgration de GoogleMaps au sein de leurs applications web avec leurs propres bases de donnes. Cest un service gratuit qui ne contient pas de publicit, mais Google dans les termes dutilisation 1.1 rservent le droit daffichage des publicits dans lavenir.
33
Gestion de flotte
En utilisant lAPI GoogleMaps on peut avoir toutes les fonctionnalits GooleMaps dans une application web externe (sauf le routage). Pour cela il faut crer une cl API qui sera lie lapplication web. 5. GoogleMaps au Maroc GoogleMaps dispose des images satellites grandes chelles pour certaines rgions (Casa, Rabat) qui peuvent descendre jusqu lchelle dune rue et pour dautres rgions (Agadir, Oujda) les images sont de petites chelles avec beaucoup moins de dtails visibles. En ce qui concerne les donnes vecteurs (Rseau routier notamment), GoogleMaps dispose dune carte dune trs petite chelle et dont on peut voir le dcalage entres les images satellites et les routes une fois on zoome en mode Hybrid (rseau routiers sur des images satellites et images ariennes haute rsolution) dont lchelle des images est beaucoup plus grande que celle des cartes routires. Cette diffrence de lchelle entre les cartes avec les images dune part et les images entre elles en dautre part, nous renvoie dfinir les zones de bon et de mauvais fonctionnement de notre application. Il faut signaler finalement que les fonctionnalits de gocodage et de routage ne marchent pas au maroc.
II. J2EE
J2EE (Java 2 Edition Entreprise) est une architecture cre par SUN Microsystems qui dfinit un nouveau concept de dveloppement qui est le dveloppement par couches. Lavantage de cette architecture est que le dveloppeur a ce quon appelle des frameworks pour lassister mettre en place son projet tout en respectant les concepts dfinis par la communaut J2EE. Avant de dtailler les composants de J2EE, il faut expliquer un terme quon va lutiliser souvent dans cette partie. Framework Lintrt pour nimporte quel dveloppeur est de pouvoir utiliser des composants qui sont prts utiliser, et de ne pas rinventer chaque fois la roue. Le concept de rutilisation qui a commenc avec la programmation procdurale (Pascal, Cetc.) travers la dfinition des fonctions et procdures, il sest dvelopp plus tard avec larrive de la programmation oriente objet o on peut dfinir des classes, et mme des packages rutilisables. Et aujourdhui on largit un peut le domaine et on parle de la rutilisation des composants. Pas mal de communauts ont pris linitiative pour dvelopper des composants qui sont utilis en standard dans la plupart des projets. Ils ont pris en charge le dveloppement de ces composants et ils ont fait les tests ncessaires pour quils soient facilement intgrables dans nimporte quel projet. Donc un framework est un ensemble de composants rassembls dans une seule entit et qui sont prs utiliser, sous condition de respecter son architecture.
34
Gestion de flotte
Pourquoi J2EE ? J2EE est une nouvelle technologie qui est venue pour remplacer les mthodes traditionnelles de dveloppements (voir la partie MVC). J2EE est en open source, et il a t adopt par lensemble des communauts des dveloppeurs en open source. J2EE dispose dune documentation trs riche, et lensemble des projets en J2EE sont publis dans le web, ce qui est trs important, et en particulier pour nous les dbutants ; tout dabord parce quon a pas assez dexprience pour dvelopper un projet de A Z ; ensuite la dure du TFE est de quatre mois ce qui ncessite de chercher une plate forme dj prte dans le web qui rpond au moins 50% de la problmatique du projet. Un trs grand nombre de bibliothques gratuites sont publies dans le web et elles sont facilement intgrables dans un projet J2EE, telles que calendar, table scroll, schedule, menuetc. 1. MVC Avant de dfinir ce quest ce que un MVC, nous allons voir tout dabord quelques lacunes de la mthodologie traditionnelle de dveloppement. Avec JSP ou PHP ou nimporte quel langage Web cot serveur, le dveloppement dune application web, commence par la cration dun nombre de pages web. Dans ces pages on peut bien constater quil y a des codes qui concernent laffichage graphique tels (Bouton, InputTextetc.), des codes qui concernent le traitement tels (les boucles, les conversions,etc.) et des codes daccs aux donnes tels (connexion la BD, des requtes SQLetc.). Or, avec ce concept on peut bien constater quil y a des segments de codes qui ne sont pas cohrents et qui sont mlangs les uns avec les autres, ce qui rend la rutilisation du code trs sophistique. Le changement de la base de donnes de Oracle vers MySql par exemple, va entraner un changement dans la plupart des pages. Le pire, est que ce nest pas nimporte qui peut changer, dans la plupart des cas cest le dveloppeur de lapplication luimme qui doit intervenir, ce qui rend le cot de la maintenance et la rutilisation plus lev. Pour palier ce problme le model MVC (Model, View, Controller) dfinit un nouveau concept de dveloppement. Le dernier modle propos par SUN est MVC2 qui a pour objectif de sparer les codes travers la division du projet en couches : Model, View et Controller. Plusieurs frameworks aujourdhui adoptent cette architecture tels Struts, JSF, SpringMVC,etc. Avec ce nouveau concept, on dfinit des nouvelles rgles de programmation en sparant la couche prsentation de la couche traitement en tablissant les liens entre les deux. La couche prsentation ne reprsente que les composants graphiques tels (InputText, bouton, imageetc.). Aucun code de traitement nest permis dans cette couche. La couche mtier est la responsable de tous ce qui est traitement. Elle permet de lire les donnes provenantes de la couche prsentation et de les traiter. Ou aussi de prparer les donnes demandes par la couche prsentation. On peut mme accder la base de donnes partir de la couche mtier, toutefois ce mlange entre le code de traitement et le code daccs la base de donnes nest pas recommand, cest pour cela que les spcialistes prconisent de deviser la couche mtier elle-mme en plusieurs couches selon le besoin, ainsi on peut avoir une couche de traitement et une autre daccs la base de donnes et une autre pour la gestion (Voir partie Spring).
35
Gestion de flotte
Le controller est le responsable de la liaison entre les pages web entre elles dune part et les pages web avec les classes mtiers en dautre part. Si une page a besoin de donnes ou mme si elle veut envoyer des donnes une classe, cest le controller qui sen charge. En ce qui concerne les liaisons entre les pages web, cest le controller qui les gre travers la notion des actions ; mais il faut signaler que ce nest pas toujours le cas parce quune page peut appeler directement une autre page sans passer par le controller . 2. JSF JSF (Java Server Faces) est un framework de prsentation dvelopp par Sun Microsystems. Comme son nom lindique Java Server Faces , ce framework est responsable de tous ce qui est prsentation, c'est--dire ; il dfinit les rgles pour la confection des interfaces graphiques utilisateur en plus de la gestion des relations entre elles. Larchitecture de cette couche est conue en se basant sur le model MVC2 (Model View Control). Les vues (views) sont assures par les pages JSP (avec une template JSF). Dans chaque page on peut insrer un ensemble des composants UI (User Interface) qui sont des Tag Library. Par exemple pour insrer un champ texte dans la page JSF on a quinsrer la tag suivante : <h:outputText value="Hello"/>. On peut donc constater que dans ce nouveau concept on peut se dbarrasser de tous ce qui est HTML et les remplacer par des Tags qui font le mme travail, mais dune faon trs simple et puissante. Le controller est assur par une Servlet appele ServletContext, qui est facilement paramtrable par un fichier XML appel souvent FacesConfig.xml. Toutes les rgles de navigation sont dfinies dans ce fichier, en plus de la dclaration des classes mtiers qui interagissent avec les Pages JSF. Le model reprsente la couche mtier, c'est--dire il dfinit le traitement effectuer aux donnes provenantes des pages JSF. Cest le fichier du control qui fait la liaison entre le mtier et la reprsentation. Toutes les classes de la couche mtier sont des Beans, c'est--dire que ce sont des classes java dont tous les attributs sont privs, et toutes les mthodes sont publiques. Les mthodes sont de type Getter&Setter, c'est-dire que chaque attribut de la classe doit avoir au minimum deux mthodes : GetAttribut et SetAttribut pour pouvoir lutiliser partir de la couche prsentation. 3. Hibernate Hibernate est un framework qui permet de rsoudre un trs grand problme qui rencontre surtout les gents qui font la conception de leurs projets en UML et veulent implmenter leurs codes en java. On sait trs bien que java est un langage orient objet qui permet facilement de codifier les classes UML. Or, cette conception suppose quon travaille avec une base de donnes oriente objet afin de pouvoir garder des concepts tels lhritage, lagrgation, les associationsetc. moins si on voulait trouver une issue pour sen chapper, et dailleurs cest a quon faisait toujours. On sait bien aussi que la plupart des SGBD sont relationnels. Donc la plus grande question qui se pose ici, est la suivante : Pourquoi je me suis cass la tte pour faire la conception en UML ; alors que finalement je reviendrai au relationnel ?! Hibernate est l pour rsoudre ce problme. En effet, il permet aux dveloppeurs dinteragir
36
Gestion de flotte
avec la base de donnes relationnelle comme selle sagissait dune base de donnes oriente objet, et sans mettre en pril le diagramme de conception UML. En effet, Hibernate permet de crer une couche de persistance de donnes, c'est--dire une interface qui donne aux dveloppeurs des fonctionnalits pour linteraction avec la base de donnes en mode oriente objet. Les utilisateurs peuvent finalement voir le fruit de leurs conceptions et dvelopper une vraie application oriente objet. Le principe de fonctionnement de Hibernate est simple ; pour chaque table on associe ce quon appelle un fichier de mapping (format XML) ; dans ce fichier on dfinit les champs de la table plus les rgles de connexions avec les autres tables (hritages, associationsetc.) ; et pour chaque fichier de mapping on associe une classe java que lon peut gnrer automatiquement partir du fichier de mapping. Le dveloppeur na plus qu interagir avec la table dans la base de donnes mais plutt avec la classe java. Pour cela Hibernate a mis en place un nouveau langage qui sappelle HQL (Hibernate Query Language) qui est plus facile utiliser et dfinit plus de fonctions pour interagir la base de donnes. Dans le fichier de configuration de Hibernate ; deux informations principales doivent figurer : Les paramtres de connexions la base de donnes (Driver, Nom BD, Login) La dclaration des fichiers de mapping. 4. Spring Avec JSF et de Hibernate, on peut dire quon a la base pour dvelopper une application web. En effet, on peut raliser une application dans laquelle on utilise JSF comme couche prsentation qui se connecte une couche mtier (Des classes Javabeans) dont on peut insrer du code Hibernate pour se connecter la base de donnes. Pourquoi donc utiliser Spring ? Cest une trs bonne question qui se pose souvent chez les initiants en dveloppement avec J2EE ; et qui veulent implmenter leurs applications web avec le minimum deffort et de temps possible. Chez les dveloppeurs, cest une question qui trouve sa rponse dans la conception de la couche mtier. Il est trs conseill de diviser la couche mtier en plusieurs niveaux. Mlanger le code daccs la base de donnes avec le code de traitement est un mauvais choix qui se contredit mme avec le concept J2EE qui consiste diviser les taches diffrentes en plusieurs couches. Spring nest pas un luxe ajouter un projet J2EE ; mais par contre, un lment indispensable pour la robustesse de lapplication. Spring permet de dfinir une nouvelle architecture de la couche mtier et il favorise le travail en quipe au sein du mme projet. Le premier concept est le travail par contrat ou par interface, c'est--dire que pour chaque classe il devait avoir une interface dont elle hrite, comme cela on oblige les dveloppeurs respecter le mme module de dveloppement. Un autre point fort dutilisation des interfaces est que pendant le dveloppement on fait jamais appel une classe partir dune autre classe, mais plutt de linterface dont elle hrite, ainsi on peut utiliser une classe sans quelle soit encore dveloppe. Le deuxime concept, qui est le plus important est le Dependency Injection qui consiste faire le lien entre les classes. Pour illustrer ce dernier principe, si un objet A a besoin dun objet B pour accomplir un traitement spcifique, cette relation doit se traduire par une dclaration du constructeur de la classe B dans la classe A.
37
Gestion de flotte
Si par exemple, on voulait changer la relation, et on veut remplacer lobjet B par un autre objet C , cela entranera videmment un changement dans toutes les classes qui utilisent cet objet B. La solution pour viter cette anomalie est de dlguer Spring cette tache dtablissement de la relation entre les objets A et B
Dans ce projet, on a une classe Bean qui interagit avec la couche prsentation, celle-ci utilise une classe service pour excuter les traitements et cette dernire fait appel une classe dao qui va interagir avec la base de donnes via Hibernate. Pour illustrer cela, nous imaginons par exemple quon a une classe spcialise dans linteraction avec la base de donnes quon va lappeler Dao ; et une autre classe quon va lappeler Service qui fait le traitement des donnes apportes par la classe Dao; et une troisime et dernire classe qui va utiliser cette classe Service pour afficher les donnes aux utilisateurs finaux quon va lappeler Bean.
38
Gestion de flotte
Daprs ce schma, on constate que toutes les relations qui existent entre les objets sont dlgues Spring. Donc, si jamais on veut changer une classe par une autre, on a qua reconfigurer Spring. Spring utilise un fichier de configuration souvent appel ApplicationContext.xml pour tablir les liens entre les objets. Il faut signaler que Spring ne se contente pas de ltablissement des liens entre les objets seulement, mais aussi de la cration de ces objets, et il utilise le principe de Singleton pour sassurer quaucun objet ne figure en double dans la mmoire. Ceci dit ; que si un objet A a besoin dun objet B, et un objet C a besoin lui aussi de lobjet B ; Spring assure que les deux objet A et C ne vont utiliser quun seul objet B dans la mmoire. Il faut souligner aussi que Spring contient dautres modules quon peut les utiliser dans une application web J2EE, comme par exemple Spring MVC ; mais cest ici que persiste le point fort de Spring, puisquil nous donne la libert dutilisation de nimporte quel model sparment. Spring permet aussi de prendre en charge la configuration de Hibernate. Donc on naura plus besoin du fichier de configuration de Hibernate, puisquon peut mettre son contenu dans le fichier de configuration de Spring
39
Gestion de flotte
Chapitre
Le prsent chapitre dtaille techniquement les tapes de ralisation du projet ainsi que la problmatique de routage qui est le processus le plus compliqu dans ce projet.
40
Gestion de flotte
Nous sommes arrivs maintenant de la ralisation du projet. Vu le court dlai du projet par rapport sa taille, on a dfini une liste des tches prioritaires ; c'est--dire celles qui doivent tre ralises en premier. Pour cela on a class les quatre sous modules du projet ainsi : 1. Le suivi des vhicules en temps rel. 2. Le suivi en temps diffr (donnes historiques). 3. La planification. 4. La gestion des POI. A cela sajoute aussi une tache pas moins importante que les autres, qui est la partie administration. Dans ce projet on est arriv raliser les deux premiers modules (Suivi temps rel et diffr), en plus de la partie administration ; ainsi quun sous module de routage qui peut tre intgr dans le module de planification. Les deux modules qui restent ne peuvent tre compliqus raliser ; puisque la plupart des composants sur lesquels se basent ces deux modules sont dj dvelopps dans ce projet et il ne reste donc que les intgrer.
Le systme dfinit pour chaque utilisateur un rle dadministration. En se basant sur ce rle le systme lui dirige vers la fentre correspondante. On utilise les sessions pour garder la trace de lutilisateur connect. La scurit de lapplication nest pas encore gre, sinon on pourrait intgrer un framework de scurit qui sappelle ACEGI qui permet de grer lauthentification et lautorisation des utilisateurs. Il faut noter que la scurit est un lment trs important grer, parce que le serveur contient des donnes confidentielles des clients.
41
Gestion de flotte
Lorsque ladministrateur de lapplication sauthentifie le systme lui redirige vers la fentre suivante :
Grer vhicules
Dans cette espace, on donne ladministrateur la possibilit de grer lapplication. Pour la prsente tape on a donn la possibilit de grer que les vhicules et les entreprises. Ladministrateur peut ajouter une entreprise partir de la fentre suivante :
Ladministrateur introduit le nom de lentreprise et clique sur valider pour que lentreprise senregistre dans le systme. Lhors de lajout dune entreprise, deux utilisateurs doivent tre cres par dfaut. Si lentreprise sappelle XXX, alors on a par dfaut les deux utilisateurs XXX_Manager et XXX_Dipatcher.
42
Gestion de flotte
Lorsquon click sur le lien Vhicules on a la liste de tous les vhicules de lentreprise.
43
Gestion de flotte
Figure 25: Liste des vhicules de lentreprise qui sont quips par GPS
Dans cette fentre on ne voit que les vhicules qui sont quips de GPS, on a une information sur le numro de srie du Device embarqu au sein du vhicule, ainsi quun lien vers GoogleMaps pour afficher la position sur la carte Lorsquon clique sur le lien GoogleMaps , on visualise la position actuelle du vhicule sous forme dun point au centre de la carte GoogleMaps.
Position du vhicule
Le choix de licne afficher est personnalisable, on pourrait par exemple changer la bulle rouge par une autre icne. On peut aussi dfinir une couleur qui correspond ltat du vhicule. Si par exemple le vhicule est arrt on laffiche avec une couleur rouge et si il est en marche on laffiche avec une couleur verte.
44
Gestion de flotte
Figure 27: Liste des vhicules dont on peut avoir les donnes historiques
Trajet historique
Lun des plus grands problmes rencontrs lors du dveloppant de ce module, est le problme de laffichage des donnes sur le fond GoogleMap. En effet, il nest pas vident de transmettre des donnes comprhensibles seulement par des composants JSF GoogleMaps qui ne comprend que du Javascript. Lutilisation du framework Shale Romoting a rsolu le problme daffichage. On peut dire que ctait la tache technique la plus difficile dans ce projet.
45
Gestion de flotte
46
Gestion de flotte
En se basant sur des bibliothques Java de manipulation des fichiers XML (prcisment JDOM) on parcourt tout le fichier et on identifie ses lments un par un. Nous voyons dans lexemple ci-dessus que KML utilise pour la dfinition dune polyligne (identifie par <LineString> en KML) un ensemble de cordonnes rassembles sous forme de chanes de caractres et spares par virgules (,). On a conu pour cela une application sous java pour la prparation des donnes. Elle permet de parcourir ce fichier KML et de rcuprer les deux importantes informations qui figurent dans le fichier : Le nom de la route et les coordonnes. A partir de ces donnes on peut construire notre base de donnes routire. Le processus de la rcupration des donnes est simple ; aprs la lecture des coordonnes sous forme de chane de caractres, on dcoupe cette dernire suivant le caractre virgule (,) en un ensemble de sous chanes quon va les stocker dans un tableau, par consquent les trois premiers lments du tableau reprsentent successivement la longitude, la latitude et laltitude du premier point. (Voir figure21)
Pour la construction des arcs, on relie chaque nud au nud qui le suit si ces deux noeuds appartiennent la mme route bien sr. Pour chaque arc on tablit un cot qui est la distance qui spare entre le nud de dpart et le nud darrive. Ainsi on aurait construit notre base de donnes routire. Le routage Aprs avoir construit la base de donnes routire on peut commencer faire le routage. Pour cela on identifie pour chaque arc un cot ; celui-ci, et comme nous lavons cit; constitue pour la prsente tape une fonction de la distance uniquement. Pour des raisons techniques, et afin de rsoudre la problmatique du sens des voies, on identifie pour chacun des deux nuds (dpart et arrive) de chaque voie deux cots : cot entrant et cot sortant. Si une route a un sens interdit en entrant, on va mettre donc le cot entrant une valeur maximale tandis quon va toujours utiliser le cot rel en sortant.
47
Gestion de flotte
Pour le calcul du plus court chemin, on utilise lalgorithme publi par l'informaticien nerlandais Edsger Dijkstra. Le choix de cet algorithme nest pas important en soi, car on peut utiliser lalgorithme de Ford-Fulkerson ou nimporte quel autre algorithme qui permet de faire laffaire. Aprs limplmentation de ce projet sous java, on a constat quil permet de faire le routage entre deux nuds qui font parti du rseau dune manire efficace. Mais dans la ralit ; et cest souvent le cas; lutilisateur choisit partir de la carte deux points (dpart et arrive) qui ne sont pas dans la plupart des cas des nuds dans le graphe. Comment faire dans ce cas ? Pour rsoudre ce problme on vrifie dabord si le point choisi est situ sur un arc donn. Si cest le cas, on crie pour ce point un nud fictif et on le branche au rseau routier. Si ce nest pas le cas, c'est--dire que le point choisi nest pas situ sur un arc donn, on choisit donc parmi la liste des nuds du rseau, le nud le plus proche ce point et on crie un noeud et un arc fictifs et on les rattache au rseau routier. Dans ce cas, il peut arriver quon trouve aucun chemin entre les deux points choisis cause par exemple du mal choix des points de rattachement ; pour cela il vaut mieux quon dfinisse une liste des points les plus proches dun point qui ne fait pas parti du rseau, suivant une tolrance par exemple, pour dfinir tous les chemins et choisir le plus court. Cest le mme principe quon peut ladopter pour chercher le POI (Pharmacie par exemple) le plus proche dun point donn. C'est--dire on relie le point et le POI au rseau routier et on tablit le routage. Implmentation
Cette fentre montre la liste des nuds du rseau routier A partir du fichier KML reprsentant le rseau routier, on extrait la liste des noeuds. Nous signalons que les noeuds qui reprsentent les intersections entre les routes ne figurent pas dans cette liste.
48
Gestion de flotte
Cette fentre montre la liste des arcs du rseau routier. Source et Target indiquent les nuds de dpart et darrive. Le weight indique le cot du trajet qui correspond dans notre cas la distance de larc. Le champ 'Road' indique quelle route cet arc fait parti, pour cela on crie une table des routes et on affecte chaque route un numro. On affecte Par exemple au boulevard MouhammedV le numro 1 et lavenu HassanII le numro 2 et ainsi de suite. Dans le tableau ci-dessus on a les arcs 3, 4, 5, 6,7 appartiennent la route numro 4. Routage
49
Gestion de flotte
Dans cette fentre on introduit les longitudes et les latitudes des points de dpart et darrive. A partir de ces coordonnes, le systme est capable de faire le rattachement avec le rseau routier et calcule le plus court chemin. En cliquant sur le bouton 'Submit' on calcule le plus court chemin.
Le systme indique la liste des trajets suivre pour arriver la destination, plus la longueur de chaque trajet.
50
Gestion de flotte
Conclusion Gnrale
Ce travail de fin dtudes intitul gestion de flotte sinscrit dans un vaste chantier visant ltablissement dun Systme dInformation gographique pour la gestion des oprations de livraisons. Ce projet SIG est dune grande envergure. Il a pour objectif de gnraliser lemploi du SIG et dassurer son intgration dans les systmes dinformations pour lensemble des intervenants dans le domaine du transport routier. La mission qui ma t confie a pour finalit de concevoir et de raliser une application SIG dont lobjectif escompt est de rendre les donnes gographiques accessibles partir dun serveur web cartographique. Les objectifs principaux de ce projet sont atteints. En effet, on est arriv raliser deux grands modules importants : La golocalisation temps rel et diffr, ainsi quune partie de la problmatique du routage. Les deux modules restants : Planification et gestion des POI ne sont pas encore raliss. Sur le plan technique, ce stage a t une exprience trs enrichissante. Il ma permis non seulement de mettre en pratique mes connaissances thoriques et mthodologiques acquises lors de ma formation lEHTP, mais aussi de suivre une formation professionnelle sur le technologie J2EE. Il ma offert, galement, lopportunit de suivre une approche concrte du management de projet, et de faire connaissance avec le mtier de lentreprise. Au cours de ce stage, laspect humain a plus que jamais t mis en avant, et ce grce au dialogue, aux conseils et au professionnalisme de toute l'quipe. Celle-ci ma intgr et soutenu depuis le dpart, de mme quelle ma offert lappui et la collaboration ncessaires tout au long du stage, surtout que llaboration du modle de donnes et les donnes, elles mmes, taient en cours dtablissement.
51
Gestion de flotte
Au terme de ce projet, plusieurs perspectives peuvent tre envisages. Dans limmdiat, il serait judicieux de complter la ralisation de lapplication en entamant les deux modules restants (planification et gestion des POI). La conception dune base de donnes routire navigable est aussi une perspective pour rendre lapplication utile pour tous les domaines du transport routier.
52
Gestion de flotte
Webgraphie
Gestion de flotte http://www.geoloc-systems.com/index2.htm http://www.geotab.com/ http://www.d3e.fr/pdf/satelgisir.pdf http://www.cadtech.net.ma/index.php?option=com_content&task=view&id=39&It emid=41 http://www.amfmgis-belux.be/gishtm/decis.htm (dispatching) http://www.data-mobiles.com/fr/produits/dm-fleet.php http://www.geoconnect.fr/fr/geoconnect-plaquette-012006.pdf http://logistique.polenormand.fr/php/telecharger.php?file=FicheGeolocGestionDe Flotte Points of interest http://www.cidj.com/Viewdoc.aspx?docid=768&catid=1#description www.ordnancesurvey.co.uk/products/pointsofinterest/pdf/POI_User_Guide_Oct06 .pdf Transport SIG http://www.forumsig.org/showthread.php?t=1224 gestion de transport http://astro.temple.edu/~jmennis/Courses/ http://www.stanford.edu/dept/itss/docs/oracle/10g/appdev.101/b10828/sdo_net_co ncepts.htm http://en.wikipedia.org/wiki/ (Intersection_road) http://en.wikipedia.org/wiki/ (Junction_traffic) J2EE http://www.javapassion.com/j2ee/#Step_by_Step_Guide_for_Building_a_Simple http://jsftutorials.net/index.php http://www.horstmann.com/corejsf/ http://www.sun.com
53
Gestion de flotte
http://perso.orange.fr/emmanuel.remy/Java/Tutoriels/J2EE/JSFAvancees.html https://blueprints.dev.java.net/ajaxcomponents.html http://www.myeclipseide.com/images/tutorials/JSF/SFLoginDemoTutorial.html http://www.myeclipseide.com/ContentExpress-display-ceid-56.html http://www.springframework.org http://www.hibernate.org/ http://livedemo.exadel.com http://www.smartclient.com http://getahead.ltd.uk/dwr/ http://www.myeclipseide.com/ContentExpress-display-ceid-15.html?gclid=CN2iKqA4IoCFSYgEAodTESDvA http://java.sun.com/developer/technicalArticles/J2EE/ajax_jsf/ http://java.sun.com/developer/technicalArticles/J2EE/AJAX/ http://www.theserverside.com/tt/articles/content/ http://www.myeclipseide.com/images/tutorials/quickstarts/springintroduction/tutor ial.html http://www.thepeninsulasedge.com/blog/2006/11/21/configuring-shale-remoting/ http://www.supinfo-projects.com/fr/2006/initiation_facelets/ http://www.jsfcentral.com http://www.coreservlets.com/JSF-Tutorial/#Code http://people.apache.org/builds/myfaces/nightly/ http://wiki.apache.org/myfaces/Use_Facelets_with_Tomahawk Google Maps http://www.google.com/apis/maps/ http://wisgary.com/maps http://fr.wikipedia.org/wiki/Google_Maps
54
Gestion de flotte
AnnexeA
55
Gestion de flotte
Etude de l'existant
Le systme de l'existant
La Page D'accueil
56
Gestion de flotte
Le Menu Principal
Cest la page qui contient le menu principal. Quatre fonctionnalits principales sont prsentes: Le suivi de vhicules en temps rel. Le suivi de vhicule en temps diffr (ne marche pas). La gestion des points d'intrt. Une fonctionnalit qui permet l'ajout des cartes personnalises.
57
Gestion de flotte
Ce module est un peut dvelopp par rapport celui du suivi en temps rel, il permet de savoir le parcours effectu par un vhicule pendant une journe sur la carte, ainsi que les donnes lies chaque trajets et entre autres la date, l'heure et le temps d'arrt dans chaque points.
58
Gestion de flotte
59
Gestion de flotte
AnnexeB
60
Gestion de flotte
Exemple de code
Fonction de calcul de distance entre deux points
public Double getDistance(Double LatDepart,Double LngDepart,Double LatArrivee,Double LngArrivee) { // int R = 6367; Double dlon = new Double(LngArrivee.doubleValue() - LngDepart.doubleValue()); Double dlat = new Double(LatArrivee.doubleValue() - LatDepart.doubleValue()); Double a = new Double(Math.pow((Math.sin(dlat.doubleValue() / 2)), 2) + Math.cos(LatDepart.doubleValue()) * Math.cos(LatArrivee.doubleValue()) * Math.pow((Math.sin(dlon.doubleValue() / 2)), 2)); Double c = new Double(2 * Math.atan2(Math.sqrt(a.doubleValue()), Math .sqrt(1 - a.doubleValue()))); // Double d = R * c; Double dLat1InRad = new Double(LatDepart.doubleValue() * (Math.PI / 180.0)); Double dLong1InRad = new Double(LngDepart.doubleValue() * (Math.PI / 180.0)); Double dLat2InRad = new Double(LatArrivee.doubleValue() * (Math.PI / 180.0)); Double dLong2InRad = new Double(LngArrivee.doubleValue() * (Math.PI / 180.0)); Double dLongitude = new Double(dLong2InRad.doubleValue() - dLong1InRad.doubleValue()); Double dLatitude = new Double(dLat2InRad.doubleValue() - dLat1InRad.doubleValue()); a = new Double(Math.pow(Math.sin(dLatitude.doubleValue() / 2.0), 2.0) + Math.cos(dLat1InRad.doubleValue()) * Math.cos(dLat2InRad.doubleValue()) * Math.pow(Math.sin(dLongitude.doubleValue() / 2.0), 2.0)); c = new Double(2.0 * Math.atan2(Math.sqrt(a.doubleValue()), Math .sqrt(1.0 - a.doubleValue()))); Double kEarthRadiusKms = new Double(6376.5); Double dDistance = new Double(kEarthRadiusKms.doubleValue() * c.doubleValue()); // resultat en Kilomtres return dDistance; }
61
Gestion de flotte
Algorithme Dijkstra
import java.util.*; import map.Edge; import map.Node; public class Dijkstra {
public static Vector shortestPath ( Vector nodes, Vector edges, int startPosition, int endPosition ) { Vector vecPath = new Vector(); Vector path = new Vector(); int edgeMatrix[][] = new int[nodes.size()][nodes.size()]; boolean notDone = true; boolean pathExists = true; boolean pathPossible = false; int nodeNotInS; int S[] = new int[nodes.size()]; int T[][] = new int[2][nodes.size()]; for (int i=0; i<nodes.size(); i++) { for (int j=0; j<nodes.size(); j++) { edgeMatrix[i][j] = -1; } S[i] = 0; T[0][i] = Integer.MAX_VALUE; T[1][i] = -1; } for (int k=0; k<edges.size(); k++) { int l = ((Edge) edges.get(k)).getIdSource(); int m = ((Edge) edges.get(k)).getIdTarget(); edgeMatrix[l][m] = ((Edge) edges.get(k)).getWeight(); edgeMatrix[m][l] = ((Edge) edges.get(k)).getWeight(); } S[startPosition] = 1; T[0][startPosition] = 0; T[1][startPosition] = startPosition; for (int i=0; i<nodes.size(); i++) { if ((startPosition != i) && (edgeMatrix[startPosition][i] > 1)) { T[0][i] = edgeMatrix[startPosition][i]; T[1][i] = startPosition; } } for (int i=0; i<nodes.size(); i++) if (edgeMatrix[startPosition][i] > -1) pathPossible = true; while (notDone && pathExists && pathPossible) { int minT = Integer.MAX_VALUE; int v = -1; for (int i=0; i<nodes.size(); i++) { if ((S[i] == 0) && (T[0][i] < minT)) { minT = T[0][i]; v = i; } }
62
Gestion de flotte
S[v] = 1; nodeNotInS = -1; for (int i=0; i<nodes.size(); i++) { if ((S[i] == 0) && (edgeMatrix[v][i] > -1)) { if ((T[0][v] + edgeMatrix[v][i]) < T[0][i]) { T[0][i] = T[0][v] + edgeMatrix[v][i]; T[1][i] = v; } } } if (S[endPosition] == 1) notDone = false; else { notDone = true; pathExists = false; for (int i=0; i<nodes.size(); i++) { if ((S[i]==0) && (T[0][i] < Integer.MAX_VALUE)) pathExists = true; } } } if (pathExists && pathPossible) { int n = endPosition; vecPath.add(new Integer(n)); n = T[1][endPosition]; while(n != startPosition) { vecPath.add(new Integer(n)); n = T[1][n]; } vecPath.add(new Integer(n)); for (int i=0; i<edges.size(); i++) { for (int j=0; j<(vecPath.size()-1); j++) { int l = ((Edge) edges.get(i)).getIdSource(); int m = ((Edge) edges.get(i)).getIdTarget(); if (((((Integer) vecPath.get(j)).intValue() == l) && (((Integer)vecPath.get(j+1)).intValue() == m)) || ((((Integer) vecPath.get(j)).intValue() == m) && (((Integer)vecPath.get(j+1)).intValue() == l))) { //((Edge) edges.get(i)).setLineColor( Color.blue ); //System.out.println(( edges.get(i))); Edge e=new Edge(); e=(Edge) edges.get(i); e.setSource(((Node)nodes.get(e.getIdSource()))); e.setTarget((Node)nodes.get(e.getIdTarget()));
path.add((Edge) edges.get(i)); System.out.println((Edge) edges.get(i)); } } } } else System.out.println("There is no path from node " + ((Node)nodes.get(startPosition)).getIdNode() + " to node " + ((Node)nodes.get(endPosition)).getIdNode()); return path; } }
63
Gestion de flotte
Foctions GoogleMaps
function load() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map")); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); map.setCenter(new GLatLng(33.57944666666669, -7.626484999999999), 10, G_SATELLITE_TYPE); // Creation de l'icone icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png"; icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png"; icon.iconSize = new GSize(12, 20); icon.shadowSize = new GSize(22, 20); icon.iconAnchor = new GPoint(6, 20); icon.infoWindowAnchor = new GPoint(5, 1); } } // function create Marquer function createMarker(point,name,html,icon) { var marker = new GMarker(point, {icon:icon}); GEvent.addListener(marker, "click", function() { //html="<html><body><input type=text value=ff></body></html>" marker.openInfoWindowHtml(html); }); return marker; } // function Show point into Map from X,Y function showPoints(x,y,vehicule) { icon.infoWindowAnchor = new GPoint(5, 1); var point = new GLatLng(x, y); var marker = new createMarker(point," ",vehicule,icon); gmarkers.push(marker); bounds.extend(point); } function ShowPloyLines(x,y,vehicule) { var point = new GLatLng(x, y); points.push(point); bounds.extend(point); } function ShowPath(x1,y1,x2,y2) { var point1 = new GLatLng(x1, y1); var point2 = new GLatLng(x2, y3); points.push(point1); points.push(point2); bounds.extend(point1); bounds.extend(point2); }
64