在两个不同的 netcdf 文件中减去变量
subtracting variables within two different netcdf files
我有两个 netcdf 文件:名为 rsds.nc
的下行辐射和名为 rsns.nc
的受限辐射。 rsds.nc
包含一个名为 rsds 的变量,rsns.nc
包含一个名为 rsns 的变量。现在我想通过分别减去 rsds.nc
和 rsns.nc
中的变量来得到上升流辐射 rsus.nc
。
我尝试了以下方法:
ncdiff rsds.nc rsns.nc rsus.nc
ncbo op_typ=diff rsds.nc rsns.nc rsus.nc
他们都产生了一个 rsus.nc
但是这个文件中的变量 rsus 丢失了。知道为什么会这样吗?
当你ncdiff
两个文件时,只对同名变量进行操作。因此,一种解决方案是简单地重命名其中一个文件中的变量,使其相同。例如,试试这个:
ncrename -v rsds,rsns rsds.nc
ncdiff rsds.nc rsns.nc rsus.nc
作为@RichSignell 答案的替代方法,您可以将变量组合到一个文件中,并使用 ncap2 执行减法而不重命名变量。
ncks -A rsns.nc rsds.nc
ncap2 -s 'rsus=(rsds-rsns)' rsds.nc rsus.nc
另一种 CDO 解决方案。
cdo 子命令可以在一行中完成:
cdo sub rsds.nc rsns.nc rsus.nc
您将收到警告
cdo sub(警告):输入流具有不同的参数!
但你可以忽略它。请注意,您可能希望将变量名称更改为更合适的名称,因此您可以在一行中执行此操作:
cdo setname,rsus -sub rsds.nc rsns.nc rsus.nc
我有两个 netcdf 文件:名为 rsds.nc
的下行辐射和名为 rsns.nc
的受限辐射。 rsds.nc
包含一个名为 rsds 的变量,rsns.nc
包含一个名为 rsns 的变量。现在我想通过分别减去 rsds.nc
和 rsns.nc
中的变量来得到上升流辐射 rsus.nc
。
我尝试了以下方法:
ncdiff rsds.nc rsns.nc rsus.nc
ncbo op_typ=diff rsds.nc rsns.nc rsus.nc
他们都产生了一个 rsus.nc
但是这个文件中的变量 rsus 丢失了。知道为什么会这样吗?
当你ncdiff
两个文件时,只对同名变量进行操作。因此,一种解决方案是简单地重命名其中一个文件中的变量,使其相同。例如,试试这个:
ncrename -v rsds,rsns rsds.nc
ncdiff rsds.nc rsns.nc rsus.nc
作为@RichSignell 答案的替代方法,您可以将变量组合到一个文件中,并使用 ncap2 执行减法而不重命名变量。
ncks -A rsns.nc rsds.nc
ncap2 -s 'rsus=(rsds-rsns)' rsds.nc rsus.nc
另一种 CDO 解决方案。
cdo 子命令可以在一行中完成:
cdo sub rsds.nc rsns.nc rsus.nc
您将收到警告
cdo sub(警告):输入流具有不同的参数!
但你可以忽略它。请注意,您可能希望将变量名称更改为更合适的名称,因此您可以在一行中执行此操作:
cdo setname,rsus -sub rsds.nc rsns.nc rsus.nc