NetCDF Operators
Aus BAWiki
Über NCO
Der NCO "Werkzeugkasten" ermöglicht die Manipulation sowie Analyse von in NetCDF Dateiformaten abgelegten Daten. Darin eingeschlossen sind die Formate DAP, HDF4 und HDF5. NCO nutzt dabei die vielfältigen Möglichkeiten der CF (Climate & Forecast) Metadaten Konvention. Ebenso die flexible Beschreibung der physikalischen Einheiten basierend auf UDUNITS. Datenaustausch über das Netzwerk wird durch OPenDAP unterstützt. Die Art der Speicherung (z.B. Kompression, Chunking, Gruppenbildung) via HDF (Hierarchisches Dateiformat) kann in einfacher Weise beeinflusst werden. Viele leistungsfähige mathematische und statistische Methoden der GSL (GNU Scientific Library) stehen zur Verfügung. NCO ist schnell, mächtig, und frei verfügbar.
Für weitere Informationen siehe nco.sourceforge.net.
Typische Anwendungsfälle in der BAW
Verketten mehrerer nach NetCDF konvertierter boewrt.dat Dateien zu einer cf-netcdf.nc Datei
- Originaldaten auf Richtigkeit und Vollständigkeit prüfen;
- (optional) boewrt.dat mit ZEITRIO in äquidistante Zeitserien gleicher Schrittweite und Länge konvertieren;
- Mehrere boewrt.dat mit DATACONVERT nach cf-netcdf.nc konvertieren (mit identischen Terminen);
- Mit ncrcat können die konvertierten Dateien zu einer cf-netcdf.nc Datei zusammengefasst werden;
- Typische Weiterverarbeitung: NCANALYSE;
- Beispiel: ncrcat -h f1.nc f2.nc ... fn.nc result.nc (-h unterdrückt die Erzeugung bzw. Modifikation eines History-Attributs);
- Mehr Information: ncrcat-netCDF-Record-Concatenator.
Ausdünnen von NetCDF-Dateien entlang einer Dimension
Allgemein
- ncks -d dim, min, max,[ stride] in_file out_file
- Mehr Optionen unter [1].
- Die Zählung erfolgt im C-Stil, d.h. das erste Feldelement hat den Wert 0.
- Den weiter unten beschriebenen ncks-Fehler unbedingt beachten.
Typisches zeitliches Ausdünnen synoptischer Modellergebnisse
- Beispiel:
ncks -d nMesh2_data_time,1,19,6 in_file out_file
- Dadurch werden die Daten des ersten, siebten, dreizehntehn und neunzehnten Zeitschritts extrahiert. Die nicht von nMesh_data_time abhängigen Variablen werden unverändert übernommen.
Typisches räumliches Ausdünnen meteorologischer Anfangs- und Randwerte
- Voraussetzung ist, dass die Daten auf zweidimensionalen, strukturierten Gittern vorliegen.
- Schritt 1:
ncks -d rlon,600,900 iconeu.nc tmp_reduced_rlon.nc
- Schritt 2:
ncks -d rlat,200,500 tmp_reduced_rlon.nc iconeu.reduced_in_space.nc
- Damit wird ein "Quadrat" von 301 * 301 Werten in Längen- und Breitenrichtung augeschnitten. Die meteorologischen Felder lassen sich damit für das Anwendungsgebiet maßschneidern, was den anschließenden IO des Modelles deutlich reduzieren kann.
- Beim Ausschneiden ist zu beachten, dass die Daten unter Umständen in einem rotierten Gitter vorliegen. Wenn die rotated_pole Variable die folgende Eigenschaft hat, können die Werte ohne weitere Koordinatentransformation ausgeschnitten werden:
- char rotated_pole;
rotated_pole:grid_north_pole_latitude = 90. ;
NCKS-Fehler beim Extrahieren mit einer Schrittweite (Stride) ungleich eins
Die folgende Verwendung von NCKS kann unter bestimmten Voraussetzungen (Stride ungleich 1) zu fehlerhaft extrahierten Ergebnissen führen:
ncks -d dim, min, max,[ stride] in_file out_file
Aktuell beobachtetes Verhalten für Variablen mit mehreren Stationen (Dimension time_series) und mehreren Zeitpunkten (Dimension time) bei Verwendung des o. g. Kommandos für dim=time und Stride ungleich 1:
- Fehlfunktion bei Reihenfolge (time_series, time);
- korrekte Funktion bei Reihenfolge (time, time_series);
Wer den Fehler auf einfache Weise vermeiden möchte, setze Stride auf 1 oder verzichte auf Stride. Falls auf eine Extraktion mit Stride ungleich 1 nicht verzichtet werden kann, muss die Reihenfolge der Dimensionen mit z. B.
ncpdq -a dim1,dim2 in_file out_file
verändert werden.
Der Fehler wurde via SourceForge an die Entwickler von NCO gemeldet. Wahrscheinlich benutzen wir eine veraltete Version von NCO (aktuell 4.6.1, empfohlen 4.7.1).
Verfügbarkeit in der BAW-DH
- Linux: nco-4.6.1 vom 06.08.2016
- Windows: auf Konsolenebene verfügbar. Stand 04.02.2015
Kochrezept zum Vorgehen unter Windows
- Konsole im Datenverzeichnis öffnen, z.B. über TotalCommander:
-> Befehle -> Kommandozeilenfenster öffnen
- Suchpfad ergänzen:
set PATH=%PATH%;\\themis\system\akprog\bin\win
- Ausführliche Hilfe zum Kommando einholen, z.B.:
ncrcat
- Kommando mit Optionen, Dateinamen etc. ausführen:
ncrcat -h file1.nc file2.nc result.nc
- Durch Setzen der Option -h unterbindet man das Schreiben der Attribute history und nco_openmp_thread_number. Letzteres würde bei der Weiterverarbeitung mit Programmen wie NCANALYSE einen Fehler verursachen. Wenn man auf die Option -h verzichtet, kann man nco_openmp_thread_number alternativ mit dem Tool ncatted entfernen.
- Beispielverzeichnis $PROGHOME/examples/ncdelta/data/emderfahrwasser-1/mes/wl. Die Zeitreihen elf verschiedener Stationen wurden mit ncrcat zu 2010_0608_0708.aequi5.nc zusammengefasst.
Zitate
Die empfohlenen Zitate bei Verwendung der NCO Software sind:
- Zender, C. S. (2008), Analysis of Self-describing Gridded Geoscience Data with netCDF Operators (NCO), Environ. Modell. Softw., 23(10), 1338-1342, doi:10.1016/j.envsoft.2008.03.004.
- Zender, C. S. (2014), netCDF Operator (NCO) User Guide, Version 4.4.8, http://nco.sf.net/nco.pdf.
Das erste Zitat soll dann benutzt werden, wenn insbesondere auf Design, Zweck und Optimierung von NCO abgehoben wird. Das zweite soll dann verwendet werden, falls auf spezielle Eigenschaften der Software oder den User Guide selbst verwiesen wird.
zurück zu Standard-Software-Anwendungen (Add-ons)