Mis à jour 29/11/2021
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 OceanSITES et 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 IRD Gitlab.
Il est également nécessaire de récupérer le dépôt oceano qui contient quelques boites à outils Matlab indispensables regroupées dans ce module.
Les scripts Perl utilisés pour formater les fichiers de données au format "datagui" sont disponibles dans le dépôt CRDAP.
Fonctionnalités
datagui permet de lire et visualiser les données :
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.
Sections
Un module permet de sélectionner un ensemble de station puis générer dynamiquement le code de la fonction Matlab plot_section en fonction du paramétrage sélectionné par l’utilisateur.
Lorsque le fichier NetCDF est mis à jour aprés chaque station, il sera chargé en mémoire avec datagui puis les sections peuvent être tracées avec le code suivant donné en exemple, extrait du fichier process.bat
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 :