我有两个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。知道为什么会这样吗?
发布于 2017-01-05 03:49:23
作为@RichSignell答案的另一种选择,您可以将变量组合到一个文件中,并使用ncap2执行减法,而无需重命名变量。
ncks -A rsns.nc rsds.nc
ncap2 -s 'rsus=(rsds-rsns)' rsds.nc rsus.nc发布于 2017-04-03 10:59:46
两种替代的CDO解决方案。
cdo子命令可以在一行上执行此操作:
cdo sub rsds.nc rsns.nc rsus.nc你会收到警告的
cdo子(警告):输入流有不同的参数!
但你可以忽略这一点。请注意,您可能希望将变量名更改为更合适的名称,因此可以在一行上这样做:
cdo setname,rsus -sub rsds.nc rsns.nc rsus.nc这只是模仿公认的答案,但在cdo等效命令中。
cdo cat rsds.nc rsns.nc tmp.nc
cdo expr,"rsus=rsds-rsns" temp.nc rsus.nc顺便说一句,对于周四页面上的所有解决方案,您可能希望使用cdo chgattr或nco等价物来确保元数据对于您的新字段是正确的,特别是如果您打算长期保存这些文件或将它们传递给其他人。
发布于 2017-01-04 14:39:36
当您ncdiff两个文件时,只对同名的变量进行操作。因此,一种解决方案是简单地在其中一个文件中重命名变量,因此它是相同的。例如,尝试如下:
ncrename -v rsds,rsns rsds.nc
ncdiff rsds.nc rsns.nc rsus.nchttps://stackoverflow.com/questions/41460214
复制相似问题