3

我有两个 netcdf 文件:rsds.nc名为rsns.nc. rsds.nc包含一个名为 rsds 的变量和rsns.nc一个名为 rsns 的变量。现在我想rsus.nc通过分别减去rsds.nc和中的变量来获得上升辐射rsns.nc

我尝试了以下方法:

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

他们都产生了一个rsus.nc,但这个文件中的变量 rsus 丢失了。知道为什么会这样吗?

4

3 回答 3

5

作为@RichSignell 答案的替代方案,您可以将变量组合到一个文件中并使用 ncap2 执行减法而不重命名变量。

ncks -A rsns.nc rsds.nc 
ncap2 -s 'rsus=(rsds-rsns)' rsds.nc rsus.nc
于 2017-01-05T03:49:23.027 回答
5

另一种 CDO 解决方案。

cdo sub 命令可以在一行中执行此操作:

cdo sub rsds.nc rsns.nc rsus.nc

你会收到警告

cdo sub(警告):输入流有不同的参数!

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

cdo setname,rsus -sub rsds.nc rsns.nc rsus.nc
于 2017-04-03T10:59:46.623 回答
4

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

ncrename -v rsds,rsns rsds.nc
ncdiff rsds.nc rsns.nc rsus.nc
于 2017-01-04T14:39:36.567 回答