Vous êtes sur la page 1sur 46

UNIVERSITE BLAISE PASCAL CEMAGREF

UFR SCIENCES ET TECHNOLOGIES 24 AVENUE DES LANDAIS


DEPARTEMENT DE MATHEMATIQUES ET D'INFORMATIQUE BP 50085
63177 AUBIERE CEDEX 63172 AUBIERE CEDEX










Master 2 Professionnel mention Informatique et Systmes

RAPPORT DE STAGE






Adaptation, dveloppement et valuation dun systme
dinformation destin administrer les donnes provenant dun
rseau de capteurs hydrologiques communiquant










Prsent par : Rui YUAN


Tuteurs : Gil DE SOUSA
Benoit SARRAZIN


Date : du 6 Avril au 30 Septembre 2009
- 2 -

REMERCIEMENTS


Durant mon stage, j'ai bnfici du soutient moral et technique de plusieurs personnes ce qui a
rendu mon environnement de travail trs agrable.

Je remercie tout d'abord Monsieur Gil DE SOUSA pour mavoir permis de raliser ce stage,
et pour mavoir guid et encadr au cours de celui-ci dans de trs bonnes conditions et dans
une ambiance de travail trs agrable.

Je remercie galement Monsieur Benoit SARRAZIN pour l'intrt qu'il a accord la
progression de mon travail.

Enfin, je tiens remercier l'ensemble des membres des diffrentes quipes de l'unit de
recherche TSCF pour m'avoir aussi bien accueillie et aide.
































- 3 -

RESUME

Mon stage de fin d'tude s'inscrit dans le cadre d'un projet de recherche portant sur la
thmatique de l'hydrologie. L'objectif de ce stage a consist l'adaptation, au dveloppement
et l'valuation d'un systme d'information destin administrer les donnes provenant d'un
rseau de capteurs hydrologiques.

La premire partie de ce stage a t ddie l'tude de la base de donnes B.I.C.H.E.
(Biologie Chimie Hydrologie pour une base Ecologique) du Cemagref. La seconde partie
concerne les modifications de cette base pour permettre l'intgration des relevs issus de
sondes limnimtriques et de pluviomtres. Enfin, la dernire partie fut consacre aux
dveloppements de modules pour la manipulation et la gestion des donnes issues de ces
relevs.

La base de donnes B.I.C.H.E. a t conue grce aux systmes de gestion de bases de
donnes (SGBD) PostgreSQL. Son interface ainsi que les modules complmentaires que nous
lui avons ajouts ont t raliss en langage PHP.


Mot cls: hydrologie, B.I.C.H.E., PostgreSQL.



ABSTRACT


Within the framework of my training period, I had to work in a research project which topic
deals with hydrology. The main objective was the adaptation, the development and the
evaluation of an information system dedicated to management of hydrological data collected
using a wireless sensor network.

The first part of this training period was dedicated to the study of a Cemagref database called
'B.I.C.H.E.'. The second part concerned modifications on this database in order to enable the
importation of records from water level and rain gauge sensors. The final part was devoted to
the development of modules for handling and managing the data.

The database B.I.C.H.E. has been designed using the database management system (DBMS)
PostgreSQL. Its first version interface and the new functionalities that we have added have
been developed in PHP language.


Key words: hydrology, B.I.C.H.E., PostgreSQL.




- 4 -
TABLE DES MATIERES
REMERCIEMENTS..............................................................................................................- 2 -
RESUME................................................................................................................................- 3 -
ABSTRACT...........................................................................................................................- 3 -
TABLE DES MATIERES .....................................................................................................- 4 -
LISTE DES FIGURES...........................................................................................................- 5 -
GLOSSAIRE..........................................................................................................................- 6 -
INTRODUCTION..................................................................................................................- 7 -
PARTIE I : CONTEXTE .....................................................................................................- 8 -
1. Le Cemagref ...................................................................................................................- 9 -
1.1 Prsentation gnral .................................................................................................- 9 -
1.2 Les dpartements scientifiques.................................................................................- 9 -
1.3 Le Cemagref en chiffre ..........................................................................................- 10 -
1.4 Les centres rgionaux.............................................................................................- 10 -
1.4.1 Prsentation .....................................................................................................- 10 -
1.4.2 Le Cemagref en rgion Auvergne-Limousin ..................................................- 11 -
2. Prsentation globale de l'application............................................................................- 11 -
2.1 Rappel de l'tude ....................................................................................................- 11 -
2.2 Rseau de capteurs sans fil.....................................................................................- 12 -
2.3 Description du dispositif actuel..............................................................................- 12 -
2.4 Description des donnes enregistres.....................................................................- 13 -
2.5 Archivage et consultation des donnes ..................................................................- 14 -
2.5.1 La base de donnes B.I.C.H.E du Cemagref ...................................................- 14 -
2.5.2 Les besoins spcifiques lis au rseau de capteurs capacitifs .........................- 14 -
2.5.3 Acquisition des donnes..................................................................................- 15 -
2.5.4 Consultation et extraction des donnes ...........................................................- 15 -
3. Mon travail de stage .....................................................................................................- 16 -
PARTIE II : Prsentation des outils et de la base de donnes B.I.C.H.E...........................- 17 -
1. Prsentation des outils..................................................................................................- 18 -
1.1 L'environnement PostgreSQL................................................................................- 18 -
1.2 Prsentation du langage PHP .................................................................................- 19 -
2. La base de donnes B.I.C.H.E. du Cemagref ...............................................................- 20 -
2.1 L'architecture..........................................................................................................- 20 -
2.2 Vue d'environnement Web.....................................................................................- 21 -
2.3 Vue de la base de donnes prsente sous PostgreSQL...........................................- 22 -
PARTIE III : Evolution de la base de donnes B.I.C.H.E .................................................- 25 -
1. Introduction ..................................................................................................................- 26 -
2. Importation des chroniques de mesure.........................................................................- 26 -
3. Affichage des mesures .................................................................................................- 27 -
4. Affichage graphique pour un intervalle slectionn.....................................................- 29 -
4.1 Affichage des mesures graphiquement ..................................................................- 29 -
4.2 Affichage des mesures directement........................................................................- 31 -
5. Comparaison de deux stations......................................................................................- 32 -
CONCLUSION....................................................................................................................- 36 -
REFERENCES BIBLIOGRAPHIQUES.............................................................................- 37 -
WEBOGRAPHIES...............................................................................................................- 37 -
ANNEXES ...........................................................................................................................- 38 -



- 5 -
LISTE DES FIGURES

Figure 1 : Rpartition des comptences ...............................................................................- 10 -
Figure 2 : 9 capteurs capacitifs rpartis sur le rseau hydrographique du Mercier..............- 12 -
Figure 3 : Exemple de fichier de sortie du capteur limnimtrique capacitif ........................- 13 -
Figure 4 : Enregistrements limnimtriques sur 7 stations de lpisode pluvieux du 20 juin
2007 sur le bassin versant du Mercier ..................................................................................- 15 -
Figure 5 : Fonctionnement du langage PHP.........................................................................- 19 -
Figure 6 : L'architecture de la base B.I.C.H.E......................................................................- 20 -
Figure 7 : Vue d'environnement Web ..................................................................................- 21 -
Figure 8 : Vue de la base de donnes prsente sous PostgreSQL........................................- 22 -
Figure 9 : Requte SQL pour la table de station ..................................................................- 23 -
Figure 10 : Les changements sous lenvironnement PostgreSQL........................................- 24 -
Figure 11 : Evolutions des fichiers de chroniques ...............................................................- 26 -
Figure 12 : Le format du fichier importation .......................................................................- 26 -
Figure 13 : Vue de la page "Changer le format de fichier brut" ..........................................- 27 -
Figure 14 : Liste des stations ayant des chroniques de mesure............................................- 28 -
Figure 15 : Liste des chroniques ..........................................................................................- 28 -
Figure 16 : Consultation journalire de la station MercierExu ............................................- 29 -
Figure 17 : Slection un intervalle pour une station.............................................................- 30 -
Figure 18 : Graphe des mesures dans un intervalle pour une station...................................- 30 -
Figure 19 : Tableau des donnes dans un intervalle slectionn..........................................- 31 -
Figure 20 : Le fichier d'exportation......................................................................................- 32 -
Figure 21 : Chroniques de mesure hydrologiques des stations ancienne version ................- 33 -
Figure 22 : Chroniques de mesure hydrologiques des stations ............................................- 34 -
Figure 23 : Comparaison graphique entre les stations .........................................................- 35 -























- 6 -
GLOSSAIRE

Hydrologie : Lhydrologie est la science de la terre qui sintresse au cycle de leau, cest--
dire aux changes entre latmosphre, la surface terrestre et son sous-sol. [W1]


Limnimtre : Un limnimtre ou station limnimtrique est un quipement permettant
lenregistrement et la transmission de la mesure de la hauteur deau (en un point donn) dans
un cours deau. Cette mesure de hauteur peut tre transforme en estimation du dbit de la
rivire laide dune courbe de tarage. [W1]


Pluviomtre : Le pluviomtre est un instrument mtorologique destin mesurer la quantit
de prcipitation (pluie) tombe pendant un intervalle de temps donn. [W1]


Systme de gestion de bases de donnes : Un systme de gestion de base de donnes (SGBD)
est un ensemble de logiciels qui sert la manipulation des bases de donnes. Il sert effectuer
des oprations ordinaires telles que consulter, modifier, construire, organiser, transformer,
copier, sauvegarder ou restaurer des bases de donnes. [W1]





















- 7 -
INTRODUCTION


Dans le cadre de mon stage de fin d'tudes de Master 2 Informatique et Systme, l'UFR
Sciences et Technologie de l'Universit Blaise Pascal, Clermont II, j'ai effectu un stage au
Cemagref de Clermont-Ferrand, au sein de l'unit de recherche TSCF (Technologies et
systmes d'information pour les agrosystmes). Ce stage s'intgre dans un projet de recherche
en partenariat entre le Cemagref de Lyon et le Cemagref de Clermont-Ferrand.

Le Cemagref est un institut de recherche finalise de rfrence pour la gestion durable des
eaux et des territoires. La gestion durable est un lment constitutif de la diversit biologique
d'une manire conforme aux principes de dveloppement durable. L'organisme Cemagref
centre une partie de ses recherches dans le domaine des transferts hydrologiques de surface,
qui reprsente un phnomne physique essentiel du cycle de l'eau, chose qui fait l'objet du
dveloppement d'un outil de supervision des diffrents quipements rseaux.

Mon stage s'inscrit dans la continuit de travaux raliss prcdemment sur la conception, la
ralisation et l'valuation d'un systme d'information destin administrer les donnes
provenant d'un rseau de capteurs hydrologiques sans fil communiquant.

Dans une premire partie, je rappelle le contexte. Je prsente ensuite les diffrents langages et
outils utiliss : PostgreSQL, PHP et la base de donnes B.I.C.H.E. Dans la dernire partie, je
prsente les extensions que j'ai apportes la base de donnes B.I.C.H.E et l'interface Web
de celle-ci.


























- 8 -














PARTIE I :

CONTEXTE
























- 9 -
1. Le Cemagref

1.1 Prsentation gnral

Le Cemagref, l'institut de recherche finalise de rfrence pour la gestion durable des eaux
et des territoires est un organisme public caractre scientifique et technologique. Il a t
cr en 1981 et a acquis le statut d'tablissement public caractre scientifique et
technologique (EPST) en 1986.

Le Cemagref a pour mission de rpondre des questions concrtes de socit dans le domaine
de la gestion durable des eaux et des territoires en produisant des connaissances nouvelles et
des innovations techniques utiles aux gestionnaires, aux dcideurs et aux entreprises.
Ses thmes de recherche sont centrs sur les ressources en eau de surface, les systmes
cologiques aquatiques et terrestres, les espaces dominante rurale, les technologies pour
leau, les agro-systmes et la sret des aliments.


1.2 Les dpartements scientifiques

Le Cemagref comporte actuellement 5 dpartements scientifiques :
o Ressources en eau, usages et risques
o Milieux aquatiques, qualit et rejets
o Gestion des territoires
o Ecotechnologies et agrosystmes
o Mthodes pour la recherche sur les systmes environnementaux

Une restructuration en cours aura pour consquence le passage de 5 3 dpartements qui
seront les suivants :
o Eaux
o Territoires
o Ecotechnologies
Chaque dpartement a des units de recherche. Actuellement, le Cemagref compte 21 units
de recherche propres (UR), 6 units mixtes de recherche (UMR) et une quipe de recherche
technologique (ERT). Chaque unit de recherche est place sous la responsabilit
fonctionnelle de lun des chefs de dpartement ou de la direction scientifique, et sous la
responsabilit hirarchique du directeur rgional du lieu dimplantation. Les units sont des
lieux de gestion des comptences et des ples relationnels locaux. Chacune des UR est
constitue dquipes bien identifies, chaque quipe assurant la mise en uvre totale ou
partielle dun thme de recherche.


- 10 -
1.3 Le Cemagref en chiffre

Le budget annuel du Cemagref en 2007 est de 88,9 millions d'euros. Les recettes provenant
des contrats slvent 18,2 millions d'euros et assurent l'essentiel des moyens de
fonctionnement des units de recherche.

Le Cemagref emploie environ 1 350 personnes dont 950 permanents pour moiti chercheurs
et ingnieurs, rpartis en 28 units de recherche sur 9 sites principaux.
Il accueille en outre plus de 200 doctorants, 40 post-doctorants et chercheurs trangers, ainsi
quenviron 250 stagiaires de niveau master.
L'effectif des ingnieurs et des chercheurs se rpartit quitablement selon les grandes
orientations scientifiques, comme le montre la figure suivante :

Figure 1 : Rpartition des comptences

(Source: http://www.cemagref.fr/le-cemagref/linstitut/son-identite-ses-missions/le-cemagref-
en-chiffre/)


1.4 Les centres rgionaux

1.4.1 Prsentation

Le Cemagref dispose de 9 centres ou groupement situs en mtropole :
o Aix-en-Provence
o Antony
o Bordeaux
o Clermont-Ferrand
o Grenoble
o Lyon
o Montpellier
o Nogent-sur-Vernisson
o Rennes

Il possde galement une Antenne rgionale la Martinique.


- 11 -
1.4.2 Le Cemagref en rgion Auvergne-Limousin

Le Cemagref mne en Auvergne des recherches autour de deux axes :
o Innovations technologiques pour l'agriculture raisonne et pour l'environnement.
o Collaboration avec les acteurs du dveloppement rgional et de l'amnagement du
territoire dans le devenir des territoires ruraux, avec le dveloppement d'outils et de
mthodes d'aide la dcision, la ralisation d'essais, et l'apport de son expertise dans
les domaines de l'agriculture et de l'environnement.

Le centre de Clermont-Ferrand est implant sur deux sites : site dAubire et site de
Montoldre. Il est constitu de 3 units de recherche, qui ont la particularit d'appartenir des
dpartements scientifiques diffrents :
o TSCF: Technologies et systmes d'information pour les agrosystmes.-UR
o METAFORT: Mutations des activits, des espaces et des formes d'organisation dans
les territoires ruraux.-UMR
o LISC: Laboratoire d'Ingnierie des Systme Complexes.-UR

Je travaille dans l'unit TSCF. Je suis dans une des 4 quipes de TSCF qui s'appelle COPAIN
(Systmes d'Information Agri-Environnementaux Communicants). L'activit de l'quipe est
consacre aux mthodes d'ingnierie des systmes d'information spatialiss ddis la gestion
agri-environnementale.

Ce stage s'intgre dans un projet de recherche dont une prsentation est fournie dans ce qui
suit.


2. Prsentation globale de l'application

2.1 Rappel de l'tude

Lhydrologie de surface est la branche de lhydrologie qui tudie le ruissellement, les
phnomnes drosion par leau, les coulements des cours deau et les inondations. Le projet
de recherche dans lequel mon stage s'intgre porte sur cette thmatique. Le mcanisme de
surveillance dploy sur un bassin versant a pour objectif de fournir des rapports et des
comptes rendus dtaills concernant le fonctionnement hydrologique de surface. L'intrt de
l'utilisation d'un tel rseau de mesure est de prsenter la dynamique spatiale et temporelle des
vnements hydrologiques. [R1, R2]

On utilise une base de donnes pour grer les donnes collectes. Le systme d'information
que nous devons concevoir est aliment en donnes par un rseau de capteurs sans fil dont le
but est de mesurer le niveau d'eau dans un bassin versant.

Au cours du projet, le nombre de capteurs sans fil n'a cess d'augmenter. De plus, la frquence
d'acquisition des donnes est passe de toutes les 3 minutes toutes les 2 minutes. Ainsi,
l'application qui sera ralise devra prendre en compte ces futures volutions. L'objectif final
est l'acquisition des donnes par les capteurs sans fil et leur mise disposition des utilisateurs.

- 12 -
2.2 Rseau de capteurs sans fil

Un rseau de capteurs est un ensemble de capteurs sans fil regroups au sein d'un mme
rseau. Les capteurs sans fil communiquent gnralement en mode Ad Hoc. Le mode Ad Hoc
est un mode opratoire dun rseau sans fil Wifi. Les clients de mode Ad Hoc sont connects
les uns aux autres sans aucun point daccs.

Les principaux lments matriel (ou composants matriels) du capteur sans fil sont:
o Unit de calcul
o Gestionnaire d'alimentations
o Module de communication sans fil
o Dispositif de mesure de la grandeur observe

Notre rseau est constitu d'un certain nombre de capteurs sans fil quips de diffrents
capteurs de grandeur physiques de type pluviomtres ou sondes limnimtriques, partir
desquels on mesure les variations du niveau de l'eau. Ces capteurs sans fils rcoltent les
informations, et les transmettent par la suite une station de traitement de manire autonome.


2.3 Description du dispositif actuel

Le dispositif actuel est constitu de neuf capteurs (bientt 13 capteurs) limnimtriques
distribus sur le rseau hydrologique du Mercier (Figure 2).

L'acquisition des donnes s'effectue pas constant selon une priodicit (2 minutes), et est la
mme pour l'ensemble des capteurs du rseau. Cela reprsente tous les mois plusieurs
centaines de milliers de donnes collecter, traiter, stocker et mettre disposition des
chercheurs.


Figure 2 : 9 capteurs capacitifs rpartis sur le rseau hydrographique du Mercier

- 13 -
2.4 Description des donnes enregistres

Les donnes enregistres sont les suivantes :
o Date de dbut d'acquisition en Jour Mois Anne Heure Minute
o Frquence mesure en Hertz chaque pas de temps
o Hauteur correspondante en cm chaque pas de temps

Ces hauteurs sont calcules via l'talonnage du capteur de grandeur physique qui fixe la loi
linaire de transformation de la frquence en hauteur.

En sortie du capteur ces donnes sont extraites dans un fichier ".dat"(figure 3).

Les autres donnes intressantes archiver sont les donnes de pluviomtrie. Il existe
actuellement 2 pluviomtres sur le site d'tude, un troisime sera prochainement ajout.



Figure 3 : Exemple de fichier de sortie du capteur limnimtrique capacitif


- 14 -
L'application actuelle fonctionne de la manire suivante :
o Passage d'une personne pour rcolter l'ensemble des donnes
o Gestion locale (un seul ordinateur) des donnes dans une base rduite

La nouvelle application comportera les avances suivantes :
o Acquisition des donnes automatique par les capteurs de grandeur physique
o Ajout de fonctionnalits pour amliorer la manipulation, la gestion et le stockage des
donnes collectes dans le serveur

Le travail ralis durant ce stage porte sur la partie amlioration et gestion des donnes
collectes dans le serveur.

L'ensemble des donnes n'est pas centralis. Alors il faut utiliser des rseaux de capteurs pour
remdier ce problme. Pour la manipulation et la gestion des donnes, on utilise le concept
d'un systme d'information adapt s'appuyant sur la base de donnes B.I.C.H.E. du Cemagref.



2.5 Archivage et consultation des donnes

2.5.1 La base de donnes B.I.C.H.E du Cemagref

La base B.I.C.H.E a t cre pour entreposer des donnes de diffrentes natures du Cemagref :
hydromtrie, hydrobiologie

Les donnes hydromtriques sont archives par anne et consultables par mois. Il s'agit des
donnes de pluviomtrie et de hauteur d'eau relier des courbes de tarage pour obtenir des
dbits.

Cette base a t conue pour stocker les donnes sans adaptation particulire pour les
utilisateurs. La manire dont les stations sont rfrences est assez complexe et pas totalement
adapte l'application souhaite.

Dans la partie II de mon rapport, je prsenterai plus en dtails la base B.I.C.H.E.


2.5.2 Les besoins spcifiques lis au rseau de capteurs capacitifs

Toutes l'information provenant des diffrentes stations d'observation doit tre accessible et
consultable simultanment.

Les priodes intressantes correspondent essentiellement aux pisodes pluvieux enregistrs
par les pluviomtres. Il serait donc intressant dans la procdure de consultation des donnes
du rseau limnimtrique de consulter en premier les donnes pluviomtriques. Il existe des
algorithmes qui permettent de filtrer les priodes intressantes qui prsentent des pics de
prcipitations.

- 15 -
Une fois ces priodes intressantes fixes, il faudrait extraire simultanment les graphes de
lensemble des stations pour lesquelles des donnes sont disponibles (Fig. 4).


Figure 4 : Enregistrements limnimtriques sur 7 stations de lpisode pluvieux du 20
juin 2007 sur le bassin versant du Mercier


2.5.3 Acquisition des donnes
Lacquisition de donnes respecte les principes suivants :
o Les donnes collectes seront extraites des chroniques de mesure sur chaque capteur
par un oprateur de terrain (cette tape sera automatise dans le cadre du systme de
rseau communicant accessible distance).
o L'utilisateur va valider les donnes et les charger dans la base de donnes B.I.C.H.E,
avec une synchronisation des donnes issues des diffrents capteurs.



2.5.4 Consultation et extraction des donnes


- 16 -
La consultation ncessite :
o Slection des priodes correspondantes des pisodes pluvieux, soit de faon
manuelle en balayant les donnes pluviomtres puis en saisissant une priode soit
automatique en filtrant les pisodes.
o Visualisation sur les priodes cibles des donnes limnimtriques de lensemble des
capteurs disponibles.
o Exportation dans un tableau de synthse de lensemble des donnes des capteurs sous
forme synchronise. Les frquences pourront tre fournies la demande en plus des
hauteurs deau.

Dun point de vue pratique il faut pouvoir identifier chaque station par son nom et chaque
capteur par son numro. Un capteur peut trs bien changer de station. Il faut prvoir
galement lajout de nouvelles stations par les utilisateurs. La particularit du dispositif est
quil sagit de capteurs lgers facilement dplaables.

A ce niveau, il faudrait pouvoir associer une coordonne gographique chaque station
dobservation et lidal serait de dvelopper une interface cartographique pour consulter les
donnes avec l'outil PostGis. Dans ce cas, la consultation pourrait tre guide par la carte en
slectionnant les capteurs pluviomtriques puis limnimtriques.



3. Mon travail de stage

Mon travail porte sur la partie d'un systme d'information destin administrer les donnes
provenant d'un rseau de capteurs hydrologiques communicant.

Dans un premier temps, j'ai tudi la base BICHE qui a t cre pour entreposer les donnes
de diffrentes natures fournies par des quipes du Cemagref. Le systme de gestion de bases
de donnes utilis pour hberger cette base est le logiciel PostgreSQL. Laccs la base est
obtenu laide dune interface Web ddie qui permet, entre autres, laide de pages en
langage PHP, daccder des chroniques provenant de stations de mesure situes dans
diffrents bassins versants.

Jai ensuite apport diffrentes modifications cette base pour amliorer lintgration des
relevs issus de sondes limnimtriques et de pluviomtres. Une refonte complte du module
ddi limportation des donnes brutes a t ralise afin den faciliter lutilisation. Cela
correspond une premire tape pour rendre la base BICHE mieux adapte la rception de
donnes provenant dun rseau de capteurs hydrologiques. Des travaux sont galement en
cours pour que lapplication finale soit capable de recevoir et de grer des donnes provenant
dun nombre de plus en plus important de capteurs de types diffrents.








- 17 -












PARTIE II :

Prsentation des outils et de la base de donnes B.I.C.H.E





























- 18 -
1. Prsentation des outils
1.1 L'environnement PostgreSQL

PostgreSQL est un systme de gestion de base de donnes relationnelle et objet. C'est un
logiciel libre, c'est--dire toutes les sources sont disponibles. Il est un descendant OpenSource
du code original de Berkeley.

Il supporte une grande partie du standard SQL et contient les nombreuses fonctionnalits
modernes :
o Requtes complexes
o Cls trangres
o Triggers
o Vues
o Intgrit transactionnelle
o Contrle des versions concurrentes

Il est possible d'effectuer des modifications sur le logiciel PostgreSQL de manire lui
ajouter de :
o Nouveaux types de donnes
o Nouvelles fonctions
o Nouveaux oprateurs
o Nouvelles fonctions d'agrgation
o Nouvelles mthodes d'indexage
PostgreSQL fonctionne sous de nombreux systmes d'exploitation tels que, par exemple
Solaris, Linux, Unix etc. Depuis la version 8.0, il fonctionne galement sous le systme
Windows.
Il est concurrent d'autres systmes de gestion de base de donnes, qu'ils soient libres (comme
MySQL), ou propritaires (comme Oracle, Sybase, DB2 et Microsoft SQL Server).
PostgreSQL fonctionne suivant une architecture client/serveur :
o Partie serveur : application fonctionnant sur la machine hbergeant la base de donnes
(le serveur de bases de donnes) capable de traiter les requtes des clients.
o Partie client : installe sur toutes les machines ncessitant d'accder au serveur de base
de donnes (un client peut ventuellement fonctionner sur le serveur lui-mme)

Les clients interrogent ainsi le serveur de bases de donnes l'aide de requtes SQL. [W3]








- 19 -
1.2 Prsentation du langage PHP

Le langage PHP, qui signifie "PHP: Hypertext Preprocessor", est un langage interprt (un
langage de script). Il peut tre excut par un serveur. Le serveur peut interprter et gnrer le
code PHP.

Le langage PHP a t cre au dbut de l'automne 1994 par Rasmus Lerdorf. Aujourd'hui, le
langage PHP en est sa cinquime version.

La syntaxe du langage provient de celles du langage C, du Perl et de Java. Ses principaux
atouts sont :
o Une grande communaut de dveloppeurs partageant des centaines de milliers
d'exemples de script PHP
o Les codes sources sont gratuits (PHP est distribu sous licence GNU GPL)
o L'criture des scripts est simple
o La possibilit d'inclure le script PHP au sein d'une page HTML
o La simplicit d'interfaage avec des bases de donnes, de nombreux SGBD tant
supports
o L'intgration au sein de nombreux serveurs web (Apache, Microsoft IIS, etc.)

Ce schma explique le fonctionnement du langage PHP :

Figure 5 : Fonctionnement du langage PHP
(Source: http://fr.wikipedia.org/wiki/Fichier:Php_arch_shema.png)


Dans une utilisation Web, l'excution du code PHP se droule ainsi : lorsqu'un visiteur
demande consulter une page Web, son navigateur envoie une requte au serveur HTTP
correspondant. Si la page est identifie comme un script PHP, le serveur appelle l'interprte
PHP qui va traiter et gnrer le code final de la page (constitu gnralement d'HTML ou de
XHTML, mais aussi souvent de CSS et de JS). Ce contenu est renvoy au serveur HTTP, qui
l'envoie finalement au client. [W2, W4, W5]



- 20 -
2. La base de donnes B.I.C.H.E. du Cemagref

Pour grer les gros volumes de donnes gnrs par les capteurs sans fil, deux solutions
taient possibles : soit crer une nouvelle base de donnes, soit utiliser une base de donnes
existante. La deuxime solution a t retenue car la base de donnes B.I.C.H.E. du Cemagref
possde, ds le dpart, un sous-ensemble des fonctionnalits recherches.

La base B.I.C.H.E, qui signifie Biologie Chimie Hydrologie pour une base Ecologique, a t
cre pour entreposer les donnes de diffrentes natures du Cemagref de Lyon. Cette base a
t cre sous l'environnement PostgreSQL. Il contient trois parties: Biologie, Physico-chimie
et Hydrologie. Donc on travaille dans la partie Hydrologie.

Les avantages de la base de donnes B.I.C.H.E. sont principalement :
o Fonctionnement sous un modle Client/Serveur : plusieurs personnes peuvent ainsi
accder aux donnes en mme temps ;
o Existence d'un module ddi l'hydrologie.

Pour lapplication qui nous concerne, cette base possde aussi un certain nombre
dinconvnients. La base de donnes B.I.C.H.E. dispose, en effet, nativement dun module
traitant de lhydrologie mais, celui-ci commenant devenir ancien, il ne dispose pas de
certaines fonctionnalits importantes. De plus, certaines parties de la base de donnes tant
communes aux diffrentes thmatiques, cela rend complexe leurs ventuelles modifications.

2.1 L'architecture

La figure (Figure 6) suivante prsente le principe de fonctionnement de la base B.I.C.H.E.

Figure 6 : L'architecture de la base B.I.C.H.E.

Station de supervision


Transfert des
donnes non
automatis
B.I.C.H.E.
PostgreSQL
Serveur APACHE
- 21 -

Notre systme d'information est reprsent sous forme d'une station de traitement avec un
systme de base de donnes dans lequel seront stockes les donnes envoyes par le rseau de
capteurs sans fil. Cependant les donnes envoyes doivent tre mise en forme avant de les
mettre disposition des utilisateurs. La ralisation des fonctionnalits ncessite un
dveloppement spcifique au niveau des scripts PHP.

On utilise le langage PHP qui permet de produire les pages Web dynamique. Lorsqu'un
visiteur demande consulter une page Web, son navigateur envoie une requte au serveur tel
que Apache et peut fonctionner comme n'importe quel langage interprt de faon locale.



2.2 Vue d'environnement Web


Figure 7 : Vue d'environnement Web

La figure ci-dessus reprsente la page principale Web de la base de donnes B.I.C.H.E.
Depuis cette page, on peut accder l'un des trois domaines de recherche abords dans la base
de donnes : biologie, physico-chimie et hydrologie. Mon travail est dans le cadre de
l'hydrologie.




- 22 -
2.3 Vue de la base de donnes prsente sous PostgreSQL


Figure 8 : Vue de la base de donnes prsente sous PostgreSQL

Le schma de la base de donnes comporte de nombreuses tables. Cela rend son tude assez
complexe d'autant plus que certaines tables sont communes diffrents domaines (biologie,
physico-chimie, hydrologie). Par consquent, toutes modifications sur celles-ci doit tre
ralises avec prcaution. Si une table commune est change dans le cadre d'une modification
concernant l'hydrologie, il est possible qu'elle ne puisse plus tre plus utilisable pour les deux
autres domaines.

Le nombre de table n'est pas fix. Quand l'utilisateur souhaite importer les mesures dune
nouvelle station de chronique qui reprsente un capteur sans fil dans la page Web, le serveur
va crer automatiquement une table qui correspond la nouvelle station pour grer les mesures.
Donc, il y a toujours quelques tables que l'on peut considrer comme temporaires .

Je vais prendre un exemple pour illustrer le processus de cration dynamique, sous la base de
donnes B.I.C.H.E., d'une table relative un nouveau point de mesure ou d'observation.

- 23 -
Je souhaite importer les mesures pour une nouvelle station 'Pluviometre rural' avec le code de
station 69154011. Il faut ajouter cette nouvelle station d'abord. La figure 9 prsente la
nouvelle station '69154011' cre.


Figure 9 : Requte SQL pour la table de station


Quand j'ai import les mesures dans cette nouvelle station, la base de donnes B.I.C.H.E. a t
modifie automatiquement avec l'ajout de nouvelles tables. La figure suivante (Figure 10)
montre les changements obtenus, sous PostgreSQL, dans notre base de donnes.


- 24 -

Figure 10 : Les changements sous lenvironnement PostgreSQL

La nouvelle table sappelle mes_p69154011v0 et stocke toutes les donnes de la station
Pluviometre rural qui viennent d'tre insres.






















- 25 -



















PARTIE III :

Evolution de la base de donnes B.I.C.H.E

























- 26 -
1. Introduction

Ce chapitre prsente les volutions ralises sur l'interface de la base B.I.C.H.E. pour une
meilleure gestion au niveau de l'application. Je vais expliquer proprement toutes les tapes de
dveloppement.


Figure 11 : Evolutions des fichiers de chroniques

Le schma ci-dessus prsente les principales tapes de traitement des fichiers de mesures dans
notre systme d'information. Le fichier qui t enregistr par le capteur sans fil est dit le
fichier brut . Pour importer les fichiers dans notre base de donnes, il faut mettre les fichiers
bruts au bon format. Ensuite, on peut analyser les donnes et visualiser les chroniques de
mesure d'une station dans un intervalle donn. Enfin, on peut exporter les fichiers de donnes
au mme format que celui qui permet l'importation.

2. Importation des chroniques de mesure

D'abord, j'ai commenc par importer les chroniques de mesure dans notre base de donnes. Le
fichier importer a le format suivant :











Figure 12 : Le format du fichier importation
Fichiers Bruts
Module de
Mise au format
Fichier au
bon format
de donnes
Module
d'importation
Module
d'exportation
B.D.
Analyse et
Traitements
STATION
;$code_de_la_station
PARAMETRE
;$parametre
PAS DE TEMPS
;$pas_de_temps
UNITE DE MESURE
;$unite_de_mesure
$date_heure;$valeur;$qualite
$date_heure;$valeur;$qualite
$date_heure;$valeur;$qualite
- 27 -

Pour que l'importation du fichier dans notre base de donnes soit parfaite et n'engendre pas
d'erreurs, j'ai ajout une page pour changer le format de fichier brut automatiquement. Mais il
faut quand mme indiquer un certain nombre d'informations relatives la nature des donnes
importes.


Figure 13 : Vue de la page "Changer le format de fichier brut"




3. Affichage des mesures


La base de donnes dispose des informations permettant de connaitre les principaux
vnements dtects par les stations du rseau.

J'ai ajout un sous menu qui s'appelle "Affichage" parmi le menu de consultation. Dans ce
sous menu, j'ai ajout deux liens. Le premier a t nomm "Affichage d'une station" faisant
appel au script "affichage.php". Il sort la liste des stations avec le nom et le code de chacune
d'entre elles. Le deuxime a t nomm "Affichage des deux stations" faisant appel au script
"affichage2.php" (voir annexe 2). Il a t cr pour la partie comparaison de deux stations. Je
vais le prsenter dans la partie suivante.

La capture d'cran ci-dessous reprsente le rsultat d'excution du script "affichage.php":

- 28 -

Figure 14 : Liste des stations ayant des chroniques de mesure


Lorsqu'on clique sur le champ "Code station", on fait appel un autre script qui va nous
rcuprer d'autres informations sur la station choisie comme, par exemple, la lacune, les
mesures hydrologiques par mois ou par annes. J'ai utilis les anciens rsultats d'excution du
script comme dans le menu "Graphe". Donc chaque fois on peut dtailler les chroniques de
mesure et choisir une priode et afficher le graphe correspondant.


Les deux figures suivantes prsentent un exemple d'affichage des chroniques par une station.


Figure 15 : Liste des chroniques

- 29 -

Figure 16 : Consultation journalire de la station MercierExu




4. Affichage graphique pour un intervalle slectionn

Pour une meilleure supervision, j'ai ajout un sous-menu "Slectionner un intervalle" avec
deux liens (voir annexe 1). Le premier lien nomm "graphique" permet aux utilisateurs de
choisir la station et de saisir un intervalle, il affiche le graphe. Le deuxime lien nomm
"donnes" suit les mmes tapes que le premier lien sauf qu'il affiche les donnes dans un
tableau. Enfin, il peut exporter les donnes dans un nouveau fichier au format d'importation.

Dans le paragraphe suivant, est fourni un exemple d'affichage des mesures de manire
graphique.



4.1 Affichage des mesures graphiquement

La figure ci-dessous prsente la page de slection d'une station et d'un intervalle.

- 30 -

Figure 17 : Slection un intervalle pour une station


J'ai mis un champ d'entre avec l'option 'select' pour choisir une station d'abord. Puis il faut
entrer la date de dbut et la date de fin au bon format, par exemple '04/06/2007 20:0'. Si tous
les champs sont remplis, appuyez sur le bouton 'Entrer'. Les donnes saisies sont transfres
un script "courbebis.php" qui a pour fonction d'afficher le graphe requis. La capture d'cran
ci-dessous reprsente le rsultat d'excution du script :


Figure 18 : Graphe des mesures dans un intervalle pour une station

- 31 -
Le graphe reprsente les mesures de la station MercierExu entre 20 h et 21 h le 04 Juin 2007.
L'axe des abscisses Y correspond la valeur d'hauteur de l'eau. Et l'axe des abscisses X
correspond au numro de mesure ou de relev dans l'intervalle de temps concern. Ce numro
est indiqu en premire colonne du tableau de la partie suivante "affichage des mesures
directement".



4.2 Affichage des mesures directement

On procde de la mme faon que ci-dessus c'est--dire on commence par saisir la station et
l'intervalle de temps souhaits. Lorsqu'on clique sur le bouton 'Entrer', le script
"selectinter_donnee.php" est appel et sont affichs toutes les informations saisies ainsi qu'un
tableau contenant les mesures. La capture d'cran ci-dessous reprsente le rsultat d'excution
du script :


Figure 19 : Tableau des donnes dans un intervalle slectionn

De plus, il est possible de cliquer sur le bouton 'OK' pour exporter les donnes qui sont
affiches dans le tableau. (Voir annexe 3) Le nouveau fichier qui s'appelle 'test.txt' (Figure 20)
est au format d'importation.
- 32 -

Figure 20 : Le fichier d'exportation



5. Comparaison de deux stations

Pour une meilleure ergonomie, j'ai ajout un lien nomm "Affichage des deux stations" dans
le sous-menu "Affichage" pour comparer les mesures de deux stations dans un intervalle
slectionn.

Une fois la priode slectionne par l'utilisateur, il faudrait exporter les donnes sous forme
de tableau avec une seule colonne pour les dates. Mais les capteurs sont cadencs 2 minutes
et n'enregistrent pas tous dans la mme minute. A ce niveau il y a un algorithme permettant de
combler les lacunes. L'ide est d'obtenir en sorite le tableau ci-dessous :

- 33 -

Figure 21 : Chroniques de mesure hydrologiques des stations ancienne version

Avec cette prsentation, la datation exacte de chaque relev est perdue. Aprs discussion avec
les futurs utilisateurs, pour l'ajout de nouvelles fonctionnalits, nous sommes revenus un
fonctionnement la minute plutt qu' la frquence d'acquisition (toutes les 2 ou 3 minutes).

Comme dans la partie prcdente, il faut saisir les stations qu'on souhaite comparer et
l'intervalle de temps. J'ai utilis la mme page "slection d'un intervalle" et ajout un autre
champ d'entre pour saisir la deuxime station.

Lorsque l'on clique sur le bouton 'Entrer', toutes les informations saisies et les mesures des
deux stations sont affiches dans un tableau. La figure suivante prsente le rsultat
d'excution du script :

- 34 -

Figure 22 : Chroniques de mesure hydrologiques des stations

Cette figure affiche les informations des deux stations d'abord. Puis il fournit en sortie un
tableau avec une colonne de temps et une colonne pour chaque station avec leurs chroniques
de mesure. Toutes les stations n'tant pas dmarres au mme moment, leurs donnes
appartiennent au mme intervalle de temps (2 minutes) mais pas forcement la mme minute.
Un affichage avec une colonne indiquant la minute exacte d'acquisition plutt que l'intervalle
a t, dans cet exemple, privilgi.


La figure (Figure 23) ci-dessous prsente les courbes des chroniques de mesure, avec l'axe des
abscisses X qui correspond la premire colonne du tableau prcdent. (Voir annexe 4)










- 35 -

Figure 23 : Comparaison graphique entre les stations


Les deux courbes reprsentent les hauteurs d'eau des deux diffrentes stations pour un
intervalle de temps donne. Durant les tests, par plusieurs fois, jai constat des problmes
daffichage. Si on souhaite afficher un trop grand nombre de donnes dans un graphe, laxe
des abscisses X est illisible. Pour rsoudre ce problme, jai rajout une colonne au tableau
prcdent pour numroter chaque relev.




















- 36 -
CONCLUSION


Le but de ce stage tait l'adaptation, le dveloppement et l'valuation d'un systme
d'information destin administrer les donnes provenant d'un rseau de capteurs
hydrologiques communiquant.

Lors de ce stage j'ai rencontr quelques difficults. Tout d'abord je ne connaissais pas
l'hydrologie et la base de donnes B.I.C.H.E. Cette base a t cre pour grer des donnes
lies lcologie. Ensuite, je me suis familiaris avec les outils et les langages informatiques
utiliss.

Ce stage m'a ainsi permis de mettre en pratique les connaissances thoriques et pratiques
acquises lors de ma formation, et den acqurir de nouvelles relatives lutilisation du
langage PHP et du logiciel PostgreSQL. Cette exprience a mis en vidence des points trs
positifs.

Ce projet a galement t l'occasion de me plonger dans le milieu de la recherche. Ce stage au
Cemagref m'a permis de rencontrer des chercheurs et de partager leurs expriences. J'ai
galement eu la chance de travailler au sein d'une quipe accueillante et chaleureuse.

Le bilan de ce stage est dans l'ensemble positif, les principaux buts du projet tant accomplis.
La plus grande partie du travail qui m'a t demande a t ralise. Les quelques
modifications ou amliorations qui restent apporter aux diffrents programmes dvelopps
seront effectues durant le mois de stage qui me reste.

Ce stage est une exprience enrichissante, il me permet de clore ma deuxime anne de
Master 2 Informatique et me donne galement un aperu du travail dans le milieu de la
recherche.





















- 37 -
REFERENCES BIBLIOGRAPHIQUES


[R1] FAHMANI MED EL MAHDI, 2008, Conception, ralisation et valuation d'un
systme d'information destine administrer les donnes provenant d'un rseau de capteurs
hydrologiques communiquant, Mmoire de projet de fin d'tudes, Universit Claude Bernard
Lyon 1.

[R2] SARRAZIN B., 2008, SGBD et Rseau de capteurs limnimtriques capacitifs, Thse,
Cemagref, ISARA Lyon.

[R3] GALLOT K., 2005, Le Grand Livre De Php 5; Developpement Objet, Applications
Pratiques.




WEBOGRAPHIES

[W1] http://fr.wikipedia.org/wiki/

[W2] http://www.phpfrance.com/

[W3] http://www.postgresql.org/

[W4] http://www.php.net/

[W5] http://www.commentcamarche.net/contents/php/phpintro.php3




















- 38 -




















ANNEXES




























- 39 -
Annexe 1

La figure suivante reprsente larborescence des fichiers PHP qui ont t ajouts dans le menu
de consultation :


Figure A.1 : Arborescence du menu "affichage"



Figure A.2 : Arborescence du menu "slection dun intervalle"
Menu Slection dun intervalle
selectinter.php selectinter2.php
courbebis.php
selectinter_donnee.php
exporter.php
Affichage des donnes dune
station (graphiquement)
Affichage de la courbe
Affichage des donnes
d'une station
Slection d'un intervalle
Exportation des donnes
Menu Affichage
affichage.php affichage2.php
trace_compa.php
selectinter3.php
courbe2.php
Affichage une staton
Slection
dune station
Comparaison deux stations
Slection d'un intervalle
Affichage des courbes
- 40 -
Annexe 2
Script "affichage2.php"
<?
..
$tpl->assign('TITRE',"Comparer les deux stations");
$tpl_ente->expand();

$tpl->assign('LIBELLE_CHAMP',"Slectionner la premire station");
$tpl->assign('NOM_CHAMP',"station1");

//selection les stations
$stationQ = $dbConn->query("
SELECT DISTINCT m.bassin,nom_milieu,c.id_chronique, tp.nom_type_parametre,
c.unite_temps, c.pas_temps, s.code_station, s.nom_station, AVG(taux), MIN(annee),
MAX(annee)
FROM station s, param_chro_hydro p, type_param_hydro tp, chronique_hydro c,
lacune_hydro l,milieu m
WHERE c.id_parametre_chronique=p.id_parametre_chronique
AND tp.code_type_parametre=p.code_type_parametre
AND p.code_station = s.code_station
AND c.id_chronique = l.id_chronique
AND s.id_milieu=m.id_milieu
GROUP BY m.bassin,c.id_chronique, tp.nom_type_parametre, c.unite_temps, c.pas_temps,
s.code_station, s.nom_station,nom_milieu");

for($station1=$stationQ->first();!$stationQ->atEnd();$station1=$stationQ->next())
{
$tpl->assign('OPTION_VALUE', $station1['nom_station']);
$tpl->assign('OPTION_VALUE_AFFICHER',$station1['code_station']);
$tpl_option->expand();
}
$tpl_liste->expand();
$tpl_form2->expand();
$tpl->assign('LIBELLE_CHAMP',"Slectionner la deuxime station");
$tpl->assign('NOM_CHAMP',"station2");
for($station2=$stationQ->first();!$stationQ->atEnd();$station2=$stationQ->next())
{
$tpl->assign('OPTION_VALUE', $station2['nom_station']);
$tpl->assign('OPTION_VALUE_AFFICHER',$station2['code_station']);
$tpl_optionB->expand();
}

$tpl_liste1->expand();
$tpl_form3->expand();
$tpl->assign('SSTITRE',"Selectionner un intervalle, le format d'entre commence par jour, date,
anne, heure et minute. ex: 06/06/2007 20:00");
$tpl_ssente->expand();
$tpl->assign('LIBELLE_CHAMP',"Date de dbut");
$tplLigne_d->expand();
$tplLigne_m->expand();
- 41 -
$tplLigne_y->expand();
for($i=0;$i<=24;$i++)
{ $h[$i]=$i;
$tpl->assign('OPTION_HEURE',$h[$i]);
$tpl->assign('OPTION_HEURE_AFFICHER', $h[$i]);
$tpl_option1->expand();
}
$tplLigne_h->expand();
for($j=0;$j<60;$j++)
{
$m[$j]=$j;
$tpl->assign('OPTION_HEURE',$m[$j]);
$tpl->assign('OPTION_HEURE_AFFICHER', $m[$j]);
$tpl_option2->expand();
}
$tplLigne_min->expand();
$tpl_libelle->expand();
$tpl->assign('LIBELLE_CHAMP',"Date de fin");
$tplLigne_d2->expand();
$tplLigne_m2->expand();
$tplLigne_y2->expand();
for($i=0;$i<=24;$i++)
{
$h1[$i]=$i;
$tpl->assign('OPTION_HEURE',$h1[$i]);
$tpl->assign('OPTION_HEURE_AFFICHER', $h1[$i]);
$tpl_option3->expand();
}
$tplLigne_h2->expand();
for($j=0;$j<60;$j++)
{
$m1[$j]=$j;
$tpl->assign('OPTION_HEURE',$m1[$j]);
$tpl->assign('OPTION_HEURE_AFFICHER', $m1[$j]);
$tpl_option4->expand();
}

$tplLigne_min2->expand();
$tpl_libelle2->expand();
//$tpl_form1->expand();
$tplVar->expand();
$script = "selectinter3.php";
$tpl->assign('SCRIPT', $script);

$tpl_form1->expand();
$tpl->expand();
$tpl->printContent();
// met le pied de page
$pageLayout->footer();
?>
- 42 -
Annexe 3
Script "exporter.php"
<?
// Charge la df de la classe Template
require_once ('Template/Template.inc');
// Charge classe pageLayout
require_once ('pageLayout.inc');
// Charge les libelles
require_once('chroniques/libelles.inc');
// Charge infoChronique pour les ronds
require_once('chroniques/infoChronique.inc'); //avec requiere_once on se rassure que le code
ne se rajoute qu'une seul fois.

$titre = "B.I.C.H.E Hydrologie";

// on cre une instance de pageLayout
$pageLayout = new pageLayout("Consultation",NULL,NULL,NULL,'hydrologie');
$pageLayout->setTitle($titre);
$pageLayout->displayNavPanel(TRUE);
//on enlve les liens intranet
$pageLayout->displayStandardLinks(FALSE);
// je met le menu appropri
include_once('menus/manuHydroConsult3.inc');

// met l'entte
$pageLayout->header();


$dbConn =& new dbConnection();
// nouvel objet Template
$tpl =& new Template();

// Chargement du modle
$tpl->loadTemplate('exportation.html');

$tpl_ente = & $tpl->getBlock('titre');
$tplLien = & $tpl->getBlock('lien');

$tpl->assign('TITRE',"Exportation");
$tpl_ente->expand();

$codestation=$_POST["codestation"];
$parametre=$_POST["parametre"];
$pasdetemps=$_POST["pasdetemps"];
$unitedemesure=$_POST["unitemesure"];
$nomtable=$_POST["nomtable"];
$datedeb=$_POST["datedeb"];
$datefin=$_POST["datefin"];
//////////////////////////////////////////////////
$fuseau="GMT";
- 43 -
$unite="mm";
/////////////////////////////////////////////////
$fpt2=fopen("test.txt","w");

fputs($fpt2,"STATION\n".";".$codestation."\n");
fputs($fpt2,"PARAMETRE\n".";".$parametre."\n");
fputs($fpt2,"PAS DE MESURE\n".";".$pasdetemps.$unitedemesure."\n");
fputs($fpt2,"UNITE DE MESURE\n".";".$unite."\n");
fputs($fpt2,"FUSEAU\n".";".$fuseau."\n");


$infoT = $dbConn->query("
SELECT dateheure,valeur
FROM $nomtable
WHERE dateheure BETWEEN '$datedeb' AND '$datefin'
ORDER BY dateheure");

for($chronique1=$infoT->first();!$infoT->atEnd();$chronique1=$infoT->next())
{
$date=explode("/",$chronique1['dateheure']);
fputs($fpt2,$date[1]."/".$date[0]."/".$date[2].";".$chronique1['valeur'].";"."v"."\n");
}

fclose($fpt2);

$tpl->assign('TEXTEQQ',"Le fichier est t export.");
$tpl->assign('SCRIPT_LIEN','selectinter2.php');
$tpl->assign('LIBELLE_LIEN',"Retour la page de selection un intervalle");

$tplLien->expand();
$tpl->expand();
$tpl->printContent();
$pageLayout->footer();

?>















- 44 -
Annexe 4
Script "courbe2.php"

<?
// Charge la df de la classe Template
require_once ('Template/Template.inc');
// Charge classe dbConnection
require_once ('dbClasses.inc');
// Charge classe pageLayout
require_once ('pageLayout.inc');
// Charge les libelles
require_once('chroniques/libelles.inc');
// Charge infoChronique pour les ronds
require_once('chroniques/infoChronique.inc'); //avec requiere_once on se rassure que le code
ne se rajoute qu'une seul fois.
// Charge tracage pour le graphe
require_once("chroniques/tracage.inc");

$titre = "B.I.C.H.E Hydrologie";

// on cre une instance de pageLayout
$pageLayout = new pageLayout("Consultation",NULL,NULL,NULL,'hydrologie');
$pageLayout->setTitle($titre);
$pageLayout->displayNavPanel(TRUE);
//on enlve les liens intranet
$pageLayout->displayStandardLinks(FALSE);
// je met le menu appropri
include_once('menus/manuHydroConsult3.inc');

// met l'entte
$pageLayout->header();

$dbConn =& new dbConnection();

// nouvel objet Template
$tpl =& new Template();

// Chargement du modle
$tpl->loadTemplate('saisie_intervalle2.html');

// rcupration de blocs
$tplTitre = & $tpl->getBlock('titre');
$tplForm = & $tpl->getBlock('form');
$tplListe = & $tplForm->getBlock('liste');
$tplSstitre = & $tplForm->getBlock('sstitre');
$tplTab = & $tplForm->getBlock('tableau');
$tplEt = & $tplTab->getBlock('entete_tableau');
$tplCol = & $tplEt->getBlock('colonne');
$tplColSimple = & $tplCol->getBlock('colonne_simple');
$tplColLien = & $tplCol->getBlock('colonne_lien');
- 45 -
$tplLigne = & $tplTab->getBlock('ligne');
$tplCase = & $tplLigne->getBlock('case');
$tplElem = & $tplCase->getBlock('element');
$tplElemLien = & $tplCase->getBlock('element_lien');

$tpl->assign('TITRE',"Zoom");
$tplTitre->expand();
$tpl->expand();

$tpl->printContent();

$station1 = $_POST["station1"];
$station2 = $_POST["station2"];
$datedeb = $_POST["date_debut"];
$datefin = $_POST["date_fin"];

$chroniqueA=$dbConn->query("
SELECT dateheure, valeur
FROM $station1
WHERE dateheure BETWEEN '$datedeb' AND '$datefin'
ORDER BY dateheure");

$chroniqueB=$dbConn->query("
SELECT dateheure, valeur
FROM $station2
WHERE dateheure BETWEEN '$datedeb' AND '$datefin'
ORDER BY dateheure");
$i=0;
for($chronique1=$chroniqueA->first();!$chroniqueA->atEnd();$chronique1=$chroniqueA-
>next())
{
//$tabtimeA[$i] =$chronique1['dateheure'];
$tabtimeA[$i] = substr($chronique1['dateheure'],11,5);
$tabA[$i] = $chronique1['valeur'];
$i++;
}
$j=0;
for($chronique2=$chroniqueB->first();!$chroniqueB->atEnd();$chronique2=$chroniqueB-
>next())
{
$tabtimeB[$j] = $chronique2['dateheure'];
$tabB[$j] = $chronique2['valeur'];
$j++;
}
include ("src/jpgraph.php");
include ("src/jpgraph_line.php");

$ydata = $tabA;
$ydata2 = $tabB;

- 46 -
// Create the graph. These two calls are always required
$graph = new Graph(1000,600,"auto");
$graph->SetScale("textlin");
$graph->img->SetMargin(60,20,20,50);
$graph->SetShadow();

$graph->ygrid->Show(true,true);
$graph->xgrid->Show(true,false);

$graph->xaxis->SetTextLabelInterval(2);

// Create the linear plot
$lineplot=new LinePlot($ydata);

$lineplot2=new LinePlot($ydata2);

// Add the plot to the graph
$graph->Add($lineplot);
$graph->Add($lineplot2);

$lineplot-> mark->SetType(MARK_UTRIANGLE);
$lineplot2-> mark->SetType(MARK_DIAMOND);

$graph->title->Set("station ".$station1." et ".$station2);
$graph->xaxis->title->Set("date");
$graph->yaxis->title->Set("hauteur de l'eau");

$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

$lineplot->SetColor("blue");
$lineplot->SetWeight(2);

$lineplot2->SetColor("orange");
$lineplot2->SetWeight(2);

$lineplot->SetLegend("station ".$station1);
$lineplot2->SetLegend("station ".$station2);

$graph->yaxis->SetColor("red");
$graph->yaxis->SetWeight(2);
$graph->SetShadow();

// Display the graph
$graph->Stroke("graph0.png");
echo "<BR><img src='graph0.png'/>";

// met le pied de page
$pageLayout->footer();?>