Aktionen

NetCDF: Unterschied zwischen den Versionen

Aus BAWiki

imported>Lang Guenther
K ((neu) Link NetCDF Einzelpositionen)
(→‎Wichtige NetCDF Hilfsmethoden: Link auf Utilities aktualisiert)
 
(71 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
==Zielsetzung dieser BAWiki-Seiten==
==Zielsetzung dieser BAWiki-Seiten==


Dieser Bereich des BAWiki enthält alle NetCDF-Konventionen, die zur Speicherung typischer BAW-spezifischer Daten in NetCDF-Dateien (siehe [http://www.unidata.ucar.edu/software/netcdf/ ''network common data form'']) erforderlich sind.  Insbesondere werden auch alle ''lokalen'' Konventionen aufgeführt, die über die international vereinbarte [http://cf-pcmdi.llnl.gov/ CF-Metadaten-Konvention] hinausgehen. Diese BAWiki-Plattform dient daher auch als Diskussionsforum zur Abstimmmung der zusätzlich erforderlichen Konventionen.  
Dieser Bereich des BAWiki enthält alle NetCDF-Konventionen, die zur Speicherung typischer BAW-spezifischer Daten in NetCDF-Dateien (siehe [http://www.unidata.ucar.edu/software/netcdf/ ''network common data form'']) erforderlich sind.  Insbesondere werden auch alle ''lokalen'' Konventionen aufgeführt, die über die international vereinbarte [http://cf-convention.github.io/ 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  [http://ugrid-conventions.github.io/ugrid-conventions/#ugrid-conventions-v10 GITHUB] beschrieben.
Nützliche Mustervorlagen zur Verwendung insbesondere globaler Attribute sind bei den [http://www.nodc.noaa.gov/data/formats/netcdf/ NODC NetCDF Templates] zu finden. Das Datenzentrum NODC firmiert seit einiger Zeit unter [http://www.ncei.noaa.gov/ ''National Centers for Environmental Information'' (NCEI)].


In allen Fällen, in denen die CF-Konventionen unzueichend sind, sollte zunächst geprüft werden, ob die Erweiterungen mit [http://public.deltares.nl/display/NETCDF/netCDF Deltares-Konventionen] beschrieben werden können oder nicht - ggf. in Abstimmung mit [http://www.deltares.nl/ Deltares] die Deltares-Konventionen erweitern.
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 [http://www.hdfgroup.org/HDF5/ 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


Die zusätzlich benutzen Konventionen sollen in dem globalen NetCDF-Attribut ''Conventions'' z. B. wie folgt beschrieben werden:
==Wichtige NetCDF Hilfsmethoden==
: // global attributes:
:: :'''Conventions''' = "CF-1.4/Deltares-0.1/BAW-0.1" .


=Terminologie=
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].


=Gitter=
==File Chunking==
==Gittertypen==
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:
===Einzelpositionen===
* [http://www.unidata.ucar.edu/blogs/developer/en/entry/chunking_data_why_it_matters ''Chunking Data - Why it matters'']; und
* [[NetCDF Einzelpositionen]]: Gitter aus mehreren Einzelpositionen, z. B. inhaltlich äquivalent mit [[LOCATION_GRID.DAT]].
* [http://www.unidata.ucar.edu/blogs/developer/en/entry/chunking_data_choosing_shapes ''Chunking Data - Choosing shapes''].
===Profile===
 
===Unstrukturiertes Gitter===
==NetCDF vs. GRIB==
===Unstrukturiertes Gitter mit SubGrid===
 
==Koordinatentransformation==
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 [http://www.ecmwf.int/en/workshop-closing-grib/netcdf-gap ''Closing the GRIB/NetCDF gap''].
 
==Literatur==
 
[http://visa.lab.asu.edu/web/wp-content/uploads/2015/12/S08210-3.pdf 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 [http://hadoop.apache.org Hadoop].
 
[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.
 
==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 ([http://www.unidata.ucar.edu/software/netcdf/ 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 http://doi.org/10.5065/D6H70CW6].
 
==Wo wird NetCDF verwendet?==
 
Für eine Übersicht siehe [http://www.unidata.ucar.edu/software/netcdf/usage.html ''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.CFG.DAT|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 [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 doppelter Genauigkeit: ca. 2.2E-16.
Für Daten folgt daraus für die zulässige Toleranz 2 * EPSILON * ABS(data).
 
=Globale Attribute=
 
* [[NetCDF Globale Attribute]]
 
=Einzelpositionen, Profile und Gitter=
* [[NetCDF Einzelpositionen]]: Mehrere Einzelpositionen, in Anlehnung an [[LOCATION_GRID.DAT|location_grid.dat]];
* [[NetCDF Profile]]: Gitter aus mehreren Längs- und Querprofilen, z. B. inhaltlich äquivalent mit [[PROFIL05.BIN|profil05.bin]];
* [[NetCDF Dreiecksgitter]]: Gitter aus Dreiecken, z. B. inhaltlich äquivalent mit [[GITTER05.DAT und GITTER05.BIN|gitter05.dat und gitter05.bin]];
* [[NetCDF Unstrukturiertes Gitter]]: Unstrukturiertes Gitter, z. B. inhaltlich äquivalent mit [[UNTRIM_GRID.DAT|untrim_grid.dat]];
* [[NetCDF Unstrukturiertes Gitter mit SubGrid]]: Unstrukturiertes Gitter mit zusätzlichen SubGrid-Daten, z. B. inhaltlich äquivalent mit [[UTRSUB_GRID.DAT|utrsub_grid.dat]];
* [[NetCDF Aggregation für unstrukturierte Gitter]]: Aggregiertes Gitter auf unstrukturiertem Gitter.


=Zeitkoordinate=
=Zeitkoordinate=
* [[NetCDF Zeitkoordinate]]: Zeitangaben, Zeitintervalle und Kalender.


=Vertikalkoordinate=
=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
* [[NetCDF Packen von Daten]], und
* [[NetCDF Kompression von Daten durch Aufsammeln]]
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 [https://www.unidata.ucar.edu/software/netcdf/docs/netcdf/nccopy.html NCCOPY] nachträglich komprimiert werden.
=Horizontales Koordinatensystem=
* [[NetCDF Grid Mapping Variable]]


=Daten=
=Daten=
==Synoptische 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==
==Zeitserien==
==Analysedaten==
==Analysedaten==
* [[NetCDF Tidekennwerte des Wasserstandes]], und
* [[NetCDF Differenzen der Tidekennwerte des Wasserstandes]].
----
----
zurück zu [[Standard-Software-Anwendungen (Add-ons)]]
zurück zu [[Standard-Software-Anwendungen (Add-ons)]]
----
----
[[Strukturübersicht]]
[[Strukturübersicht]]

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

Zitat

  • Unidata, (year): Package name version number [software]. Boulder, CO: UCAR/Unidata Program Center. Available from URL-to-software-page.

DOI

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

Zeitkoordinate

Vertikalkoordinate

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

Zeitserien

Analysedaten


zurück zu Standard-Software-Anwendungen (Add-ons)


Strukturübersicht