NetCDF

From devSpot-wikis
Jump to: navigation, search

NetCDF (Network Common Data Form) est constitué, d'une part, d'un ensemble de bibliothèques logicielles et d'autre part, d'un format de données « auto-documenté », indépendant de l'architecture matérielle qui permet la création, l'accès et le partage de données scientifiques stockées sous la forme de tableaux. Le site internet du projet est hébergé par le Unidata program à l'University Corporation for Atmospheric Research (UCAR). Ils sont par ailleurs les mainteneurs principaux des programmes, des spécifications, etc. Il s'agit d'un format ouvert.

Ce format est couramment utilisé dans des applications de climatologie, de météorologie et d'océanographie (exemple: prévision météorologique, changement climatique) et dans les applications des S.I.G. C'est pour cela qu'à l'OSU-R il était important de pouvoir traiter les données de ce type notamment pour les données Lidar ou encore celles de l'OPAR. Par défaut, la bibliothèque netCDF utilise le format binaire classique. Cette version est totalement rétro-compatible en lecture avec l'ancien format de fichier netCDF.

Contents

Instructions

Pour respecter les normes afin de rendre compatible ces fichiers avec des standards tels qu'INSPIRE, une nomenclature spécifique des attributs est imposée. Pour cela, nous avons décidé de respecter la convention ACDD (Attribute Convention for Dataset Discovery).

Étant donné qu'à l'OSU-Réunion nous sommes sous Ubuntu, les divers instructions qui vont suivre seront des commandes de terminal. Pour commencer, il est important d'installer les paquets synaptiques suivants : netcdf-bin et nco. Faire les commandes suivantes (fonctionne sous Debian également):

 sudo apt-get install netcdf-bin
 sudo apt-get install nco

Le premier package contient les programmes ncdump et ncgen qui convertissent des fichiers NetCDF en fichiers ASCII et inversement. Cela s'avérera utile pour l'analyse du fichier source.

Le package nco (NetCDF Operator) est un outil de manipulation et d’analyse des informations contenues dans le fichier NetCDF.

Une fois les commandes effectuées, plusieurs commandes sont possibles pour lire et modifier des fichier NetCDF.

Description du fichier et options

Pour lire lire les informations il faut taper la commande suivante: ncdump -h nom_fichier.nc

Il y a trois entités qui en ressortent :

  • dimensions
  • variables
  • attributs et attributs globaux

Dimensions définit la forme de la donnée. Les dimensions netCDF ont un nom et une taille. Le nombre limite de dimensions suggéré est de 1024.

Variables tiennent des tableaux multi-dimensionnels de données. Une variable netCDF a un nom, un type et une forme, qui est spécifié quand il est défini. Une variable peut aussi avoir des valeurs, qui sont établies plus tard dans le mode de données. Une variable netCDF dans un ensemble de données netCDF libre est mentionnée par un petit entier appelé un « variable ID »

Attributs tiennent des métadonnées de données et des fichiers. Ils peuvent être associés à une variable netCDF pour spécifier des propriétés telles que des unités, des valeurs spéciales, des valeurs valables maximales et minimales, des facteurs d'échelle et des compensations. Un attribut de netCDF a une variable netCDF à laquelle il est assigné un nom, un type, une longueur et un ordre d'une ou plusieurs valeurs. Il est aussi possible d'avoir les attributs qui ne sont associés à aucune variable : on les appelle les attributs globaux.

A partir de ces entités, on peut appliquer divers options sur celles-ci: création, modification et suppression.

L'option « -h » permet de ne pas inscrire dans l'historique du netCDF l'action que vous venez de réaliser. Par défaut, chaque modification effectuée sur le fichier est par défaut écrit dans un attribut global nommé history et cette option retire donc cet inscription automatique. Cette option n'est pas obligatoire mais si l'utilisateur aura tendance à beaucoup modifier tout en conservant l'historique original de son fichier, il est fortement recommandé de l'appliquer.

Selon le type les options diffèrent (ne pas mettre d'espace entre les virgules):

 -a old_name,new_name → les attributs (de variables et globaux)
 -d  old_name,new_name → les dimensions
 -g  old_name,new_name → les groupes 
 -v old_name,new_name → les variables

Renommer une entité

Commande NCO dédiée à cela :

 ncrename -h -type old_name,new_name fichier.nc

ncrename rebaptise des dimensions netCDF, des variables, des attributs et des groupes. Chaque objet qui a un nom dans la liste de vieux noms est rebaptisé utilisant le nom correspondant dans la liste de nouveaux noms. Tous les nouveaux noms doivent être uniques. Chaque vieux nom doit exister dans le fichier(dossier) d'apport(de saisie), à moins que le vieux nom ne soit précédé à la période (ou "le point") le caractère(personnage) '.'. La validité d'old_name n'est pas vérifiée avant le changement de nom. Ainsi, si old_name est spécifié sans le '.' c'est à dire le préfixe qui indique que la présence d'old_name est facultatif et que old_name n'est pas le présent dans le fichier.nc, alors ncrename échouera. Le new_name ne devrait jamais être préfixé par 'un .' (Ou bien la période sera incluse dans le cadre du nouveau nom). À partir de la version 4.4.6 NCO l'old_name et les arguments new_name peuvent inclure (ou être, pour des groupes) des chemins de groupe partiels ou complets.

Exemples

  • Renommer la variable p en pressure et t en temperature dans netCDF in.nc.

Dans ce cas p doit exister dans le fichier de saisie (ou sinon ncrename échouera), mais la présence de t est facultative :

 ncrename -h -v p,pressure -v .t,temperature in.nc
  • Renommer l'attribut long_name en largo_nombre dans la variable u et aucune autre variable dans netCDF in.nc :
 ncrename -h -a u@long_name,largo_nombre in.nc
  • Renommer le groupe g8 en g20 dans le fichier in_grp.nc netCDF4 :
 ncrename -h -g g8,g20 in_grp.nc
  • Renommer la variable /g1/lon en longitude dans netCDF4 in_grp.nc :
 ncrename -h -v /g1/lon,longitude in_grp.nc         # MÉTHODE 1 
 ncrename -h -v /g1/lon,/g1/longitude in_grp.nc     # MÉTHODE 2

Cas particulier

ncrename n'attache pas automatiquement de dimensions aux variables du même nom. Ceci est fait pour que le renommage se fasse de façon simple à changer si une variable est une coordonnée. Si vous voulez renommer une variable de coordonnée pour que cela reste une variable de coordonnée, vous devez séparément renommer tant la dimension que la variable :

 ncrename -d lon,longitude -v lon,longitude in.nc

Pour plus de détails: http://nco.sourceforge.net/nco.html#ncrename-netCDF-Renamer

Ajouter, modifier et supprimer une entité

Encore une fois nous allons utiliser une commande de la librairie appartenant à nco: ncatted. Sa commande est plus complexe :

 ncatted -h -type nom_attribut,nom_variable,mode,type_valeur,valeur fichier.nc

A noter qu'il ne faut laisser aucun espace entre les paramètres séparés par des virgules.

ncatted édite des attributs dans un fichier netCDF. Si vous éditez des attributs alors vous passez trop de temps dans le monde de métadonnées et ncatted a été écrit pour que vous puissiez revenir rapidement et sans difficulté à une modification classique à la source. ncatted peut ajouter, créer, supprimer, modifier et écraser des attributs.

type correspond au même paramétrage qu'avec ncrename. Cela concerne donc

 -a → les attributs (de variables et globaux)
 -d → les dimensions
 -g → les groupes 
 -v → les variables

nom_attribut correspond au nom de l'entité à laquelle nous souhaitons faire des manipulations.

nom_variable concerne la famille à laquelle nom_attribut appartient. Les mots "global" et "group" sont réservés.

mode est le mode d'édition :

  • a → ajout fin
  • c → création
  • d → suppression
  • m → modifier
  • o → écraser

type_valeur s'occupe au type de données qui est primitif :

  • f → float
  • d → double
  • i,l → Integer ou Long
  • s → short
  • c → char
  • b → Byte
  • ub → Byte non signé
  • us → short non signé
  • u, ui, ul → Integer ou Long non signé
  • sng, string → string

Si plus haut le mode suppression est activé, il n'est d'aucune utilité d'écrire le type_valeur.

Il permet à chaque opération d'édition d'être appliqué à chaque variable dans un fichier. Ceci est un gain de temps quand il s'agit de changer des conventions d'attribut partout dans le même fichier.

Exemples

  • Ajouter le string "Data version 2.0.\n" à l'attribut global history:
 ncatted -a history,global,a,c,'Data version 2.0\n' in.nc  

A noter que le -h est optionnel pour ce cas.

  • Changer la valeur de l'attribut long_name pour la variable T par n'importe quel valeur contenue dans temperature:
 ncatted -h -a long_name,T,o,c,temperature in.nc
  • Détruire tous les attributs units existant:
 ncatted -h -a units,,d,, in.nc

Le champ nom_variable est vide dans le but sélectionner toutes les variables du fichier. type_valeur et valeur sont également vides car ce sont des champs superflus dans le cas du mode suppression.

  • Détruire tous les attributs associés à la variable tpt et supprimer tous les attributs globaux:
 ncatted -h -a ,tpt,d,, -a ,global,d,, in.nc 

Le champ nom_attribut est vide pour sélectionner tous les attributs associés à la variable.

  • Modifier tous les attributs units existant en mètre par seconde:
 ncatted -h -a units,,m,c,'meter second-1' in.nc
  • Ajouter un attribut units de kilogram kilogram-1 à toutes les variables commencant par H20:
 ncatted -h -a units,'^H2O',c,c,'kilogram kilogram-1' in.nc
  • Ecraser l'attriibut quanta de la variable energy par un tableau de 4 integers:
 ncatted -h -a quanta,energy,o,s,'010,101,111,121' in.nc


Pour plus détails: http://nco.sourceforge.net/nco.html#ncatted-netCDF-Attribute-Editor

Visualisation des entités

Il existe un moyen d'avoir un aperçu visuel des différentes variables de votre NetCDF ainsi que ses valeurs.

NetCDF Explorer en est un. Il s'agit d'un navigateur graphique multi-plateforme pouvant parcourir vos fichiers locaux et ceux en OpenDapdepuis un serveur (Thredds Data Server dans notre cas). Plus de détails sur http://www.space-research.org/

Sources

Personal tools
Namespaces

Variants
Actions
Navigation
Campagnes de l'OPAR
Projets
Developpements
Support informatique
Tools