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.

Network Common Data Form
Dateiendung: .nc, .cdf
MIME-Type: application/netcdf application/x-netcdf
Magische Zahl: CDF\x01

(ASCII-C-Notation)

Entwickelt von: UCAR
Aktuelle Version 4.9.2[1]
(17. März 2023)
Container für: wissenschaftliche Daten
Erweitert von: CDF
unidata.ucar.edu/software/netcdf/



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 4 (netCDF4). Version 4 baut auf Hierarchical Data Format Version 5 (HDF5) auf und beinhaltet dadurch HDF5 Features wie Deflate (Komprimierung). Version 3 war noch unabhängig von Hierarchical Data Format. Die netCDF4-Bibliothek erlaubt es weiterhin mit Dateien im klassischen netCDF (netCDF Version 3) zu arbeiten.

Verwendung findet netCDF vor allem in der Erdsystemmodellierung (z. B. in der numerischen Wettervorhersage oder der Klimatologie)[2][3][4] und kann in Geoinformationssystemen genutzt werden.

Formatbeschreibung

Bearbeiten

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.[5]

Die Programmierschnittstelle (API, für engl. application programming interface) der Version 3 unterscheidet sich deutlich vom API der Version 2, das jedoch zur Rückwärtskompatibilität vollständig enthalten ist. Die aktuelle Version 4 des netCDF-APIs verwendet als Basis das HDF5-Format, jedoch ist diese 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.

Software

Bearbeiten

Von der UCAR gibt es eine Programmbibliothek, die Lese- und Schreibzugriff auf netCDF-Dateien bietet. Diese Bibliothek ist in C[6] geschrieben, es gibt jedoch Schnittstellen zu C++[7], Fortran[8], R[9][10], Perl, Python[11], Ruby, Matlab, IDL und Octave. Zudem gibt es von UCAR noch eine Implementierung in Java[12].

Folgende Programme zur Arbeit mit netCDF Dateien sind verfügbar:

  • nur Visualisierung:
    • NcBrowse: Ein netCDF-Dateibetrachter mit Unterstützung für Grafik, Animationen und 3D-Visualisierung. Es ist lauffähig unter Linux, macOS und Microsoft Windows.
    • NcView: Ein einfacher netCDF-Dateibetrachter; bietet Animationen, Veränderung der Farbpalette, Betrachtung verschiedener Dimensionen der Datensätze etc. Es ist lauffähig unter Linux und macOS.
    • Panoply: In Java geschriebener netCDF-Dateibetrachter, entwickelt vom Goddard Institute for Space Studies mit Schwerpunkt auf die Darstellung von Geodaten und Unterstützung von Kartenprojektionen. Es ist lauffähig unter Linux, macOS und Microsoft Windows.
  • nur Verarbeitung:
  • Skriptsprachen zur Verarbeitung und Visualisierung:
    • Ferret Data Visualization and Analysis: Visualisierungsprogramm für Ozeanographen und Meteorologen, mit einer Mathematica-ähnlichen interaktiven Schnittstelle und Auswahlmöglichkeit für beliebig geformte Ausschnitte.
    • NCAR Command Language (NCL): Eine Sprache zur wissenschaftlichen Verarbeitung und Visualisierung von Daten in den Formaten netCDF, HDF, GRIB, shape und ASCII.
  • Python-Module:
    • netcdf4-python: offizielles Python-Interface zur netCDF-C-Bibliothek von Unidata
    • PyNIO: Python-Modul zum Zugriff auf unterschiedliche Dateiformate wie beispielsweise netCDF, HDF und GRIB
    • xarray: Python-Modul basierend auf NumPy und pandas

Parallel netCDF

Bearbeiten

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.[14]

Bearbeiten

Einzelnachweise

Bearbeiten
  1. NetCDF 4.9.2. 17. März 2023.
  2. Example netCDF files (Beispiel netCDF Dateien). unidata, abgerufen am 9. April 2020.
  3. Was sind netCDF-Daten? esri, abgerufen am 9. April 2020.
  4. Globalstrahlung (Leistungen des DWD). DWD, abgerufen am 9. April 2020.
  5. R. Rew, G. Davis: NetCDF: an interface for scientific data access. In: IEEE Computer Graphics and Applications. Band 10, Nr. 4, 1990, ISSN 1558-1756, S. 76–82, doi:10.1109/38.56302.
  6. Unidata NetCDF at GitHub. Unidata, abgerufen am 9. April 2020.
  7. netCDF-4 C++ library at GitHub. Unidata, abgerufen am 9. April 2020.
  8. Unidata NetCDF Fortran Library at GitHub. Unidata, abgerufen am 9. April 2020.
  9. ncdf4: Interface to Unidata netCDF (Version 4 or Earlier) Format Data Files. David Pierce, abgerufen am 9. April 2020.
  10. RNetCDF: Interface to 'NetCDF' Datasets. Milton Woods and Pavel Michna, abgerufen am 9. April 2020.
  11. netCDF4 Python module at GitHub. Unidata, abgerufen am 9. April 2020.
  12. netCDF-java. unidata, abgerufen am 9. April 2020.
  13. Philip Wenig, Juergen Odermatt: OpenChrom: a cross-platform open source software for the mass spectrometric analysis of chromatographic data. In: BMC Bioinformatics. Band 11, Nr. 1, 30. Juli 2010, ISSN 1471-2105, S. 405, doi:10.1186/1471-2105-11-405, PMID 20673335.
  14. Jianwei Li, Wei-keng Liao, A. Choudhary, R. Ross, R. Thakur, W. Gropp, R. Latham, A. Siegel, B. Gallagher, M. Zingale: Parallel netCDF: A High-Performance Scientific I/O Interface. 2003, S. 39–39, doi:10.1109/SC.2003.10053.