Network Common Data Format (NetCDF) ist ein Dateiformat für den Austausch wissenschaftlicher Daten. Es handelt sich um ein binäres Dateiformat, das durch die Angabe der Byte-Reihenfolge im Header maschinenunabhängig ist. NetCDF ist ein offener Standard; das Projekt wird von der University Corporation for Atmospheric Research (UCAR) betreut.
NetCDF basiert zwar auf dem ähnlich klingenden Common Data Format (CDF) der NASA, hat sich jedoch von diesem fortentwickelt und ist nicht mehr kompatibel. Aktuell ist die NetCDF-Version 3; Version 4 soll mit dem Hierarchical Data Format Version 5 kombiniert werden.
Verwendet wird NetCDF vor allem in den Bereichen Klimatologie und Geoinformationssystem.
Inhaltsverzeichnis |
Das Dateiformat ist selbstbeschreibend – es gibt einen Header, in dem neben Metadaten (in Form von geordneten Paaren aus Schlüsseln und Attributen) auch die Struktur des Datenbereichs beschrieben ist. Die Daten selbst sind als (ein- oder mehrdimensionale) Arrays abgelegt, was einen schnellen Zugriff ermöglicht.
Das API der Version 3 unterscheidet sich deutlich vom API der Version 2, das jedoch zur Rückwärtskompatibilität vollständig enthalten ist. Die neue Version 4.0 des NetCDF-APIs verwendet als Basis das HDF5-Format, jedoch ist das API auch rückwärtskompatibel zu den alten Datenformaten. Damit werden für NetCDF-Programme bei Verwendung des neuen Formats neue Funktionen möglich, beispielsweise größere Dateien und eine unbegrenzte Anzahl an Datendimensionen. Somit soll die Leistungsfähigkeit des HDF5-Formats mit der einfachen Benutzung des NetCDF-APIs kombiniert werden.
Von der UCAR gibt es eine Programmbibliothek, die Lese- und Schreibzugriff auf NetCDF-Dateien bietet. Diese Bibliothek ist in C geschrieben, es gibt jedoch Schnittstellen zu C++, Fortran, R, Perl, Python, Ruby, Matlab, IDL und Octave. Zudem gibt es von UCAR noch eine Implementierung in Java.
Folgende Programme sind verfügbar:
Für den Einsatz auf Parallelrechnern wurde Parallel NetCDF vom Argonne National Laboratory und der Northwestern University entwickelt. Dieses basiert auf MPI-I/O, der I/O-Erweiterung von MPI.