2017-01-04 128 views
0

我有两个netcdf文件:名为rsds.nc的下陷辐射和名为rsns.nc的受限辐射。 rsds.nc包含一个名为rsds的变量,而rsns.nc包含一个名为rsns的变量。现在我想通过分别减去rsds.ncrsns.nc内的变量来得到上升辐射rsus.nc减去两个不同的netcdf文件中的变量

我尝试以下方法:

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

他们都产生了rsus.nc但是变量路侧单元,在该文件丢失。任何想法为什么这是如此?

回答

2

作为替代@ RichSignell的回答,您可以变量组合成一个单一的文件,并使用ncap2到不重命名变量进行减法。

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

不错,谢谢! –

2

只有当您的ncdiff两个文件操作时,才会对同名变量进行操作。因此,一种解决方案是简单地重命名其中一个文件中的变量,使其相同。例如,试试这个:

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

是的,我同意这一点。但我的希望是,有人知道如何在不改变变量名的情况下做到这一点。 谢谢!丰富! –

2

另一种CDO解决方案。

的CDO子命令一行可以做到这一点:

cdo sub rsds.nc rsns.nc rsus.nc 

您将得到警告

CDO分(警告):输入流有不同的参数!

但你可以忽略它。请注意,您可能希望将变量名称更改为更合适的名称,以便您可以在一行上执行此操作:

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