# NetCDF

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.
La version 4.0 datant de 2008 améliore le format en ajoutant le support du modèle de données HDF5.
Le format, à l'origine, avait pour modèle conceptuel le format CDF issu de la NASA mais il a depuis divergé de façon telle qu'aujourd'hui ces deux formats ne sont plus compatibles.

## Description du format

Le format de données est « auto-documenté » c'est-à-dire qu'il existe un en-tête qui décrit la disposition des données dans le reste du fichier, et en particulier des tableaux de données. Cet en-tête contient aussi une liste arbitraire de métadonnées se présentant sous la forme d'attribut de type nom/valeur. Le format est indépendant de l'architecture matérielle, notamment grâce à la prise en charge par la bibliothèque des questions de boutisme. Les tableaux de données sont linéaires et sont stockés de manière simple de façon à permettre un accès efficace à un sous-ensemble d'un tableau.
La version 4.0 de l'API netCDF permet l'utilisation du format de données HDF5. Ce nouveau format étend les possibilités de l'ancien notamment en ajoutant:
* six nouveaux types primitifs,
* la possibilité pour les utilisateurs de définir des types de données personnalisés,
* la possibilité de définir des dimensions illimitées,
* la possibilité de définir des groupes permettant d'organiser hiérarchiquement les données et de fournir, aux noms, une portée.
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.

## Logiciels
### Bibliothèques

Les bibliothèques fournies par l'UCAR permettent un accès en lecture/écriture aux fichiers netCDF. La bibliothèque principale est écrite en C, et fournit une API pour les applications codées dans les langages C, C++ et Fortran. Une implémentation alternative, aussi développée et maintenue par Unidata, est écrite en Java; cette implémentation étend le modèle de données et ajoute de nouvelles fonctionnalités. La manipulation de la bibliothèque C par d'autres langages ou des logiciels peut se faire à l'aide des nombreux bindings existants : R, Perl, Python, Ruby, Matlab, Scilab, IDL, et Octave. De même tous les langages fournissant une FFI peuvent utiliser la bibliothèque C et ainsi manipuler les fichiers netCDF. Les conventions d'appels spécifiques à une version de la bibliothèque sont préservés pour des raisons de rétro-compatibilité.

### Utilitaires

Il existe de nombreuses applications qui utilisent le format de fichier netCDF. Cela va de l'utilitaire en ligne de commande à l'application de visualisation. Vous trouverez, ci-dessous, une liste succincte. Une liste plus détaillée est disponible sur le site de l'UCAR.
* Un ensemble d'utilitaires en ligne de commande pour les fichiers netCDF appelé NetCDF Operators (NCO). Cet ensemble fournit des commandes pour la manipulation et l'analyse des fichiers netCDF.
* ncBrowse est une visionneuse générique de fichier netCDF.
* ncview est un explorateur de fichiers netCDF. Ce programme est un outil graphique simple, rapide permettant de la visualisation des champs des fichiers netCDF.
* Panoply est un visualisateur développé par le Goddard Institute for Space Studies de la NASA. Il a été développé en Java.
* Le langage NCAR Command Language est utilisé pour analyser et visualiser les données de fichiers netCDF (entre autres).
* PyNIO est un module Python qui permet de lire et d'écrire dans de nombreux formats de fichiers notamment le netCDF.
* nCDF_Browser est un explorateur de fichiers netCDF, écrit en IDL.

## Champs d'utilisation

Ce format est couramment utilisé dans des applications de climatologie, de météorologie et d'océanographie (ex., prévision météorologique, changement climatique et applications des S.I.G.).
Il s'agit d'un format de choix pour les entrées/sorties de nombreux S.I.G. et pour l'échange de données scientifiques. Le site définit le format NetCDF comme "une interface pour un accès aux données orienté tableaux et une bibliothèque qui fournit une implémentation de cette interface. La bibliothèque netCDF définit en sus un format de représentation des données scientifiques indépendant de l'architecture machine".

## Parallel-NetCDF

Il existe une extension du format netCDF pour le calcul parallèle appelé Parallel-NetCDF (ou PnetCDF) qui a été développé par l'Argonne National Laboratory et l'université Northwestern. Elle est construite au-dessus de MPI-IO, l'extension d'E/S des communications MPI. En utilisant les structures de données de haut niveau de netCDF, la bibliothèque PnetCDF peut utiliser les optimisations pour répartir la charge des lectures et des écritures du fichier sur de nombreux processeurs. PnetCDF peut seulement lire/écrire le format classique et son extension 64-bits. PnetCDF est incapable de lire ou d'écrire le modèle de données HDF5 disponible avec netCDF-4.0.
Les E/S parallèles sont disponibles depuis la version 4 de l'implémentation d'Unidata de la bibliothèque netCDF, mais uniquement pour le modèle de données HDF5.