我有两个。nc文件data.nc
和mask.nc
。其中:data.nc
包含一个名为temp
unmask的变量,而mask.nc
包含一个名为tmask
的变量中的掩码,(0 - 1)
的值。使用NCO
,我如何为data.nc
文件应用掩码,使零掩码值设置为缺失,而统一掩码值保持不变?
不清楚您希望对掩码做什么。下面是一个常见的过程,使用掩码将实际值替换为缺失值:
ncks -A -v tmask mask.nc data.nc
ncap2 -s 'where(tmask == 0) temp=temp.get_miss()' data.nc out.nc
where
和get_miss
的文档在手册中
如果temp
比tmask
有更多的记录,那么让where()
条件对tmask
的副本进行操作,该副本已经广播到temp
的大小:
ncap2 -s '*big_mask=0*temp+tmask;where(big_mask == 0) temp=temp.get_miss()' data.nc out.nc
要在cdo
中执行相同的操作,您可以尝试这样做,在获取产品之前首先将掩码中的零设置为缺失:
cdo setctomiss,0 mask.nc maskm.nc
cdo mul data.nc maskm.nc masked_data.nc
cdo
自动重复掩码,使其与数据文件的时间长度相同,称为数据"广播"。
我在这里有一个关于遮罩的youtube视频,作为进一步的指导,以及其他关于暂时广播的材料。