WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Intégration d'un observatoire urbain sur Google maps : cas des infrastructures de la santé de la ville de Douala

( Télécharger le fichier original )
par Rénal Paul TATSO
Université de Douala - Master II en informatique appliquée aux systèmes d'informations géographiques 2010
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

CHAPITRE 5 IMPLEMENTATION DE LA SOLUTION

5.1. OUTILS ET TECHNOLOGIES UTILISES

5.1.1. Architecture du système

Nous présentons dans ce paragraphe de manière schématique le mécanisme de fonctionnement de notre plateforme.

Echanges par Internet

Client

Serveur Web

Serveur GoogleMaps

JavaScripts

MySQL

Http

JavaScripts PHP ava, SQL ,ja..

Figure 23. Architecture de VisioCity

Lorsqu'un client web se connecte à la plateforme via le protocole http, il peut solliciter l'affichage d'une carte géographique correspondant à un site géographique précis. Dans ce cas notre plate forme récupère les données liées à sa requête depuis la base de données MySQL, puis renvoie la requête vers le serveur Google Maps en passant par Internet qui renvoie aussitôt la carte correspondante vers le client. Le Client peut alors effectuer une interactivité sur la carte grâce aux fonctions JavaScripts coté client.

Pour mettre en oeuvre cette architecture, nous avons eu besoin des outils suivants : Le serveur des données (SGBD) MySQL, Le serveur Web Apache, le serveur de script PHP tout ceci contenu dans un seul package XAMPP serveur. Pour le développement des interfaces nous avons utilisé l'environnement de développement MacromédiaDreamWeaver8.

5.1.2. Les serveurs de données (SGBD)

Pour des raisons que nous avons déjà évoquées à l'introduction, fidèle à notre politique open source, parmi plusieurs SGBD existant, nous avons porté notre choix sur deux à savoir MYSQL et PostGreSql  qui l'un comme l'autre peut bien faire le travail. Nous avons finalement choisi MySQL pour la seule raison du temps imparti pour la mise en oeuvre avant soutenance. Mais nous continuons à travailler pour que la future version soit directement compatible Posgresql/PostGis afin de pouvoir bénéficier de sa cartouche spatiale qui nous permettra facilement de développer en local un serveur alternatif de cartographie basé sur Mapserver.

A titre de rappel, un SGBD dans une application a pour rôle de gérer (consulter, mettre à jour, organiser) une base de donnée. MySQL comme PostGresql est un SGBD qui offre plusieurs fonctionnalités allant du gestionnaire évolué des données pour le web au véritable gestionnaire des données de gestion d'entreprise.

MySQL comme PostGresql présente les caractéristiques suivantes :

- Libre et gratuit

- Gestion d'importantes masses de données

- Gestion des accès multiples et concurrents

- Portabilité sur différents systèmes d'exploitation.

- Gestion de la sécurité des données.

- Existence de puissants outils d'administration graphique (phpmyadmin par exemple)

- Gestion des exports et imports de données vers plusieurs types de fichiers.

- Gestion des données relationnelles avec contraintes d'intégrité

- Existence d'une couche spatiale MYGIS

- Installation facile (Package xampp)

Figure 24. Environnement de programmation DreamWeaver 8.

5.1.3. Les serveurs web

Il s'agit des serveurs permettant à des clients web d'accéder à l'application à partir de tout navigateur (exemple internet explorer). Installé sur leur poste connecté à internet/intranet distant du serveur. Un serveur web a donc pour rôle d'interpréter les requêtes http arrivant sur le port associé par défaut le port 80 et de fournir une réponse par le même protocole.

Il existe plusieurs serveurs web sur le marché, parmi lesquels nous avons choisi pour son caractère libre et multiplateforme Apache ( www.apache.org). Apache est le serveur le plus répandu sur Internet. Son package d'installation est téléchargeable librement sur internet

Outre le serveur Web Xampp permet d'installer le serveur des applications PHP. Ainsi que l'outil d'administration PhpMyAdmin.

Figure 25. Interface de PhpMyAdmin

5.1.4. Le serveur Google Maps

Google Maps ( www.maps.google.fr) est un serveur gratuit de cartes géographiques et de plans en ligne fondé en 2005 aux USA. Il utilise des images satellites et des photographies aériennes de haute altitude pour une meilleure précision couvrant la totalité de la surface terrestre. Google Maps par ailleurs propose une API qui permet aux développeurs web par une bibliothèque de fonctions JavaScript et au format de fichier KML d'intégrer des cartes et de pouvoir créer des cartes personnalisées pour leurs applications. C'est cette opportunité que nous avons saisie pour intégrer à notre plateforme la cartographie basée sur Google Maps. La contrainte c'est que notre plateforme doit être connectée à Internet pour bénéficier de ces facilités.

5.1.5. les langages informatiques utilisés

Pour le développement des interfaces nous avons utilisé les langages informatiques suivants :

Coté clients

Notre plateforme étant basée sur la technologie web, nous avons utilisé :

- Le Html pour la présentation des pages web

- Le CSS (cascadind style sheet) pour le design des interfaces web

- Le JavaScript pour le contrôle et la navigation sur les éléments des pages clients

- KML (Keyole Markup Language) pour le marquage et la mise en forme des polygones de notre cartographie.

Coté serveur

- Le PHP pour l'interaction entre les clients et le serveur d'une part, et entre le serveur et la base de donnée et surtout pour les échanges entre notre plateforme et Google Maps. Via la classe de manipulation des fonctions JavaScript.

- Le SQL pour l'interrogation et la manipulation des données avec le SGBD.

- Ajax (Asynchronous JavaScript and XML) qui est un mélange de technologie est également intervenu aussi bien entre le serveur et les clients qu'entre le serveur et Google Maps.

5.2. IMPLEMENTATION DE LA SOLUTION

5.2.1. Environnement de développement

Nous avons travaillé avec l'environnement matériel suivant :

- Un ordinateur de marque HP dx2300 core duo 1.80Gz, 2Go Ram Windows Xp SP2

- Package Xampp installé (apache, php5, MySQL, phpmyadmin)

- Macromédia Dreamweaver 8

- Internet explorer 8

5.2.2. Création de la base de données

Notre schéma physique se présente comme suit :

Figure 26. Schéma relationnel de la base de données

Remarque :

Comme vous pouvez le constater, il existe deux tables indépendantes site_tempon et abonne, en effet ces deux tables ne sont que des duplicata des tables site_geo et utilisateur qui servirons à stocker les informations en attente de validation.

Table

Explication

1

Abonne

Permet de stocker les informations des abonnés à la plateforme

2

couche_geo

Stocke les informations des couches géographiques

3

journal

Permet d'assurer la traçabilité des transactions dans la base de données

4

site_sanitaire

Permet de stocker les informations des sites géographiques à la plateforme

5

site_tempon

Permet de stocker temporairement les propositions informations des sites géographiques.

6

utilisateur`

Permet de stocker les informations des utilisateurs de la plateforme

7

zone_geo`

Permet de stocker les informations des zones géographiques notamment le fichier kml à la plateforme

Tableau 3 : Dictionnaire des entités du modèle des données

L'ensemble des scripts de création de la base de données est donné en annexe.

5.2.3. Création des interfaces hommes/machine

A l'aide de L'API Macromédia Dreamweaver 8 nous avons pu écrire des scripts PHP, JavaScript et kml nécessaires à notre application. C'est un environnement convivial de programmation. Nous vous présentons ici les principaux scripts  ecrits:

- Le module de traitements avec la base de données (ModuelBd.php)

Ce fichier contient tous les codes sources d'accès à la base de données pour insertion, modification et suppression des données.

Exemple pour la table site_geo on a le code suivant :

function AjoutSiteGeo($Lib_Site, $Longitude, $Latitude, $Categorie, $Nb_Medecin,$Nb_Lits,$Zone_Geo,$Couche_Geo,$Contact)

{ $Zone_Geo=GetZoneCode($Zone_Geo);

$Couche_Geo=GetCoucheCode($Couche_Geo);

$Contact=formatData($Contact);

$Lib_Site=formatData($Lib_Site);

$Categorie=formatData($Categorie);

$requete="INSERT INTO `site_sanitaire` (`Libelle_Site`, `Longitude` , `Latitude` , `Categorie`, `Nbre_Medecin`, `Nbre_Lits`,`Zone_Geo`,`Couche_Geo`,`Contact`)

VALUES ('$Lib_Site','$Longitude' ,'$Latitude','$Categorie','$Nb_Medecin','$Nb_Lits','$Zone_Geo','$Couche_Geo','$Contact');";

if (!($rep=mysql_query($requete)))

{ $mes=mysql_error();

$message="Enregistrement non effectuée".$mes;

return $message;}

else

{$message="Enregistrement effectué avec succès";

return $message;

}

}

Cette fonction permet d'insérer dans la base de données les informations d'un objet de type Site_Geo.

Pour les modifications on a :

function ModSiteGeo($Lib_Site, $Longitude, $Latitude, $Categorie, $Nb_Medecin,$Nb_Lits,$Zone_Geo,$Couche_Geo,$Contact,$Code)

{

$Zone_Geo=GetZoneCode($Zone_Geo);

$Couche_Geo=GetCoucheCode($Couche_Geo);

$Lib_Site=formatData($Lib_Site);

$Categorie=formatData($Categorie);

$requete="UPDATE `site_sanitaire` SET `Libelle_Site`='$Lib_Site' , `Longitude`='$Longitude' , `Latitude`='$Latitude', `Categorie`='$Categorie',`Nbre_Medecin`='$Nb_Medecin',`Nbre_Lits`='$Nb_Lits',`Zone_Geo`='$Zone_Geo',`Couche_Geo`='$Couche_Geo',`Contact`='$Contact' WHERE `Code_Site`='$Code' ";

if (!($rep=mysql_query($requete)))

{ $mes=mysql_error();

$message="Il ya eu un problème lors de la mise à jour ".$mes;

return $message;}

else

{$message="Mise à jour effectuée avec succès";

return $message;

}

}

Pour supprimer un site geo

function SupSite($Code)

{

$sql = "DELETE FROM site_sanitaire WHERE Code_Site= '$Code';";

if ($rep=mysql_query($sql))

{

$message = "Suppression effectué avec succès!";

return $message;

}

else

{

$mes=mysql_error();

$message = "Un problème est survenu lors de la suppression! ".$mes;

return $message;

}

}

Nous avons développé comme ça pour toutes les tables

- Les fonctions de mise en forme et de contrôle

Ces fonction écrites en PHP, JavaScripts sont situées dans les fichiers fonction.php et fonction.js, elles permettent d'effectuer des contrôle spécifiques comme par exemple les alertes ou le formatage de la date défini par :

En php. Côté serveur

function FormatDate($date)

{

list($jour, $mois, $annee)=explode("/", $date);

if($annee>2000)

$annee=substr($annee, 2, 2); // ramene l'annee en deux chiffres

return $jour."/".$mois."/".$annee;

}

En javascript. Coté client.

function Sup()

{

if(!confirm("Attention voulez vous vraiment supprimer cet element de votre base de donnée?"))

{ return false;

}

return true;

}

- Les scripts d'interfaçage

Interface d'enregistrement des sites géographiques

Figure 27. Formulaire d'enregistrement des sites géo

Le code source des traitements se présente comme suit :

if(isset($_POST["Valid_Site"]))

{ require_once('ModuleBD.php');

//récupération des données en provenance du formulaire client

$Lib_Site=$_POST['Lib_Site'];

$Categorie=$_POST['Categorie'];

$Latitude=$_POST['Latitude'];

$Longitude=$_POST['Longitude'];

$Couche=$_POST['Couche'];

$Zone=$_POST['Zone'];

$Nb_Lits=$_POST['Nb_Lits'];

$Nb_Medecin=$_POST['Nb_Medecin'];

$Contact=$_POST['Contact'];

$mess=AjoutSiteGeo($Lib_Site, $Longitude, $Latitude, $Categorie, $Nb_Medecin,$Nb_Lits,$Zone,$Couche,$Contact);

$Action="Création du site geo".$Lib_Site;

$m=Journal ($LOGIN, $Action,$COUCHE);

}

if(isset($_POST["Mod_Site"]))

{

require_once('ModuleBD.php');

//recuperation des données en provenance du formulaire lié

$Lib_Site=$_POST['Lib_Site'];

$Categorie=$_POST['Categorie'];

$Latitude=$_POST['Latitude'];

$Longitude=$_POST['Longitude'];

$Couche=$_POST['Couche'];

$Zone=$_POST['Zone'];

$Nb_Lits=$_POST['Nb_Lits'];

$Nb_Medecin=$_POST['Nb_Medecin'];

$Contact=$_POST['Contact'];

$Code=$_POST['Code_Site'];

$mess=ModSiteGeo($Lib_Site, $Longitude, $Latitude, $Categorie, $Nb_Medecin,$Nb_Lits,$Zone,$Couche,$Contact, $Code);

$Action="Modif du site geo".$Lib_Site;

$m=Journal ($LOGIN, $Action,$COUCHE);

}

Ce code permet de récupérer les infos issues du formulaire afin de les insérer dans la base de données ou de modifier la base de données

5.2.4. Classe PHP de connexion à Google Maps

Comme nous l'avons vu un peu plus haut, Google Api a mis à la disposition des développeurs une bibliothèque de fonction JavaScript permettant de personnaliser les cartes et les afficher dans leurs applications. Nous avons exploité en personnalisant une classe php appelé GoogleMapAPI basée sur les fonctions JavaScript de l'API Google Maps . Nous présentons ici cette classe et ses principales fonctions

- Le constructeur $map=new GoogleMapAPI()

- La fonction qui definit le centre de la carte par adresse

$gmap->setCenter('Deido Cameroun');

- La fonction qui définit la taille de la carte en pixels

$gmap->setSize('690px','650px');

- La fonction qui définit le niveau du zoom par défaut

$gmap->setZoom(11);

- La fonction qui défini la langue d'affichage de la carte

$gmap->setLang('fr');

- La fonction qui construit un tableau de marqueurs par coordonnées sur la carte en provenance de la base des données.

$coordtab []=array($Longitude,$Latitude,$Lib_Site,'<strong>'.$Lib_Site.'<br><h5>Cat:'.$Categorie.'<br>Nbre Medecin:'.$Nb_Medecin.'<br>Nbre Lits:'.$Nb_Lits.'<br>Contact:'.$Contact .' Douala</h5></strong>');

$gmap->addArrayMarkerByCoords($coordtab, $Categorie);

- La fonction qui génère la carte

$gmap->generate();

- La fonction qui affiche finalement la carte

echo $gmap->getGoogleMap();

Le code complet est présenté à l'annexe 2

5.3. RESULTAT OBTENU

Nous avons réussi à mettre au point une application de webmapping client serveur web basée sur JavaScript, PHP, MySQL et Google Maps API Nommée VisioCity 1.0. Nous présentons dans ce paragraphe les principales fonctionnalités de cette application.

5.3.1. Sécurité d'accès

Pour assurer la sécurité des informations privées de la plateforme, nous avons mise en oeuvre les 03 facteurs de sécurité informatique suivants :

- Authentification

Tout utilisateur de l'espace privé doit être authentifié par login et par mot de passe crypté.

- Traçabilité

Tous les traitements effectués dans la base de données gardent les traces sur l'heure, l'utilisateur, la date et le traitement effectué dans un mouchard assuré par la fonction automatique «  Journal() ».

- Intégrité

Les utilisateurs n'ont droit qu'aux informations correspondantes à leur profile. Ainsi, l'administrateur à droit à tout, le décideur ne peut créer ni supprimer un utilisateur. Tandis que qu'un abonné ne peut que proposer un site géographique.

Figure 28. Formulaire de contrôle d'accès

5.3.2. Espace public

Cet espace est accessible par tous les visiteurs, Il présente la carte et tous les outils de navigation sur celle-ci. Il est organisé comme suit :

- L'entête portant les informations générales

- La colonne de gauche portant les outils de navigation suivant les thèmes choisis

- La colonne principale celle du milieu contenant la carte de la ville et les outils de manipulation de cette carte.

- La colonne de droite présente en texte l'ensemble des informations issues de la base de données sur les sites géographiques enregistrés.

L'image ci après représente la capture d'écran de cet espace.

Figure 29. Interface publique de visiocity

5.3.3. Administration

C'est dans cette interface que toutes les tâches administratives sont effectuées notamment, la création, la modification ou la suppression des éléments comme les couches géographiques, les zones et sites géographiques. C'est aussi ici que les utilisateurs de l'espace privé sont créés ou validés. Le décideur a droit à la seule fonctionnalité de créer de nouveaux sites géographiques, le reste étant réservé uniquement à l'administrateur de Visio City. La capture de l'écran suivante présente un aperçu de cette interface.

Figure 30. Interface d'administration de visiocity

5.3.4. Accès membres

Les membres ou abonnés sont des personnes enregistrées ayant un login et un mot de passe qui leur permettent de proposer des sites géographiques pour visioCity qui ne seront valides que s'ils sont acceptés par l'administrateur ou par le décideur. Pour devenir membres, les visiteurs s'abonnent via un formulaire d'enregistrement. Une fois enregistrés, ils devront attendre la validation par l'administrateur ou par le décideur. Ce n'est qu'après validation de l'abonnement que le visiteur devient membre et par conséquent commence à bénéficier de toutes les prérogatives de membre.

Figure 31. Interface d'abonnement de VisoCity

5.4. ACQUISITION DES DONNEES

5.4.1. Récepteur GPS utilisé

Pour les données test nous nous sommes équipés d'un récepteur GPS de marque GARMIN notamment le GPS Garmin Oregon 550T, Pour recueillir sur le terrain la géolocalisation des sites qui alimentent notre base de données.

En effet, grâce à son récepteur GPS haute sensibilité et d'un système de prévision par satellite HotFix, Oregon 550t calcule rapidement et avec une grande précision de l'ordre de quelques mètres (5à 6m pour notre cas) les positions géographiques en longitude et latitude. L'avantage de ce récepteur GPS est qu'il fournit les résultats sur tous les formats désirés dont directement exploitable par VISIOCITY et Google Maps. L'image ci-dessous est celle de notre récepteur.

Figure 32. GPS GARMIN OREGON 550t

5.4.2. Résultats

Pour cette phase de travail, nous nous sommes limités aux données purement géographiques, les autres informations pouvant être complétées par les utilisateurs.

Formations sanitaires

Cat

Med

ZONE

Lat. (N)

Long(E)

Laquintinie

HR

 

AKWA

4.048829

9.703520

Général

HR

 

Bedie

4.063590

9.758435

Hôpital de District Deido

HD

 

DEIDO

4.065470

9.711436

Hôpital de District New Bell

HD

 

New Bell

4.029011

9.711520

Hôpital de District Nylon

HD

 

Nylon

4.030400

9.731850

Hôpital de District Bonassama

HD

 

Bonassama

4.071320

9.687600

Hôpital de District de Logbaba

HD

 

LogBaba

4.042360

9.761930

CMA de Bepanda

CMA

 

Deido

 
 

CMA de cité des palmiers

CMA

 

Cité palmiers

4.05225

9.76193

CMA de Soboum (30lits)

CMA

03

Nylon

4.019500

9.732283

CMA de Bonamoussadi

CMA

 

Deido

 
 

Tableau 5 : Tableau des données obtenues

5.5. BILAN DU STAGE

Lorsqu'on nous a confié ce thème portant sur le webmapping, au début il était vague et difficile à comprendre les possibilités de mise en oeuvre. Nous avons commencé par bien analyser la problématique posée, puis nous nous sommes engagés dans des recherches bibliographiques sur internet (resté notre principale source de documentation).

Nos recherches nous ont placées devant toute une panoplie de solutions technologiques pouvant prétendre satisfaire au problème posé. Très tôt nous avons compris les limites de la plupart de ces solutions, et les avantages qu'il y avait à mettre en place une plateforme de webmapping qui communique parfaitement avec googlemaps pour répondre à la problématique.

En effet, avec la riche expérience de GoogleMaps et sa base de cartographie riche en informations de base triplée à son sens de professionnalisme, un observatoire urbain qui y puise le fond de sa cartographie bénéficie des richesses du patrimoine cartographique de ce géant technologique.

En plus, nous avons pris connaissance des possibilités que Google offre aux développeurs, de pouvoir programmer des applications qui communiquent avec sa base cartographique. Cette expérience nous a permis de nous former aux nouveaux outils de développement du webmapping. Par ailleurs pour l'acquisition des données par GPS, à cause du temps nous n'avons pas pu effectuer le tour complet de tous les sites de santé. Nous nous sommes limités à une dizaine de sites pour expérimenter notre plateforme. Qu'à cela ne tienne, le plus dur du travail ayant été effectué, la base de données peut être renseignée à tout moment.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Nous devons apprendre à vivre ensemble comme des frères sinon nous allons mourir tous ensemble comme des idiots"   Martin Luther King