之前发过一篇博文,通过IDL自定义函数实现了ENVI下修改NAN的方法,但是对于大数据量会出现内存不足的情况,博文地址:
http://blog.sina.com.cn/s/blog_764b1e9d0100tlah.html
所以考虑还是从波段运算出发,如果数据量过大,ENVI会自动利用分块技术进行处理。
因为本人没有图像中含有NaN值的数据,所以利用波段运算将图像中为0的值变为了-NaN,公式为:(float(b1)/b1)*b1。
修改NaN为-999的公式为:
finite(b1, /nan)*(-999) or (~finite(b1, /nan))*b1
注:此方法不能将NaN修改为0值,只能修改为非0值。
注:如果想修改为0值,先修改为其他值(如-999),再利用波段运算
(b1 ne -999)*b1 即可。
注:如果想修改Inf,将公式中的nan替换为Inf即可。
修改结果如下所示:
图 修改结果
文章来源:http://blog.sina.com.cn/s/blog_764b1e9d01015fh9.html