Mis à jour 27 juillet 2007
Introduction
La diversité des systèmes d’acquisition utilisés en Océanographie Physique ne facilite pas toujours le traitement et la validation des données acquises.
Il est important de pouvoir effectuer un contrôle rapide et en quasi temps réel des données afin de pouvoir corriger les éventuelles erreurs sur les données ou métadata.
Nous avons identifié 3 types de données :
Chaque type de données est identifié par le paramètre mesuré, le type de capteur et/ou instrument utilisé ainsi que sa position.
Principe
Les systèmes d’acquisition utilisées lors des campagnes océanographiques ont leurs formats de données propres, mais l’exportation se fait généralement en ASCII. La difficulté consiste généralement à écrire un programme de conversion pour chaque type de fichier et un ou plusieurs scripts de visualisation (Matlab, IDL, PlotPlus, etc). Lorsque le nombre de paramètres change, il faut modifier le programme de conversion, voir le recompiler lorsqu’il est écrit en C ou Fortran, puis adapter le script de visualisation. Cette opération doit être répétée pour chaque type d’instrument et toute la difficulté consiste dans la maintenance du code lié à l’évolution des fonctionnalités.
Cette opération de conversion est actuellement réalisée par un ensemble de scripts Perl. L’un des principes de datagui consiste à définir un format interne et commun des données sous la forme d’une matrice quelque soit le format du fichier d’origine.
Les scripts Perl peuvent générer 4 types de fichiers : ASCII, XML, NetCDF et maintenant ODV. La structure des données une fois le fichier chargé en mémoire sous Matlab reste la même. On retrouvera un entête sous forme d’attributs globaux, les variables à une dimension pour le positionnement et la date, et des variables à une ou 2 dimensions pour les données.
L’utilisateur pourra ensuite visualiser les données, tracer des coupes avec les fonctions intégrées à datagui, ou bien écrire ses propres fonctions de traitement ou de visualisation.
Pour arriver à cela, on utilise une codification
basée sur des codes GF3 (4 caractères) permettant d’identifier de façon unique chaque paramètre.
Un exemple ci dessous de données de trajectoire (Thermosalinographe TSG) au format ASCII. L’entête est réduit à sa plus simple expression. Le même type de fichier au format XML aura un entête détaillé permettant le chargement dans une base de données par exemple.
EGEE4 ANTEA IRD SBE21 3284
YEAR DAYD LATX LONX SSJT SSPS CNDC SSTP
2006 319.6984 +14.4825 -17.37684 28.580 34.419 5.600 28.425
2006 319.6985 +14.4822 -17.37684 28.580 34.478 5.608 28.424
2006 319.6986 +14.4820 -17.37684 28.580 33.943 5.531 28.424
La structure d’un fichier trajectoire aura toujours les 4 premières colonnes, il suffira de boucler la lecture sur les clés des colonnes 5 à n pour lire le fichier et accèder aux variables.
Dans un fichier de type profil, l’entête d’un profil ou d’une station est identifié par la profondeur -1, le jour julien décimal, la latitude et longitude décimale et la date. Dans le cas d’un profil CTD comme celui ci-dessous, la colonne N/A correspond au nombre de scan utilisé pour la réduction des données tous les decibars.
EGEE4 ANTEA IRD SBE911+ 09P10828
PRFL PRES TEMP PSAL DENS SVEL DOX2 FLU2 NAVG
1 -1 321.648 7.4670 -14.3823 20061118153320 1e36 1e36 1e36
1 0 29.231 33.584 20.924 1542.53 208.018 +0.054 0
1 1 29.231 33.584 20.924 1542.53 208.018 +0.054 24
1 2 29.283 33.589 20.910 1542.66 207.666 +0.0527 66
1 3 29.127 33.675 21.028 1542.44 207.725 +0.057 62
Le même exemple de fichier avec entête XML. La structure ou grammaire du fichier XML est déclarée dans la DTD oceano.dtd
Installation
Le code source de dataGUI est disponible sous forme d’une archive compressée datagui.tgz
Il est également nécessaire de récupérer l’archive oceano.tgz qui contient quelques boites à outils Matlab indispensables regroupées dans ce module comme m_map, seawater, timeplot ainsi que du code générique utilisé à l’US025. Cette archive contient également les versions des scripts Perl utilisés pour formater les fichiers de données au format "datagui".
Les modules en cours de développement sont également disponibles sous subversion :
https://svn.mpl.ird.fr/us191/datagui/trunk/
https://svn.mpl.ird.fr/us191/oceano/trunk/
Récupérer ces modules avec un client subversion, Tortoise sous Windows ou svn sous Unix (accepter au préalable le certificat SSL du serveur IRD) :
$ cd <svn_path>
$ svn co https://svn.mpl.ird.fr/us191/datagui/trunk/ datagui
$ svn co https://svn.mpl.ird.fr/us191/oceano/trunk/ oceano
Mettre à jour le path Matlab (pathtool sous Windows) ou la variable MATLABPATH sous Linux en y ajoutant les chemins suivant votre installation :
<svn_path>/oceano
<svn_path>/datagui
<svn_path>/oceano/lib/matlab
<svn_path>/oceano/lib/matlab/m_map
<home_dir>/matlab/local/mexnc
<home_dir>/matlab/local/GeodiseLab-1.2.1/GeodiseLab-matlabR14/XMLToolbox
/opt/matlab7.1/toolbox/netcdf
/opt/matlab7.1/toolbox/netcdf/ncfiles
/opt/matlab7.1/toolbox/netcdf/nctype
/opt/matlab7.1/toolbox/netcdf/ncutility
Fonctionnalités
datagui permet de lire et visualiser les données :
Tracés de route en Lat/long en fonction du temps
Sections
Trajectoires (scatter)
etc.... a compléter
Utilisation
Lancer Matlab puis datagui, choisir le format des fichiers, par défaut, on utilise XML mais l’utilisateur à le choix entre NetCDF, XML et dataGUI (format d’origine mais progressivement obsolète).
Choisir également le type de données, TIME_SERIE, TSG, METEO, CTD, XBT, ADCP ou BOTTLE.
Se déplacer éventuellement dans l’arborescence du système de fichiers, bouton "change directory" et choisir la fichier à charger en mémoire.
Conventions
Liens utiles
Bonjour Jacques !
Excellent !
Merci pour la mise en ligne de ce site ! Je me ressers de bon nombre de parties de ton code Matlab dans mon stage actuel. Celui-ci consiste en la mise en place d’une interface de visualisation des données de véhicules électriques (batteries, et piles à combustibles). Je te transmettrais les sources.
Encore merci,
Mes sincères salutations à l’US025 !
Merci Nicolas
Les sources de datagui sont désormait accessibles sous subversion à l’URL suivante :
https://svn.mpl.ird.fr/us191/datagui/trunk/
ainsi que celles du module oceano :
https://svn.mpl.ird.fr/us191/oceano/trunk/
Bon fun à WHOI
Bonjour,
J’ai chargé les sources SVN qui me donnent des erreurs lors du chargement des datas fournies en échantillon dans le package datagui.
Exemple, le fichier egee2_CTD.xml lu depuis dataGui amène à l’erreur suivante :
Error in ==> profil.read_file_xml at 25
cycle_mesure = tree.ENTETE1.CYCLE_MESURE1.LIBELLE1.CONTENT ;
La structure du fichier (de donnée ou le source) ne semble pas être correcte.
Comment y remédier ?
Merci de votre sollicitude.
Roger,
Merci pour cette remarque.
En effet, la structure de la DTD a quelque peu évoluée et je n’ai pas mis à jour l’archive des exemples.
Vous trouverez ci joint un fichier de test avec 4 stations qui devrait fonctionner avec la nouvelle DTD :