NetCDF: Unterschied zwischen den Versionen
Aus BAWiki
imported>Lang Guenther (→Automatische Verifikation des Wertebereichs: Text zu Toleranz verkürzt) |
(→Wichtige NetCDF Hilfsmethoden: Link auf Utilities aktualisiert) |
||
(4 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 11: | Zeile 11: | ||
Die wichtigsten Hilfsmethoden der NetCDF ''Utilities'' sind: | Die wichtigsten Hilfsmethoden der NetCDF ''Utilities'' sind: | ||
* [ | * [https://www.unidata.ucar.edu/software/netcdf/workshops/2011/utilities/Ncdump.html NCDUMP] Inhalt einer NetCDF Datei als Text (selektiv) ausgeben; | ||
* [ | * [https://www.unidata.ucar.edu/software/netcdf/workshops/2011/utilities/Nccopy.html NCCOPY] Inhalt einer NetCDF Datei selektiv kopieren, Kompressionsniveau abwandeln, innere Struktur der Datei (''File Chunking'') abwandeln; und | ||
* [ | * [https://www.unidata.ucar.edu/software/netcdf/workshops/2011/utilities/Ncgen.html NCGEN] erzeugt eine NetCDF Datei aus einer CDL Textdatei; optional kann auch C oder FORTRAN Code automatisch damit erzeugt werden. | ||
Einen guten Gesamtüberblick gibt die [http://www.unidata.ucar.edu/software/netcdf/docs/index.html NetCDF-Dokumentation]. | Einen guten Gesamtüberblick gibt die [http://www.unidata.ucar.edu/software/netcdf/docs/index.html NetCDF-Dokumentation]. | ||
==File Chunking== | ==File Chunking== | ||
Die ''Chunk Size'' der in einer CF NetCDF abgelegten Variablen kann die Geschwindigkeit, mit der diese entlang verschiedener Dimensionen gelesen werden kann, erheblich beeinflussen. Typisch für unterschiedliche Zugriffe ist z. B. der räumliche (synoptische) Zugriff gegenüber dem Zeitserien-Zugriff. Die ''Chunk Size'' kann sehr allgemein über die NetCDF API individuell optimiert werden. In vielen Situationen können befriedigende Ergebnisse allerdings auch schon auf sehr einfachem Wege mit Hilfe | Die ''Chunk Size'' der in einer CF NetCDF abgelegten Variablen kann die Geschwindigkeit, mit der diese entlang verschiedener Dimensionen gelesen werden kann, erheblich beeinflussen. Typisch für unterschiedliche Zugriffe ist z. B. der räumliche (synoptische) Zugriff gegenüber dem Zeitserien-Zugriff. Die ''Chunk Size'' kann sehr allgemein über die NetCDF API individuell optimiert werden. In vielen Situationen können befriedigende Ergebnisse allerdings auch schon auf sehr einfachem Wege mit Hilfe der Hilfsprogramme [http://www.unidata.ucar.edu/software/netcdf/docs/netcdf_utilities_guide.html#guide_nccopy NCCOPY] oder [[NCCHUNKIE]] erzielt werden. Für weitergehende Informationen lese man: | ||
* [http://www.unidata.ucar.edu/blogs/developer/en/entry/chunking_data_why_it_matters ''Chunking Data - Why it matters'']; und | * [http://www.unidata.ucar.edu/blogs/developer/en/entry/chunking_data_why_it_matters ''Chunking Data - Why it matters'']; und | ||
* [http://www.unidata.ucar.edu/blogs/developer/en/entry/chunking_data_choosing_shapes ''Chunking Data - Choosing shapes'']. | * [http://www.unidata.ucar.edu/blogs/developer/en/entry/chunking_data_choosing_shapes ''Chunking Data - Choosing shapes'']. | ||
Zeile 30: | Zeile 30: | ||
[https://www.researchgate.net/publication/303822983_Uniform_post-processing_of_computational_results_based_on_UGRID_CF_NetCDF_files Lang, G. (2016) "Uniform post-processing of computational results based on UGRID CF netCDF files"], 13th International [[UNTRIM|UnTRIM]] Users Workshop 2016, Villa Madruzzo, Italy, May 30th - June 1st ([[doi:10.13140/RG.2.1.5059.8000]]). | [https://www.researchgate.net/publication/303822983_Uniform_post-processing_of_computational_results_based_on_UGRID_CF_NetCDF_files Lang, G. (2016) "Uniform post-processing of computational results based on UGRID CF netCDF files"], 13th International [[UNTRIM|UnTRIM]] Users Workshop 2016, Villa Madruzzo, Italy, May 30th - June 1st ([[doi:10.13140/RG.2.1.5059.8000]]). | ||
[https://www.researchgate.net/publication/325545134_A_few_remarks_on_chunked_IO_using_netCDF-4HDF5_Fortran_API Lang, G. (2018) "A few remarks on chunked I/O using netCDF-4/HDF5"], 15th International [[UNTRIM|UnTRIM]] Users Workshop 2018, Villa Madruzzo, Italy, May 28th - May 30th ([[doi:10.13140/RG.2.2.31262.23368]]). | |||
[http://www.mdpi.com/2077-1312/2/1/194/htm Signell, R. P. und Snowden, D. P. (2014) ''Advances in a Distributed Approach for Ocean Model Data Interoperability''. J. Mar. Sci. Eng. 2014, 2, 194-208]. Verweist u. a. auf die Vorteile der Verwendung des UGRID CF Standards für die Speicherung von Daten in netCDF-Dateien. | [http://www.mdpi.com/2077-1312/2/1/194/htm Signell, R. P. und Snowden, D. P. (2014) ''Advances in a Distributed Approach for Ocean Model Data Interoperability''. J. Mar. Sci. Eng. 2014, 2, 194-208]. Verweist u. a. auf die Vorteile der Verwendung des UGRID CF Standards für die Speicherung von Daten in netCDF-Dateien. | ||
Zeile 46: | Zeile 48: | ||
* Unidata, (year): Package name version number [software]. Boulder, CO: UCAR/Unidata Program Center. Available from URL-to-software-page. | * Unidata, (year): Package name version number [software]. Boulder, CO: UCAR/Unidata Program Center. Available from URL-to-software-page. | ||
===DOI=== | |||
* The registered Digital Object Identifier for all versions of netCDF software is [http://doi.org/10.5065/D6H70CW6 http://doi.org/10.5065/D6H70CW6]. | |||
==Wo wird NetCDF verwendet?== | ==Wo wird NetCDF verwendet?== | ||
Zeile 69: | Zeile 75: | ||
Das Ergebnis des Vergleichs der aktuellen mit den zulässigen Wertebereichen wird in (Drucker-) SDR-Dateien protokolliert. Die dort vorhanden Informationen zeigen dem Anwender an, ob eine Verletzung des zulässigen Wertebereichs vorliegt oder nicht. Einen schnellen Überblick erhält man mit '''grep Pruefergebnis''' auf die SDR-Datei. | Das Ergebnis des Vergleichs der aktuellen mit den zulässigen Wertebereichen wird in (Drucker-) SDR-Dateien protokolliert. Die dort vorhanden Informationen zeigen dem Anwender an, ob eine Verletzung des zulässigen Wertebereichs vorliegt oder nicht. Einen schnellen Überblick erhält man mit '''grep Pruefergebnis''' auf die SDR-Datei. | ||
Beim Vergleich des aktuellen mit dem zulässigen Wertebereich wird bei reellwertigen Variablen die Maschinengenauigkeit (''machine epsilon'') verwendet, die sich mit Hilfe von (Fortran) EPSILON wie folgt darstellt: | Beim Vergleich des aktuellen mit dem zulässigen Wertebereich wird bei reellwertigen Variablen die [https://de.wikipedia.org/wiki/Maschinengenauigkeit Maschinengenauigkeit] (''machine epsilon'') verwendet, die sich mit Hilfe von (Fortran) EPSILON wie folgt darstellt: | ||
* Variable mit einfacher Genauigkeit: ca. 1.2E-07; | * Variable mit einfacher Genauigkeit: ca. 1.2E-07; | ||
* Variable mit doppelter Genauigkeit: ca. 2.2E-16. | * Variable mit doppelter Genauigkeit: ca. 2.2E-16. |
Aktuelle Version vom 19. Juni 2020, 14:47 Uhr
Allgemeines
Zielsetzung dieser BAWiki-Seiten
Dieser Bereich des BAWiki enthält alle NetCDF-Konventionen, die zur Speicherung typischer BAW-spezifischer Daten in NetCDF-Dateien (siehe network common data form) erforderlich sind. Insbesondere werden auch alle lokalen Konventionen aufgeführt, die über die international vereinbarte CF-Metadaten-Konvention hinausgehen. In vielen Fällen, in denen die CF-Konventionen unzueichend sind, werden i. W. die Unstructured Grid Metadata Conventions for Scientific Datasets (UGRID Conventions) verwendet. Die aktuelle Version der UGRID Conventions wird auf auf GITHUB beschrieben. Nützliche Mustervorlagen zur Verwendung insbesondere globaler Attribute sind bei den NODC NetCDF Templates zu finden. Das Datenzentrum NODC firmiert seit einiger Zeit unter National Centers for Environmental Information (NCEI).
Die seit 2010 entwickelte BAW-Ausprägung einer NetCDF-Datei wird als Datei des Typs CF-NETCDF.NC bezeichnet. Ab Version NetCDF-4.0 wird HDF (Hierarchical Data File, siehe HDF5 Group) als darunter liegendes Dateiformat verwendet. Damit werden Konzepte wie Online-Kompression der gelesenen/geschriebenen Daten sowie das File Chunking auch bei Verwendung der NetCDF API unterstützt
Wichtige NetCDF Hilfsmethoden
Die wichtigsten Hilfsmethoden der NetCDF Utilities sind:
- NCDUMP Inhalt einer NetCDF Datei als Text (selektiv) ausgeben;
- NCCOPY Inhalt einer NetCDF Datei selektiv kopieren, Kompressionsniveau abwandeln, innere Struktur der Datei (File Chunking) abwandeln; und
- NCGEN erzeugt eine NetCDF Datei aus einer CDL Textdatei; optional kann auch C oder FORTRAN Code automatisch damit erzeugt werden.
Einen guten Gesamtüberblick gibt die NetCDF-Dokumentation.
File Chunking
Die Chunk Size der in einer CF NetCDF abgelegten Variablen kann die Geschwindigkeit, mit der diese entlang verschiedener Dimensionen gelesen werden kann, erheblich beeinflussen. Typisch für unterschiedliche Zugriffe ist z. B. der räumliche (synoptische) Zugriff gegenüber dem Zeitserien-Zugriff. Die Chunk Size kann sehr allgemein über die NetCDF API individuell optimiert werden. In vielen Situationen können befriedigende Ergebnisse allerdings auch schon auf sehr einfachem Wege mit Hilfe der Hilfsprogramme NCCOPY oder NCCHUNKIE erzielt werden. Für weitergehende Informationen lese man:
NetCDF vs. GRIB
Neben NetCDF ist GRIB ein weit verbreitetes Dateiformat. Zur Problematik der Unterschiede von NetCDF und GRIB wurde im September 2014 ein Workshop beim ECMWF abgehalten. Weitere Informationen auf der Website des Workshops Closing the GRIB/NetCDF gap.
Literatur
Biookaghazadeh, Saman, et al. (2015) Enabling scientific data storage and processing on big-data systems. Big Data (Big Data), 2015 IEEE International Conference on. IEEE, 2015 Verwenden von in netCDF-Dateien gespeicherten Daten in dem Big-Data Analysesystem Hadoop.
Lang, G. (2016) "Uniform post-processing of computational results based on UGRID CF netCDF files", 13th International UnTRIM Users Workshop 2016, Villa Madruzzo, Italy, May 30th - June 1st (doi:10.13140/RG.2.1.5059.8000).
Lang, G. (2018) "A few remarks on chunked I/O using netCDF-4/HDF5", 15th International UnTRIM Users Workshop 2018, Villa Madruzzo, Italy, May 28th - May 30th (doi:10.13140/RG.2.2.31262.23368).
Signell, R. P. und Snowden, D. P. (2014) Advances in a Distributed Approach for Ocean Model Data Interoperability. J. Mar. Sci. Eng. 2014, 2, 194-208. Verweist u. a. auf die Vorteile der Verwendung des UGRID CF Standards für die Speicherung von Daten in netCDF-Dateien.
Wie man Unidata danken kann
"Software and technologies developed and distributed by the Unidata Program Center are (with very few exceptions) Free and Open Source, and you can use them in your own work with no restrictions. In order to continue developing software and providing services to the Unidata community, it is important that the Unidata Program Center be able to demonstrate the value of the technologies we develop and services we provide to our sponsors — most notably the National Science Foundation. Including an acknowledgement in your publication or web site helps us do this."
"It helps even more if we are aware of what you're doing. If you're using Unidata technologies and citing them in a paper, poster, thesis, or other venue, we'd be grateful if you would let us know about it by sending a short message to support@unidata.ucar.edu. Thanks!"
Informell
- This project took advantage of netCDF software developed by UCAR/Unidata (www.unidata.ucar.edu/software/netcdf/).
Zitat
- Unidata, (year): Package name version number [software]. Boulder, CO: UCAR/Unidata Program Center. Available from URL-to-software-page.
DOI
- The registered Digital Object Identifier for all versions of netCDF software is http://doi.org/10.5065/D6H70CW6.
Wo wird NetCDF verwendet?
Für eine Übersicht siehe Where is NetCDF used?.
Qualitätssicherung mit NetCDF-Attributen
Die Qualitätssicherung von Analyseergebnissen wird von den Programmen NCANALYSE, NCDELTA und NCAGGREGATE auf der Basis verschiedener NetCDF-Attribute unterstützt.
Attribut actual_range
Darin wird der aktuelle Wertebereich einer (geophysikalischen) Variablen festgehalten. Mit ncdump -h kann der Anwender sich alle relevanten Metadaten einer NetCDF-Datei ausgeben lassen. Das Ergebnis dieses Befehls kann mit grep nach dem Attribut actual_range durchsucht werden. Auf diesem Wege erhält man eine einfache Übersicht, ob der aktuelle Wertebereich einer Variablen zulässig ist oder nicht.
Automatische Verifikation des Wertebereichs
Die oben genannten Programme führen beim Schließen der von ihnen erzeugten NetCDF-Dateien einen automatischen Vergleich des aktuellen mit dem zulässigen Wertebereich durch, insofern
- das Attribut actual_range (aktueller Wertebereich),
- das Attribut cfg_bounds_name (Klasse des zulässigen Wertebereichs), und
- eine Datei des Typs bounds_verify.dat (Beschreibung der zulässigen Wertebereiche für alle Klassen)
vorhanden sind. $PROGHOME/cfg/dmqs/bounds/bounds_verify.dat enthält z. B. typische Angaben zu den zulässigen Wertebereichen der verschiedenen (Variablen-) Klassen.
Das Ergebnis des Vergleichs der aktuellen mit den zulässigen Wertebereichen wird in (Drucker-) SDR-Dateien protokolliert. Die dort vorhanden Informationen zeigen dem Anwender an, ob eine Verletzung des zulässigen Wertebereichs vorliegt oder nicht. Einen schnellen Überblick erhält man mit grep Pruefergebnis auf die SDR-Datei.
Beim Vergleich des aktuellen mit dem zulässigen Wertebereich wird bei reellwertigen Variablen die Maschinengenauigkeit (machine epsilon) verwendet, die sich mit Hilfe von (Fortran) EPSILON wie folgt darstellt:
- Variable mit einfacher Genauigkeit: ca. 1.2E-07;
- Variable mit doppelter Genauigkeit: ca. 2.2E-16.
Für Daten folgt daraus für die zulässige Toleranz 2 * EPSILON * ABS(data).
Globale Attribute
Einzelpositionen, Profile und Gitter
- NetCDF Einzelpositionen: Mehrere Einzelpositionen, in Anlehnung an location_grid.dat;
- NetCDF Profile: Gitter aus mehreren Längs- und Querprofilen, z. B. inhaltlich äquivalent mit profil05.bin;
- NetCDF Dreiecksgitter: Gitter aus Dreiecken, z. B. inhaltlich äquivalent mit gitter05.dat und gitter05.bin;
- NetCDF Unstrukturiertes Gitter: Unstrukturiertes Gitter, z. B. inhaltlich äquivalent mit untrim_grid.dat;
- NetCDF Unstrukturiertes Gitter mit SubGrid: Unstrukturiertes Gitter mit zusätzlichen SubGrid-Daten, z. B. inhaltlich äquivalent mit utrsub_grid.dat;
- NetCDF Aggregation für unstrukturierte Gitter: Aggregiertes Gitter auf unstrukturiertem Gitter.
Zeitkoordinate
- NetCDF Zeitkoordinate: Zeitangaben, Zeitintervalle und Kalender.
Vertikalkoordinate
- NetCDF Vertikalkoordinate: dimensionsbehaftete Vertikalkoordinate (Höhe, Tiefe).
Reduktion der Datensatzgröße
Traditionell, d. h. bis zum Erscheinen von NetCDF-4 (HDF), konnte die Größe der Datensätze mit
reduziert werden. Die Verwendung dieser Methoden wird heute (NetCDF-4 (HDF)) nicht mehr empfohlen. Über die NetCDF API kann jede Variable individuell (Online) beim Schreiben einer Datei komprimiert werden. Existierende NetCDF Dateien können außerdem mit Hilfe von NCCOPY nachträglich komprimiert werden.
Horizontales Koordinatensystem
Daten
Synoptische Daten
- NetCDF Synoptische Daten an Einzelpositionen,
- NetCDF Synoptische Daten auf Profilen,
- NetCDF Querschnittsintegrierte synoptische Daten auf Profilen,
- NetCDF Synoptische Daten im Dreiecksgitter,
- NetCDF Synoptische (morphologische) Daten im Dreiecksgitter,
- NetCDF Synoptische Daten im unstrukturierten Gitter, und
- NetCDF Synoptische Daten im unstrukturierten Gitter mit SubGrid.
- NetCDF DelWAQ Daten
Zeitserien
Analysedaten
zurück zu Standard-Software-Anwendungen (Add-ons)