• Aucun résultat trouvé

L’utilisation d’un ADCP génère une quantité importante de données que nous avons organisée à l’aide d’une base de données relationnelle utilisant le système de gestion MySQL. Le schéma utilisé pour stocker les données (voir figure 3) se base sur les sorties ASCII standards du logiciel de contrôle propriétaire, WinRi-

ver, des ADCPs de marque RD Instruments. Les données acquises peuvent être 18. CherryPy : A Minimalist Python Web Framework (2014). url : http://www.cherrypy. org/.

19. Le fichier se trouve sur le site http://www.ipgp.fr/∼chauvet/these.html. 20. Python CE : Python for Microsoft Windows CE (2014). url : http : / / pythonce . sourceforge.net/.

décomposées en une table générale, nommée ProfileInfo, contenant les informa- tions générales sur les mesures, une table pour les données relatives à chaque profil vertical, nommée EnsembleInfo, ainsi qu’une table destinée aux données mesurées à chaque profondeur, nommée ADCPData. Le lien entre ces différentes tables est assuré par l’intermédiaire de la clef Profcode, qui lie la table ProfileInfo à la table EnsembleInfo et de la clef Ensemblecode, liant les tables EnsembleInfo et ADCP- Data. Cette méthode de gestion permet d’archiver efficacement les données et de

ProfileInfo Profcode rivername DCL BAT DFCF NDC NPPE TPE PM comment Type GGAcode VTGcode EnsembleInfo

Ensemblecode ETMonth ETYear

Profcode ETDay ETHour

ETMin ETSec ETHund

ENum NES PITCH

ROLL CORRHEAD ADCPTemp

BTVelE BTVelN BTVelUp

BTVelErr CBD GGAA

GGAD GGAHDOP DB1

DB2 DB3 DB4

TED TET TDTN

TDTE TDMG LAT

lON NDInv NDfnvu

NDfnvu2 DVMP DVTP DVBP DVSSDE DVSD DVESDE DVED SDML SDBL NBINS MU VR IU ISF SAF ADCPData

Dcode Ensemblecode DEPTH

VM VD EVC NVC VVC ERRV BCKSB1 BCKSB2 BCKSB3 BCKSB4 PG Q Profcode Ensembleco de

Figure 3 – Schéma de la base de données SQL. Les trois tables, ProfileInfo, Ensem- bleInfo et ADCPData sont reliées par les clefs Profcode et Ensemblecode.

les utiliser depuis différents langages de programmation, par exemple Python.

C.2.1 Script de création de la base de données

Avant de construire la structure de la base de données, il faut la créer. Pour ce faire, il faut ouvrir une console MySQL et entrer la commande pour construire une nouvelle base de données :

Le script BaseADCP.sql21contient les commandes de création de la structure

de la base de données « BaseADCP » (voir le schéma 3). Pour l’exécuter, il suffit de le lancer en utilisant la commande suivante :

mysql -uVOUS -pVOTREMOTDEPASSE BaseADCP < BaseADCP.sql

C.2.2 Import des données

Une fois la base de données créée, il faut exporter vos données ADCP au for- mat ASCII standard en utilisant le logiciel WinRIVERII. Lors de l’utilisation d’un GPS, il faut sortir trois fichiers ASCII ; un, contenant les données de vitesse cal- culées à partir des mesures de déplacements du radeau obtenues par l’écho du fond (Bottom-Tracking) ; deux, pour celles calculées à partir des données GPS, une pour le mode GGA (vitesse recalculée par WinRiverII à partir des positions GPS) et trois, pour le mode VTG (Vitesse fournit directement par le GPS). Nous vous conseillons de classer ces fichiers, qui portent le même nom pour les trois modes, dans trois dossiers distincts et ainsi avoir une structure similaire à :

— BT — mesure_000_ASC.TXT — . . . — GGA — mesure_000_ASC.TXT — . . . — VTG — mesure_000_ASC.TXT — . . .

Pour importer ces données dans la base de données, nous avons développé une bi- bliothèque Python, nommée libImportADCP.py qui transcrit les fichiers ASCII

en fichiers SQL. Voici un exemple de son utilisation pour le fichier mesure_000_ASC.TXT

#Il faut donner le chemin vers la bibliothèque libImportADCP.py

import sys

sys.path.append(’/home/hugo/developpement/python/adcp/lib’)

import libImportADCP as importer

#Initialise la classe AdcpToSql qui sert à importer les données # usa=Mysql username [default: ’root’]

# pasa=Mysql userpass [default: ’’]

# serva=Mysql server address [default: ’localhost’] # basa=Mysql database name [default: ’BaseADCP’] # mode=reference mode [default: ’BT’]

import_bt = importer.AdcpToSql(mode=’BT’, usa=’ADCP’,

pasa=’ADCP’,

21. Le fichier se trouve sur le site http://www.ipgp.fr/∼chauvet/these.html Ou joint à la version numérique du document en cliquant ici.

serva=’localhost’, basa=’BaseADCP’)

#On récupère un nouvel ID pour ces données

#en interrogeant la base de donnée ( max(profcode)+1 ) import_bt.getnids()

print("The mysql id for this measurement is %i"%import_bt.nid) #On indique le chemin vers le fichier contenant les données import_bt.NameIn(’/path/to/BT/mesure_000_ASC.TXT’)

#Le chemin pour le fichier de sortie import_bt.NameOut(’/path/to/output.sql’) #Le nom de la riviére

import_bt.rivername(’Your river name’) #Un petit commentaire

import_bt.comment(’Your comment on this measurement’) #On traite le fichier ASCII

import_bt.parsADCP() #On le charge dans MySQL import_bt.sourceADCP() #### Mode GGA ####

#Il faut définir l’ID ( champ ProfCode dans MySQL ) #du mode BT importé ci-dessus, il est enregistré #dans la variable import_bt.nid

import_gga = importer.AdcpToSql(mode=’GGA’, parent = import_bt.nid,

nema=’/pat/to/GGA/mesure_000_ASC.TXT’, nemb=’/path/to/output.sql’)

#On tramsforme le fichier et on le charge import_gga.parsADCP()

import_gga.sourceADCP() #### MODE VTG ##### #Idem pour le mode TVG

import_vtg = importer.AdcpToSql(mode=’VTG’, parent = import_bt.nid,

nema=’/path/to/VTG/mesure_000_ASC.TXT’, nemb=’/path/to/output.sql’)

#On transforme et charge import_vrg.parsADCP() import_vtg.sourceADCP()

Nous avons créé un script (voir le §F.1.2) qui se lance directement depuis un terminal afin de simplifier les importations de nombreux fichiers, comme lors de la mesure de différents profils statiques. Celui-ci prend comme entrée un fichier de paramètres, enregistré ici sous le nom de « comment.txt », listant l’ensemble des noms de fichiers ainsi qu’un commentaire pour chacun d’entre eux sous la forme :

#Nom du fichier|commentaire

mesure_000_ASC.TXT|Commentaire sur cette mesure mesure_001_ASC.TXT|Commentaire sur cette autre mesure

Avant de pouvoir utiliser ce script, vous devez changer la 25e ligne du code et

indiquer le chemin vers libImportADCP.py. Une fois configuré, il ne vous reste plus qu’à le lancer :

Importer.py -rivername NOM_DE_LA_RIVIERE -dbt ./BT -dvtg ./VTG -dgga ./GGA \, -dcom ./comment.txt -user ADCP -pass ADCP

Les arguments -dbt, -dvtg, et -dgga permettent de définir les dossiers contenant les données pour les différents modes de mesure.

Documents relatifs