如题,如果下载的nc文件的缺测值是nan,那么很有可能在使用esccr等不允许有缺测值的函数时会出现“都是等值线”的错误,如何处理?
一句话:如果变量名叫v,那么直接v@_FillValue = -32767 (什么-9999,9999都行,0也行,但是会报warning),不用其他花哨的东西!!
花哨的东西包括但不限于:
v = where( ismissing(v), 0, v )
v = where(isnan_ieee(v), 0, v )
v = where( v.eq.v@_FillValue, 0, v )
v = mask( v, v.eq.v@_FillValue, False )
f = addfile("v.nc","w")
v = f->v
if (any(isnan_ieee(v))) then
value = 1.e20
replace_ieeenan (v, value, 0)
v@_FillValue = value
end if
负责任的讲,上述花哨的语句一句也不能解决v的缺测值是nan从而导致函数计算错误的问题,直接v@_FillValue = -32767简单粗暴有效!!
题外话,解决本来是vibeta本来就是三层但总是报错“数据要三层”并显示错误是-999的,对vibeta中的几个多维变量进行v = where( ismissing(v), 0, v ),就能解决问题!!