2017-01-16 8 views
1

Wie der Titel zeigt, möchte ich einen Zeitraum zB Januar für eine Variable wind_speed aus einer .nc Datei extrahieren, die aus Windgeschwindigkeiten mit 3-stündiger Auflösung während eines Jahres besteht . Ich würde dies gerne in nco tun, wenn möglich.Monatliche Daten aus stündlich aufgelöster netcdf Datei in nco extrahieren

Ich habe die folgende Methode versucht: ncrcat -O -F -d time,1,248 -v wind_speed sfcWind.nc out.nc und es funktioniert. Für diese Methode muss ich die Zeitspanne im gewählten Monat berechnen. Gibt es eine andere Methode in nco, wo man den Monat angeben und die entsprechenden Daten erhalten kann?

Eine andere Sache ist, dass, wenn man Daten für dec, jan, feb will dann kann diese Methode nicht verwendet werden, oder zumindest meines Wissens. Irgendwelche Vorschläge hier?

Beste Smail

+0

Ich schlage vor, ein einfaches Skript zu erstellen, das angegebene Start/Ende-Indizes erzeugt (zum Beispiel über DJF) und dann einen 'ncks' (oder andere Funktion) Befehl erstellt, der basierend auf diesen Start/Ende-Indizes ausgeführt wird. Wenn Sie die fragliche netcdf-Datei teilen, kann ich Ihnen mehr Anleitungen geben. – N1B4

+0

Sehr geehrte N1B4, Vielen Dank für Ihre Antwort. Ich möchte die netcdf-Datei chare aber es ist etwa 2 GB, die zu groß ist. –

+0

Können Sie dann weitere Details zu seinem Inhalt angeben, vielleicht mit 'ncdump -h yourfile.nc'? – N1B4

Antwort

1

NCO unterstützt multislabs, das heißt, mehrere Zeit hyperslabs in einem Befehl. Damit können Sie beliebige Monate zusammenfassen und der Schalter --msa hält sie in Ordnung. Das Handbuch ist dein Freund.

+0

Danke, ich werde das Handbuch erneut durchsuchen. –

+0

Lieber Charlie, Ich habe die von Ihnen vorgeschlagene Methode verwendet und es hat funktioniert. Ich würde gerne wissen, ob es eine Methode gibt, Daten aus einem bestimmten Monat auszuwählen. Zum Beispiel, wenn ich einen bestimmten Befehl und dann "3" danach schreibe, dann werde ich alle Daten erhalten, die im März enthalten sind? –

+0

Sie können Daten basierend auf dem HyperSlab-Index oder dem HyperSlab-Wert extrahieren. Der Wert kann ein Datum sein, wenn die Zeitvariable ein Attribut "units" im UDUnits-Format hat. Wenn ich deine Frage verstehe, mag das das sein, was du willst. Dies wird im Handbuch im Abschnitt "hyerslabs" erklärt. –

0

cdo kann den Trick, setzen Sie den Index auf den Monat Ihrer Wahl.

cdo selmon,1 sfcWind.nc sfcWind_jan.nc 

Wenn Sie, wie Sie mehrere Monate auswählen möchten erwähnen, können Sie einfach eine kommagetrennte Liste zur Verfügung stellen (natürlich, wenn Sie ein einzelnes Jahr von Daten haben, dann werden Ihre Dezember zum Jan „angrenzend“ sein , Feb).

Verwandte Themen