Introduction à NetCDF



Cette introduction va nous permettre de découvrir le format NetCDF (Wikipedia) et pourquoi l'utilisation de ce format est une partie en soi de la réponse à apporter aux défis que nous pose la notion de Science Ouverte. La science ouverte consiste à rendre « accessible autant que possible et fermé autant que nécessaire » les résultats de la recherche, issus en majorité des fonds publics.

Cette ouverture de la Science s'appuie fortement sur les principes FAIR (Findable, Accessible, Interoperable, and Reusable) qui sont "un ensemble de principes directeurs pour gérer les données de la recherche visant à les rendre faciles à trouver, accessibles, interopérables et réutilisables par l’homme et la machine."

A. Science ouverte : de quoi avons-nous besoin?


1. De répondre à ces questions

questions science ouverte

En effet, lorsque nous souhaitons manipuler des données et comme dans beaucoup d'autres situations également, il est indispensable de pouvoir répondre à un ensemble de questions simples mais fondamentales pour savoir notamment si ces données sont réellement réutilisables. On va ainsi se questionner sur :

  • Quoi : la source,
  • Quand : la période couverte par le jeu de données, la date d'acquisition de ces données, de leur archivage,
  • Comment :
    • la méthode employée pour les acquisitons,
    • les outils et les instruments qui ont servis à les acquérir et les manipuler,
    • La méthode et/ou les protocoles pour la récupérer
    • Le format...
  • Qui : Qui contacter, qui est responsable, qui gère ce projet ou ces données,
  • Pourquoi : à quoi sont destiné ces données ? Usage prévu ?
  • Combien: "coût" de l'acquisition, volume des données,
  • etc...

2. Où intervient la problématique du format d'un fichier ?

Le « cycle de vie » des données est une représentation structurante qui décrit les étapes majeures par lesquelles passent les données depuis leur acquisition, jusqu’à leur réutilisation. Tout au long de ce cycle de vie, les données sont manipulés de différents manières et sont "embarquées" dans un fichier qui répond à un format spécifique afin de représenter sous forme numérique l’évolution des données de notre environnement (océan, surface continentale, climat, chimie, atmosphère). Ce format doit répondre à de nombreuses problématiques parfois antagonistes : stocker, partager, archiver, pérenniser et permettre de réutiliser les données dans une communauté scientifique.

cycle de vie des donnees

Lorsque l'on va manipuler nos données, nous aurons donc à choisir entre plusieurs possibilités :

Les formats textuels (txt, csv, etc.) :

  • Ils sont les formats les plus simples, ils sont robustes et pérennes, MAIS :
  • Ils sont souvent (très) volumineux,
  • Ils manquent souvent d’informations (métadonnées) qui sont indispensables à la publication et de la réutilisation scientifique des jeux données dans le cadre de la Science ouverte.

Les formats « maison » :

  • Ils sont généralement bien adaptés pour un besoin particulier, MAIS
  • Il y a des fort risques sur leur pérennité et donc la réutilisation des données ?
  • Ils ne répondent en outre à aucune convention internationale.

Formats propriétaires :

  • Tout comme les formats "maison", ils sont en général bien adaptés pour un besoin particulier, MAIS
  • Ils présentent de fort risques sur la pérennité et donc la réutilisation des données,
  • Ce sont (la plupart du temps) des formats non ouverts et non maîtrisés, qui peuvent avoir un coût (financier et/ou technique) voire êtres soumis à une licence contraignante.

Formats Ouverts :

Ces formats présentent de nombreux avantages :

  • Plus compacts que les formats textuels,
  • Reconnus (en général) par des conventions internationales,
  • Suivis par de larges communautés qui va garantir une pérennité sur le format et ses évolutions, MAIS
  • Ils peuvent êtres assez complexes et sont souvent adossés à des conventions complémentaires pour cadrer leur utilisation.

3. Impact environnemental et choix du format ?

Le format d'un fichier à également un impact écologique. En effet, la gravité de la situation environementale (dépassement de 6 limites planétaires sur les 9 identifiées & Limites planétaires sur Wikipédia) justifie largement de se poser la question en terme d'impact environnemental dans la manière dont nous utilisons les données. Les questions de stockage, d'outils de manipulation ou de transport peuvent entraîner des consommation d'énergie et de ressources plus ou moins importante en fonction des choix retenus.

  • Utiliser un format propriétaire ou maison va impliquer de développer des outils spécifiques pour pouvoir réutiliser ces données alors que l'usage d'un format standard permettra de s'appuyer sur des outils optimisés et maintenus par une large communauté,
  • Un format textuel présente l'avantage d'être facile à manipuler et lire, mais sa taille en général plus élevée nécessite plus d'espace de stockage et plus de ressources pour le transporter sur le réseau. Cependant, suivant le type de données, il peut être le plus pertinent (csv ou odv par exemple). Utiliser de la compression à également un coût en terme de calcul.
  • Acquérir des données sur l'environnement implique déjà un coût environnemental important. Celà justifie que l'on pérennise au mieux les résultats des campagnes de mesure pour les acquérir.

Pour aller plus loin, on pourra consulter le site d'EcoInfo qui propose quelques élements de réflexion sur ces aspects.


B. NetCDF, une réponse ?


1. Origine

Le format de fichiers NetCDF (Network Common Data Format) permet de répondre à un certain nombre des ce questions structurantes et fondamentales

  • Création : 1988 par Unidata qui est une institution ayant pour objectif le partage des outils et des données dans la thématique des géosciences ; Le financement principal est fait par la NSF (National Science Foundation)
  • Un format ouvert (open Source), fonctionne sur tous les O.S
  • Un stockage « binaire » des données (donc, compact),
  • Un modèle de gestion et de représentation des données scientifiques de 1 à n dimensions (temps, altitude, profondeur, lat/lon, etc...),
  • Un format dit "auto descriptif" ou "auto-documenté" car le format permet d'embarquer à la fois les données ET les métadonnées dans une entête. Le fichier peut ainsi renseigner toutes les informations utiles (métadonnées) : dates, auteurs, instruments, politique de diffusion (licence), etc
  • la représentation de données scientifiques “dimensionnées” 1D, 2D ou 3D est facilitées par NetCDF.


donnees dimensionnees donnees dimensionnees
donnees dimensionnees donnees dimensionnees


2. Choisir NetCDF : pour l’Interopérabilité (FAIR)

Dans le cadre de la Science Ouverte, le choix du format dans lequel les données sont enregistrées à une importance fondamentale. Le simple choix du format est déjà un élément clé pour améliorer les aspects FAIR de ses données. Le format NetCDF est un format qui améliore l'interopérabilité pour plusieurs raisons :

- C'est un format **portable** et **indépendant** quelque soit l’architecture matérielle
- Il est **auto descriptif** : les métadonnées ET les données sont embarquées dans le fichier,
- Il est rigoureux mais flexible (en taille et en contenu)
- C'est un **standard de fait**,
- Il permet une compatibilité ascendante,
- Il est agrégeable (“concaténable”) 
- Il permet un accès direct efficace à une sous partie du contenu (“scalabilité”),
- Il accepte un accès en lecture partagé même si un utilisateur écrit,
- C'est un format adossé à des **conventions permettant une standardisation**,
- Et enfin, il est déjà très utilisé en environnement, météorologie, océanographie, spatial, etc...

3. Choisir NetCDF : pour la Réutilisabilité (FAIR)

Le format NetCDF améliore la réutilisabilité et garantie la pérennité des données pour plusieurs rasions :

- C'est un format suivi régulièrement depuis sa création en 88 et financé par la NSF
- Il autorise une compatibilité ascendante
- C'est un format largement utilisé par de nombreuses communautés scientifiques
- Un format portable et indépendant,
- Il existe de nombreuses bibliothèques netCDF associées au format lui même et maintenues pas Unidata libres, gratuites, accessibles dans de nombreux langages et systèmes d’exploitation : C, C++, Java, Fortran ou  surcouches spécifique  Python, IDL, MATLAB, R, Ruby, Perl,
- Il existe également des dizaines de logiciels tiers libres et gratuits pour manipuler ce format (découper, assembler, calculer, visualiser, ...)
- C'est un format recommandé par l’IR Data Terra dans le cadre des pôles de données

4. NetCDF : les Inconvénients

Le diable est dans les détails :-) et malgré tout ses avantages, le format NetCDF à quelques inconvénients. À minima, il nécessite un apprentissage pour le maîtriser pleinement et iIl faudra notamment intégrer :

  • Quelques notions spécifiques pour bien comprendre le format interne & les diverses représentations de données : 1D (timeseries, profils) ou 2D (grilles)
  • Savoir utiliser de nombreux outils disponibles pour manipuler & écrire ces fichiers
  • Connaître et utiliser des conventions et intégrer des vocabulaires contrôlés

Mais le jeu en vaut la chandelle :-) car cet effort est récompensé par une meilleure valorisation et pérennité des données.

5. NetCDF : les versions du format

Il existe aujourdhui principalement 2 versions du format NetCDF :

NetCDF 3 :

  • fichier limité en volume (2Gb),
  • une seule dimension de longueur illimitée,
  • variables en 32 bits,
  • 6 type atomiques : char, byte, short, int, float, double.

NetCDF 4 et > 3.6 :

  • variables en 64 bits,
  • plusieurs dimensions de longueur illimitée,
  • nouveaux types atomiques (int64, string, unsigned byte, short, int, int64),
  • volume du fichier quasi illimité,
  • rajoute l’interopérabilité avec le HDF5 ainsi que la notion de groupe, permet de faire des E/S pour du calcul parallèle.

Le format NetCDF assure une compatibilité ascendante : Les bibliothèques NetCDF4 peuvent lire le NetCDF3 mais pas l’inverse.


C. NetCDF dans le monde de la donnée


1. Un format recommandé ?

On notera que plusieurs pôles des données de l'IR Data Terra (notamment Odatis, Aeris, etc) recommandent (entre autre) l'utilisation du format NetCDF :

Son utilisation doit cependant être associée à des conventions comme la Convention Climate and Forecast (CF) (v1.6 ou supérieure) qui permettent de standardiser le contenu d'un fichier netcdf en employant des dénominations communes de varaibles acceptées dans diverses communautés scientifiques.


2. Les autres formats multidimensionnels

Il existe d'autres formats multidimensionnels qui sont d'ailleurs partiellement compatibles. Il existe d'ailleurs de nombreux outils pour passer de l'un à l'autre (exemple : grib_to_netcdf).

  • GRIB : GRidded In Binary, Organisation Météorologique Mondiale
  • GeoTIFF : Tag Image File Format
  • HDF : Hierarchical data format, National Center for Supercomputing Application (NCSA) - Earth Observing System conventions (EOS conventions)

Concernant le HDF, le format NetCDF4 est compatible avec le HDF5 "The HDF5 Files produced by netCDF-4 are perfectly respectable HDF5 files, and can be read by any HDF5 application." : Source :


D. Dans les entrailles du NetCDF


  • une section “Header” qui contient 3 sous parties : entête de métadonnées permettant de décrire le contenu du fichier

    • les dimensions (axes d’évolution)
    • les variables et leurs attributs
    • les attributs globaux du fichier
  • La commande de base pour visualiser le header : ncdump -h fileName.nc

  • une section “data” : les données

1. Le Header

a. Les dimensions

Cette section permet de déclarer les dimensions de nos variables, et donc permet de décrire les axes d’évolution des variables. On y retrouve en général pour les données environnemntales le temps et/ou des composantes géographiques (lat, lon, altitude ou profondeur).


b. Les variables et leurs attributs

Cette section va permettre de décrire les variables (les dimensions et les variables se retrouvent ici décrites), leur type et leur dépendance dimensionnelle.


Les attributs permettent d’introduire des métadonnées pour décrire les variables. C'est dans cette section que l'on va retrouver les élements relatifs aux conventions adossées à l'usage du format NetCDF.

  • unités
  • nom standardisé
  • etc


c. Les attributs globaux

permettent de fournir de nombreuses métadonnées générales : licence, DOI, mots clés, instruments etc.. Les attributs sont globaux quand ils ne sont associés à aucune variable :

variable_name:attribute_name = list_of_values ; :attribute_name = list_of_values ;


2. Et enfin, les données elle mêmes



E. Conclusion


Dans cette première section, nous avons pu voir les raisons fondamentales pour lesquelles il est pertinent de s'interroger sur le format numérique que l'on va employer pour manipuler et stocker ses jeux de données. Nous avons pu voir également une première approche du contenu lui même du format. Nous allons détailler ici pourquoi il est indispensable de s'interroger sur la manière dont nous allons exploiter ce format ouvert.

En effet, le format NetCDF n'impose rien en lui même et il est donc important de le rattacher à des conventions pour pérenniser au mieux son usage. Nous allons également voir quelques outils pour manipuler ce format.