2017-01-04 5 views
0

Ich habe zwei Netcdf-Dateien: Downwelling Strahlung namens rsds.nc und begrenzte Strahlung namens rsns.nc. rsds.nc enthält eine Variable mit dem Namen rsds und rsns.nc enthält eine Variable namens rsns. Jetzt möchte ich die aufsteigende Strahlung rsus.nc haben, indem ich die Variablen innerhalb von rsds.nc bzw. rsns.nc subtrahiere.Subtrahieren Variablen in zwei verschiedenen Netcdf-Dateien

Ich habe versucht, die folgenden Methoden:

ncdiff rsds.nc rsns.nc rsus.nc 
ncbo op_typ=diff rsds.nc rsns.nc rsus.nc 

Alle von ihnen produziert ein rsus.nc aber die variablen RSU innerhalb dieser Datei fehlt. Irgendeine Idee warum das so ist?

Antwort

2

Als Alternative zu @ RichSignell Antwort, Sie Variablen in eine einzige Datei und verwenden ncap2, um die Subtraktion durchführen, ohne das Umbenennen von Variablen kombinieren können.

ncks -A rsns.nc rsds.nc 
ncap2 -s 'rsus=(rsds-rsns)' rsds.nc rsus.nc 
+0

Schön, danke! –

2

Nur Variablen mit dem gleichen Namen werden bearbeitet, wenn Sie ncdiff zwei Dateien. Eine Lösung wäre also, die Variable einfach in eine der Dateien umzubenennen, damit sie identisch ist. Zum Beispiel, versuchen Sie dies:

ncrename -v rsds,rsns rsds.nc 
ncdiff rsds.nc rsns.nc rsus.nc 
+0

Ja, ich stimme dem zu. Aber meine Hoffnung war, dass jemand eine Idee hatte, wie man das macht, ohne den Variablennamen zu umgehen. Danke Rich! –

2

Eine alternative CDO-Lösung.

Die CDO-Sub-Befehl kann diese auf einer Linie tun: Eingangsströme haben unterschiedliche Parameter:

cdo sub rsds.nc rsns.nc rsus.nc 

Sie die Warnung

cdo Unter (Warnung) erhalten!

Aber Sie können das ignorieren. Beachten Sie, dass Sie den Variablennamen möglicherweise in etwas passenderes Format ändern möchten, sodass Sie dies in einer Zeile wie folgt tun können:

cdo setname,rsus -sub rsds.nc rsns.nc rsus.nc 
Verwandte Themen