Utilisation de Erddap
Chargement des jeux de données
Introduction / Préambule
Erddap fournit un programme en ligne de commande « GenerateDatasetsXml.sh » dans le répertoire /opt/tomcat/webapps/erddap/WEB-INF qui va :
- analyser les jeux de données qu'on lui fournit et
- générer le code XML qui va décrire un grand nombre de formats de jeux de données.
Le code XML produit par la commande devra être placé dans le fichier ~/tomcat/content/erddap/datasets.xml GenerateDatasetsXml pose une série de questions pour essayer de reconnaitre comment est organisé le jeu de données.
GenerateDatasetsXml fait une sorte de "data mining", il va fouiller la source de données et, avec les réponses fournies va essayer de reconnaitre et extraire les données et metadonnées qu'il trouve dans les fichiers (noms de variables, metadata, et les données brutes elles mêmes. etc). Si les réponses sont correctes par rapport au jeu de données, les informations seront chargées et accessibles dans Erddap... sinon il faudra investiguer les erreurs possibles dans les fichiers de logs
Le code XML produit n'est pas exempt d'erreurs ou de fautes, si le jeu de donnée n'est pas chargé par erddap et n'apparait pas dans l'interface web, c'est qu'il ya eu un probleme lors de l'analyse des fichiers, il faudra alors :
- regarder les traces dans les logs
- modifier les réponses
- relancer la commande
- ou bien retoucher le code à la main avec un éditeur
TP1: griddap netcdf : chlorophylle ibi-roos
c'est parti.... Pour commencer, ne pas oublier de passer sous l’identité « tomcat » pour :
- charger les bonnes variables d'environnement, et de
- mettre le chemin vers l’interpréteur java dans le PATH, et
- se rendre dans le répertoire /opt/tomcat/webapps/erddap/WEB-INF, pour lancer le script * ./GenerateDatasetsXml.sh*
$ su – tomcat $ source ./setenv.sh $ export PATH=$JAVA_HOME/bin/:$PATH $ cd /opt/tomcat/webapps/erddap/WEB-INF $ ./GenerateDatasetsXml.sh
Nous allons commencer par rentrer un premier jeu de données Ifremer qui représente des données surfaciques de chlorophylle à l'échelle de la planète. Ce sont des fichiers au format NetCDF.
Ces fichiers de données sont disponibles sur le NAS de la formation et sur la clé USB que nous vous avons fournie dans le répertoire erddap/datasets sous la forme d'une archive data-chl-ibi-roos.tar
Vous copierez donc ces données vers votre VM via le répertoire /mnt/share partagé entre votre machine physique et la VM pour les mettre ensuite dans le répertoire /home/tomcat/data/ibi-roos
$ mkdir /home/tomcat/data/ibiroos
$ cd /home/tomcat/data/ibiroos
$ tar xvf /mnt/share/data-chl-ibi-roos.tar
Après "détarrage", vous devez avoir 7 fichiers NetCDF dans votre répertoire/home/tomcat/data/ibiroos
20170321-EUR-L4-CHL-ATL-v01-fv01-OI.nc
20170322-EUR-L4-CHL-ATL-v01-fv01-OI.nc
20170327-EUR-L4-CHL-ATL-v01-fv01-OI.nc
20170325-EUR-L4-CHL-ATL-v01-fv01-OI.nc
20170326-EUR-L4-CHL-ATL-v01-fv01-OI.nc
20170323-EUR-L4-CHL-ATL-v01-fv01-OI.nc
20170324-EUR-L4-CHL-ATL-v01-fv01-OI.nc
Nous allons maintenant insérer ces données dans le système ERDDAP. Lançons le script GenerateDatasetsXml.sh (sous l'identité tomcat)
$ cd /opt/tomcat/webapps/erddap/WEB-INF
$ ./GenerateDatasetsXml.sh
Ce fichier représente des concentrations surfaciques de chlorophylle, c'est une grille au format NetCDF, nous allons donc choisir le format EDDGridFromNcFiles
- La 1ère question "fondamentale" du script à laquelle il faut répondre, est de lui indiquer le type du jeu de données à traiter (format grid ou tabulaire)
Répondons aux différentes questions du script :
Question | Reponse | Commentaire 3 |
---|---|---|
Format | EDDGridFromNcFiles | Grille en NetCDF |
Starting Directory | /home/tomcat/data/ibiroos | le répertoire source |
File Name regex | ".*\.nc" | par défaut pour prendre les .nc files |
First File Name | "" | s'il y a des fichiers différents dans le répertoire , dans notre cas réponse par \<retour charriot> |
- Le script étant terminé, il faut récupérer le code XML que le script a affiché à l'écran : de la ligne <dataset> jusqu'à </datasatet>
-
NB: On peut aussi récupérer ce code XML de sortie dans le fichier /opt/tomcat/content/erddap/logs/GenerateDatasetsXml.out
-
Ouvrez une nouvelle fenêtre et éditer le fichier /opt/tomcat/content/erddap/datasets.xml qui contient les datasets
$ cd /opt/tomcat/content/erddap $ vi datasets.xml
-
En bas du fichier avant la derniere ligne et la balise de fermeture , coller le code XML qui a été précédemment généré par la commande GenerateDatasetsXml.sh
Nous vous conseillons d'insérer des commentaires clairs autour de votre "paste" pour vous y retrouver plus facilement...
-
Récupérer l'Identifiant du jeu de données ibiroos sur la 1ere ligne datasetID=ibiroos_a36a_ab16_6b5
$ grep ibiroos datasets.xml <dataset type="EDDGridFromNcFiles" datasetID="ibiroos_a36a_ab16_6b5f" active="true">
-
enregistrez le fichier et sortez de l'éditeur...
Rechargement du jeu de données
Après avoir inséré le code XML dans le fichier datasets.xml, Il faut maintenant faire prendre en compte cette modification à ERDDAP. Pour cela :
- soit on relance le serveur (ce qui peut être long car cela va recharger tous les jeux de données présents)...
- soit on dit à Erddap de ne recharger que le jeu de données qui a subi des modifications : pour cela on créé un fichier portant le nom de l'identifiant du dataset qu'on a créé , dans le répertoire ~tomcat/content/erddap/flag/
$ touch ~tomcat/content/erddap/flag/ibiroos_a36a_ab16_6b5f
La prise en compte est alors immédiate par le serveur ERDDAP.
- A partir de dorénavant, jusqu'à désormais : Lors de chaque modification du fichier datasets.xml, on procédera de la sorte pour faire prendre en compte les modifications d'un jeu de données à Erddap
Vérification dans Erddap
Après rechargement du jeu de données; s'il n'y a pas eu d'erreur, vous devriez voir le nouveau jeu de données apparaitre dans erddap avec toutes les metadonnées, et les acces aux données brutes et au graphe.
http://localhost:8080/erddap/griddap/
http://localhost:8080/erddap/griddap/ibiroos_a36a_ab16_6b5f.graph
Petit tour dans le fichier XML... dans le cas d'un fichier NetCDF très propre et conforme aux normes, on obtient un excellent résultat. Mais il faut parfois retoucher le code XML que le script à pu fabriquer à partir du fichier qui lui a servi de modèle.
Téléchargement des fichiers bruts du dataset
On peut proposer le téléchargement des fichiers bruts dans l’interface web avec la balise <accessibleViaFiles> dans le code XML du dataset,
Il faut passer cette balise à "true" dans le code XML du jeu de données, suivi d'un "touch" pour le faire prendre en compte immédiatement par le serveur erddap, et éviter d'attendre 10000 secondes la relecture...
-
Editer le fichier datasets.xml, et modifiez le paramètre accessibleViaFiles
<dataset type="EDDGridFromNcFiles" datasetID="ibiroos_a36a_ab16_6b5f" active="true"> <reloadEveryNMinutes>10080</reloadEveryNMinutes> <updateEveryNMillis>10000</updateEveryNMillis> <fileDir>/home/tomcat/data/ibiroos/</fileDir> <fileNameRegex>.*\.nc</fileNameRegex> <recursive>true</recursive> ... cut .... <accessibleViaFiles>true </accessibleViaFiles>
-
provoquer le rechargement du dataset
$ touch ~tomcat/content/erddap/flag/ibiroos_a36a_ab16_6b5f
-
vous devriez voir les fichiers bruts accessibles sur le site
http://localhost:8080/erddap/files/ibiroos_a36a_ab16_6b5f/
Check the logs in case of problems
Si Erddap n'a pa chargé le jeu de données, c'est qu'il y a un problème !... il faudra essayer de comprendre les erreurs et corriger le fichier XML à la main en vérifiant les messages dans les fichiers de logs
NB: Ca n'est pas toujours simple de repérer les erreurs, les logs sont fouillis et verbeux chercher le datasetID ou le mot clé "error" pour trouver une erreur concernant un dataset
- /opt/tomcat/content/erddap/logs/GenerateDatasetsXml.log
- /opt/tomcat/content/erddap/logs/log.txt
TP2 : tabledap : fichiers ASCII avec profils CTD
Nous allons maintenant rentrer un second jeu de données qui représente des profils verticaux de différentes variables (température, salinité, ...) provenant d'une sonde CTD à l'entrée de la baie de Marseille.
Cette fois ci, les données sont dans des fichiers Ascii, avec des variables en colonnes et des mesures en ligne : Le type de données approprié dans ERDDAP est donc le type EDDTableFromAsciiFiles
Ces fichiers de données sont toujours disponibles sur la clé USB que nous vous avons fournie dans le répertoire "erddap/data" sous la forme d'une archive data-solemio.tar
Nous allons les transférer de la clé USB vers votre VM via le répertoire /mnt/share partagé entre votre machine physique et la VM pour les mettre ensuite dans le répertoire /home/tomcat/data/solemio
$ mkdir /home/tomcat/data/solemio
$ cd /home/tomcat/data/solemio
$ tar xvf /mnt/share/datasets/data-solemio.tar
-
Vous devez avoir maintenant 7 fichiers NetCDF dans votre répertoire/home/tomcat/data/solemio
tomcat@sist-erddap:/home/tomcat/data/solemio$ ls 2015_Donnees_SOLEMIO_Avr2015.csv 2015_Donnees_SOLEMIO_Jun2015.csv 2015_Donnees_SOLEMIO_Fev2015.csv 2015_Donnees_SOLEMIO_Mai2015.csv 2015_Donnees_SOLEMIO_Jan2015.csv 2015_Donnees_SOLEMIO_Mar2015.csv 2015_Donnees_SOLEMIO_Jul2015.csv
-
Nous allons maintenant insérer ces nouvelles données dans le système ERDDAP. Lançons le script GenerateDatasetsXml.sh
$ cd /opt/tomcat/webapps/erddap/WEB-INF $ ./GenerateDatasetsXml.sh
Répondons maintenant aux différentes questions du script :
Question | Reponse | Commentaire 3 |
---|---|---|
Which EDDType ? | EDDTableFromAsciiFiles | Ascii en Colonne |
Starting Directory | /home/tomcat/data/solemio | le répertoire source |
File Name regex | ".*\.csv" | pour prendre les .csv files |
Full file name of one file | default "" | Pour le cas ou on aurait des fichiers de noms différents |
Charset ISO-8859-1 or UTF-8 | default "" | retour=default=ISO-8859-1 |
Colums names row | 1 | la premiere ligne sert d'entete |
First Data row | 2 | les données commencent à la deuxième ligne |
Colum Separator | tabulation | séparateur des colonnes ; tabulation au clavier |
questions suivantes ... | default "" | taper "entree" pour le reste des questions |
les 4 dernieres questions fournissent les métadonnées | ||
infoUrl ? | http://erddap.mio.osupytheas.fr/ | mettez l'URL de votre serveur |
Institution ? | M.I.O service d'observation UMS3470 | votre Institut |
Summary ? | profils CTD station solemio lat 43.238 Lon 5.28 | résumé de ce dataset |
Title ? | profils CTD station solemio lat 43.238 Lon 5.28 | un titre |
-
Le script étant terminé, il a à nouveau affiché à l'écran tout le code XML... Il faut copier la sortie XML de la commande de la ligne <dataset> jusqu'à </datasatet> On peut aussi récupérer ce code XML de sortie dans le fichier ~tomcat/content/erddap/logs/GenerateDatasetsXml.out
-
Ouvrez une nouvelle fenêtre et éditer le fichier /opt/tomcat/content/erddap/datasets.xml qui contient les datasets
$ cd /opt/tomcat/content/erddap $ vi datasets.xml
-
Coller à nouveau le code XML qui a été généré par le script (sorite d'écran ou bien depuis le fichier GenerateDatasetsXml.out . Nous vous rappellons d'insérer des commentaires clairs autour de votre "paste" pour vous y retrouver plus facilement...
-
Récupérer l'Identifiant du jeu de données solemio sur la 1ere ligne datasetID=solemio_c63e_3ab7_aebf
<dataset type="EDDTableFromAsciiFiles" datasetID="solemio_c63e_3ab7_aebf" active="true">
-
enregistrez le fichier et sortez de l'éditeur...
- Rechargez le jeu de données : Il faut maintenant faire prendre en compte cette modification à ERDDAP en créant encore une fois un fichier portant le nom de l'identifiant du dataset qu'on a créé , dans le répertoire ~tomcat/content/erddap/flag/
$ touch ~tomcat/content/erddap/flag/solemio_c63e_3ab7_aebf
La prise en compte est à nouveau immédiate par le serveur ERDDAP
Vérification dans Erddap
Vous devez avoir un dataset supplémentaire dans votre serveur Erddap, dont l'URL comporte l'identifiant du jeu de données
- http://localhost:8080/erddap/tabledap/solemio_c63e_3ab7_aebf.html
- http://localhost:8080/erddap/tabledap/solemio_c63e_3ab7_aebf.graph
Automatisation des réponses de GenerateDatasetsXml.sh
Lorsqu'on fait plusieurs tentatives avec le script GenerateDatasetsXml.sh, en corrigeant des erreurs, Il est fastidieux de :
- répondre chaque fois aux mêmes questions posées par le script, puis
- récupérer/copier le code XML et
- l'insérer/coller dans le fichier datasets.xml
- et, recommencer...
Pour éviter de répondre à chaque question du script, une à une, le script GenerateDatasetsXml.sh :
- permet de mettre les réponses en arguments sur la ligne de commande : c'est pas tres pratique mais c'est mieux que rien!
- comporte une option "-i" suivie du PATH complet vers le nom du fichier datasets.xml.
- Cette option permet d'insérer automatiquement le code XML directement dans le fichier datasets.xml à l'endroit où se situe un certain "tag"
L'insertion du code XML va se faire dans le fichier à un certain endroit repéré par 2 balises (tag) ci dessous. Avec l'option -i GenerateDatasetsXml cherche ces 2 lignes ci dessous particulières dans le fichier datasets.xml
<!-- Begin GenerateDatasetsXml #tagName someDatetime -->
le code sera placé ici
<!-- End GenerateDatasetsXml #tagName someDatetime -->
Exemple pour le jeu de données "solemio"
Nous allons insérer un tag "solemio" dans le fichier datasets.xml.
- Editer le fichier datasets.xml
-
vers la fin du fichier, insérer les 2 lignes suivantes, avec le tag #solemio
<!-- Begin GenerateDatasetsXml #Osolemio 10/2017 --> .... <!-- End GenerateDatasetsXml #Osolemio 10/2017 -->
-
Exemple sur le dataset solemio des mesures CTD :
./GenerateDatasetsXml.sh -verbose -i/opt/tomcat/content/erddap/datasets.xml#Osolemio EDDTableFromAsciiFiles /home/tomcat/data/solemio '.*' nothing ISO-8859-1 1 2 default default default default default default default default http://www.mio.univ-amu.fr "MIO UMR7294 CNRS" "Profil CTD station solemio " "Profil CTD station lat 43.238 Lon 5.286"
-
Attention à la syntaxe...
- pas d'espace après l'argument -i
- il faut scrupuleusement donner les arguments dans l'ordre.. oui on se trompe facilement
- mettre nothing comme réponse pour une chaine vide ""
-
mettre default comme réponse pour donner la valeur par défaut
processing -i/opt/tomcat/content/erddap/datasets.xml#Osolemio datasetsXmlName=/opt/tomcat/content/erddap/datasets.xml tagName=Osolemio
found beginLine: <!-- Begin GenerateDatasetsXml #Osolemio found endLine: <!-- End GenerateDatasetsXml #Osolemio -i/opt/tomcat/content/erddap/datasets.xml#Osolemio finished >successfully! *** closed logFile=/opt/tomcat/content/erddap/logs/>GenerateDatasetsXml.log at 2017-10-26T17:16:41+02:00
- Vérifiez dans le fichier datasets.xml si vous voulez pour voir si le code a bien été intégré
- vérifiez en rechargeant le jeu de données par la méthode habituelle
$ touch ~tomcat/content/erddap/flag/solemio_c63e_3ab7_aebf
Inscrire les unités des variables
Erddap possede un attribut spécial "units" pour inscrire les unités des variables dans le fichier datasets.xml ...
Il ne faut pas se priver de rajouter les unités pour chacune des données affichées :
Rajoutez des unités pour certaines variables dans le code XML du ficheir datasets.xml
<att name="long_name">T090 C: Temperature [ITS-90, Deg C]</att>
<att name="units">Deg. Celsius</att>
-
n'obliez pas de recharger le jeu de données par la méthode habituelle
$ touch ~tomcat/content/erddap/flag/solemio_c63e_3ab7_aebf
-
Vérifiez en faisant une requête sur les données avec le "data access form"
Afficher des subsets avec la balise Subset
Erddap permet d'afficher des "subsets" qui sont des sous ensembles de données. Il se base pour cela sur une ou quelques variables qui présentent une gamme de variation faible, (comme des index ou des des clés primaires) et qui permettent de filtrer les autres données sur les valeurs de ces variables.
Par exemple dans le jeu de données "solemio" la variable "time" est un bon candidant pour être une clé de sélection pour afficher des sous ensembles de données, puisqu'elle n'a que 7 valeurs.
Erddap fait un choix assez subjectif, et pas tout le temps opportun des variables servant de clés pour avoir des "subsets"... dans le cas où le choix n'est pas bon, il est possible de modifier ces variables dans le code XML au niveau de l'attribut "subsetVariables" comme ci-dessous
<att name="subsetVariables">time,
PAR_Irradiance_Biospherical_Licor,
Beam_Transmission_WET_Labs_C_Star</att>
Les 2 variables PAR_Irradiance_Biospherical_Licor, et Beam_Transmission_WET_Labs_C_Star ne sont pas des bons candidates pour établir des subsets...
-
modifiez les par exemple par des Latitudes et Longitudes
<att name="subsetVariables">time, latitude, longitude</att>
-
vérifiez en rechargeant le jeu de données par la méthode habituelle
$ touch ~tomcat/content/erddap/flag/solemio_c63e_3ab7_aebf
TP3 : Simple diffusion de fichiers de données
Erddap propose un type de données particulier EDDTableFromFileNames qui permet de fournir les fichiers de données au téléchargement et d'afficher les metadonnées ... mais sans fournir les données brutes à l'intérieur des fichiers, comme précédemment.
L'interet de ce type est qu'il permet de traverser tous les répertoires et sous répertoires, de filtrer et de mettre à disposition tous les fichiers de différents formats qu'il trouve.
On va par exemple mettre à disposition plusieurs fichiers texte .csv et des fichiers .xls et une image .png d'un jeu de données
Récupérer le jeu de données "erddap/datasets/julio" sur votre clé USB ou sur le NAS, et copiez ce répertoire dans votre VM via le répertoire /mnt/share partagé entre votre machine physique et la VM. Copiez le répertoire "julio" le répertoire /home/tomcat/data/julio
- Comme à l'accoutumée, lançons le script GenerateDatasetsXml.sh
$ cd /opt/tomcat/webapps/erddap/WEB-INF $ ./GenerateDatasetsXml.sh | tee out.xml
Répondons maintenant aux différentes questions du script :
Question | Reponse | Commentaire 3 |
---|---|---|
Which EDDType ? | EDDTableFromFileNames | - |
Starting directory | /home/tomcat/data/julio | - |
File name regex (e.g., ".*.nc") | .* | pour filtrer tous les type de fichiers |
Recursive (true | false) | true |
ReloadEveryNMinutes | default | - |
infoUrl | http://localhost:8080/erddap | texte libre |
institution | Ifremer et UMR 7294 CNRS | texte libre |
summary | fichiers de de chlorophylle ibi-roos et de temperature ctd solemio | texte libre |
title | texte libre | texte libre |
-
Comme à l'accoutumée maintenant, récupérez le code XML produit par la commande GenerateDatasetsXml.sh et placez le à la fin du fichiers /opt/tomcat/content/erddap/datasets.xml
-
Après insertion du code XML, il faut faire prendre en compte cette modification à ERDDAP. Comme on l'a vu précédemment en créant un fichier portant le nom de l'identifiant du dataset, dans le répertoire ~tomcat/content/erddap/flag/
$ touch /opt/tomcat/content/erddap/flag/julio_9070_870a_58ca
-
Vérification dans le serveur Erddap : Vous devez avoir un dataset supplémentaire dans votre serveur Erddap, dont l'URL comporte l'identifiant du jeu de données
http://localhost:8080/erddap/files/ http://localhost:8080/erddap/files/julio_9070_870a_58ca/
Maaagiquuue....
Introduction : Choix du type EDD pour les fichiers NetCDF
Allons un peu plus loin, il est parfois difficile de bien trouver le type de Erddap a fournir pour analyser un fichier NetCDF.
Il faut commencer par bien lire la documentation :-) , mais les grandes lignes sont que :
Il faut savoir si le fichier NetCDF suit les recommandations de la convention CF
tels que définies par les "discrete sampling geometries" (DSG) des conventions CF (climate forecast) :
Selon les conventions CF DSG, les données sous la forme d'une suite discrète de points, doivent être définies avec l'attribut featureType selon les type suivants :
FeatureType | Description |
---|---|
points isolés | (simples points sans coordonnées ni relations avec d'autres points) |
série temporelle : | série de point avec coordonnée fixe pris à des temps croissants |
trajectoire : | série de point le long d'un tracé géographique, pris à des temps croissants |
profil (profil vertical, profil horizontal) : | série de mesures ordonnées le long d'une ligne verticale à un point fixe et temps fixe |
profil de série temporelle : | series of profile features at the same horizontal position with monotonically increasing times |
profil de trajectoire : | a series of profile features located at points ordered along a trajectory |
TP4 : fichier Netcdf avec Profil vertical
- Récupérez les 2 fichiers de profil de vent du SIRTA dans le répertoire datasets/sirta sur votre clé USB ou sur le NAS, et copiez le dans la VM via votre répertoire partagé /mnt/share... et placez les
- dans le répertoire /home/tomcat/data/sirta
Ces fichier sont des séries temporelles selon la nomenclature CF qu'on a vu précédemment. On le voit dans le header des fichiers de données :
$ ncdump -h /home/tomcat/data/sirta/profilvent_1a_Lmat10mLz1PventR5sN5n_v01_20170301_000005_1440.nc
:featureType = "timeSeries" ;
Erddap indique que pour les fichiers utilisant les conventions multidimensionnelles CF DSG il faut utiliser le type EDDTableFromMultidimNcFiles
On va donc utiliser le type="EDDTableFromMultidimNcFiles"
-
Comme à l'accoutumée, lançons le script GenerateDatasetsXml.sh
$ cd /opt/tomcat/webapps/erddap/WEB-INF $ ./GenerateDatasetsXml.sh | tee out.xml
-
Répondons maintenant aux différentes questions du script :
Question | Reponse | Commentaire 3 |
---|---|---|
Which EDDType ? | EDDTableFromMultidimNcFiles | - |
Starting directory | /home/tomcat/data/sirta | - |
File name regex (e.g., ".*\.nc") | .*\.nc | pour filtrer les fichiers .nc |
Full file name of one file | retour | si on veut un fichier particulier |
DimensionsCSV | default | - |
ReloadEveryNMinutes | default | - |
. .. questions suivantes ... | repondre par defaut | - |
infoUrl | http://localhost:8080/erddap | texte libre |
institution | IPSL SIRTA | texte libre |
summary | profils de vent a differentes hauteurs | texte libre |
title | serie temporelle de vent du SIRTA | texte libre |
-
Comme à l'accoutumée, récupérez le code XML produit par la commande GenerateDatasetsXml.sh et placez le à la fin du fichier /opt/tomcat/content/erddap/datasets.xml
-
Après insertion du code XML, il faut faire prendre en compte cette modification à ERDDAP. Comme on l'a vu précédemment en créant un fichier portant le nom de l'identifiant du dataset, dans le répertoire ~tomcat/content/erddap/flag/
$ touch /opt/tomcat/content/erddap/flag/sirta_0a02_7b55_3c35
-
Vérification dans le serveur Erddap : Vous devriez avoir un dataset supplémentaire dans votre serveur Erddap, dont l'URL comporte l'identifiant du jeu de données...
http://localhost:8080/erddap/
MAIS horreur .... le jeu de données n'a pas été chargé par Erddap !!!
Il y a donc eu une erreur... il faut donc essayer de comprendre ce qui s'est passé en localisant l'erreur dans le fichier de logs (en cherchant error ou l'id du dataset)
datasets.xml error on line #2067
While trying to load datasetID=sirta_0a02_7b55_3c35 (after 608 ms)
java.lang.RuntimeException: datasets.xml error on or before line #3120:
cdm_timeseries_variables #0=??? isn't one of the data variable destinationNames.
at gov.noaa.pfel.erddap.dataset.EDD.fromXml(EDD.java:417)
at gov.noaa.pfel.erddap.LoadDatasets.run(LoadDatasets.java:336)
Caused by: com.cohort.util.SimpleException: cdm_timeseries_variables #0=???
isn't one of the data variable destinationNames.
Il semble y avoir une sorte d'erreur qui incrimine cdm_timeseries_variables
On va donc aller voir le code XML produit dans le fichier datasets.xml, on se rend compte que l'attribut cdm_timeseries_variables n'a pas été renseigné correctement par erddap
<addAttributes>
<att name="cdm_data_type">TimeSeries</att>
<att name="cdm_timeseries_variables">??? </att>
La documentation de erddap
indique que l'attribut cdm_timeseries_variables est obligatoire et qu'il doit contenir le nom de la variable qui a cf_role=timeseries_id
TimeSeries - for data from a set of stations with fixed longitude,latitude(,altitude).
The dataset MUST include the globalAttribute cdm_timeseries_variables, where the value is a comma-separated list of the variables which have the information about each station. Thus, for a given station, the values of these variables will be constant.
One of the variables MUST have the variable attribute cf_role=timeseries_id to identify the variable that uniquely identifies the stations.
Dans le header du fichier de vente du sirta, profilvent_1a_Lmat10mLz1PventR5sN5n_v01_20170302_000005_1440.nc c'est la variable station_name qui possede le "cf_role"
char station_name(strlen) ;
station_name:long_name = "station name" ;
station_name:cf_role = "timeseries_id" ;
- dans le fichier datasets.xml, il faut donc modifier cet attribut de la maniere suivante
<addAttributes> <att name="cdm_data_type">TimeSeries</att> <att name="cdm_timeseries_variables">station_name, longitude, latitude</att>
Apres modification, rechargeons le jeu de données
$ touch /opt/tomcat/content/erddap/flag/sirta_0a02_7b55_3c35
et... Vérifions.... le dataset maintenant a bien été chargé par erddap
http://localhost:8080/erddap/tabledap/sirta_0a02_7b55_3c35.graph
http://localhost:8080/erddap/tabledap/sirta_0a02_7b55_3c35.graph?time,ws_040,time_bounds&.draw=markers&.marker=3%7C5&.color=0x0000FF&.colorBar=%7C%7C%7C%7C%7C&.bgColor=0xffccccff&time%3E=2017-03-01T00:00:00Z&time%3C2017-03-03T00:00:00Z&.timeRange=2,day(s)
Abonnement à des jeux de données
On peut demander a Erddap de surveiller les modifications sur des jeux de donnees et de nous informer par mail lorsque un jeu de donnees a ete modifié
Les abonnements (subscriptions) a des jeux de données se fait ici
On peut aussi s'abonner via un flux RSS, mais erddap gere cela différemment et apporte quelques améliorations. Les différences sont eplxiquées là :
Annexes
Quelques recommandations pour le type EDDTableFromAsciiFiles
Le type "EDDTableFromAsciiFiles" peut provoquer pas mal d'erreurs, si les fichiers ne sont pas bien conformes à ce qu'attend erddap. Voici quelques recommandations pour le contenu des fichiers ascii :
- Attention à ne pas avoir des colonnes portant un même nom !!
- Mettre les Dates au format ISO 2015-01-10T12:00:00Z
- Mettre les valeurs réelles avec un format anglais d.ddd et pas avec la virgule "," d,ddd
-
bien choisir la précision utile des valeurs réelles,
- exemple ca ne sert a rien d'avoir 2 latitudes différentes 4.4933 4.4938 à la 3eme décimale, car erddap va les afficher différentes
-
Bien choisir son caracteres de séparation : colonnes séparées par virgule, ou tabulation pour les export en CSV
- Mettre les profondeurs en valeur négatives de -1 à -56 par exemple, si on veut tracer un profil vertical
-
Attention des caractères spéciaux dans les labels des colonnes peuvent poser probleme : enlever tout caractère spécial comme ( ) [ ] / % ^ : micron
-
Ne pas mettre les unités g/l dans les noms de colonnes... erddap a un attribut spécial
pour placer les unités donc exemple Oxygene et pas Oxygen_SBE_43_ml_l (Oxygen, SBE 43 [ml L]) -
tous les fichiers d'un dataset doivent être strictement identiques... mêmes noms et ordre de colonnes, même format
- pour les valeurs manquantes enlever NaN et mettre une valeur numérique -999.0 par exemple qui permettra a erddap de les repérer
Exemple d'erreurs dans les logs
Exemple d'un jeu de données qui ne s'est pas chargé dans Erddap Il faut consulter le fichier ~/tomcat/content/erddap/logs/log.txt
Les erreurs ne sont pas facile à localiser, il faut fouiller !!
On voit ci dessous que erddap signale un erreur sur un caractère invalide sur la variable FlC_Fluorescence_Aug_l:
at gov.noaa.pfel.erddap.LoadDatasets.run(LoadDatasets.java:336) Caused by: java.lang.RuntimeException: ERROR in Test.ensureSomthingUnicode(): datasets.xml/EDD.ensureValid error for datasetID=solemio_c63e_3ab7_aebf: for dataVariable #6=FlC_Fluorescence_Aug_l:
datasets.xml/EDV.ensureValid error for variable destinationName=FlC_Fluorescence_Aug_l: sourceName has an invalid Unicode character (#130) at position=20 [#] in "FlC: Fluorescence [[195][130][194][181]g_l][end]" at com.cohort.util.Test.error(Test.java:41)
la solution a été de réécrire le libellé de cet attribut dans le fichier de données