ENVI利用波段运算修改NaN(或Inf)的方法

ENVI利用波段运算修改NaN(或Inf)的方法

NaN为Not a

Number的缩写,在遥感图像中属于异常值。很多用户有修改NaN的需求,比如把0值修改为NaN,或把NaN修改为0值等。由于波段运算公式较为复杂,现归纳如下。

1. 直接利用波段运算进行

Ÿ 修改0值为NaN

– float(b1)*b1/b1

Ÿ 修改特定值(250)为NaN

– b1*float(b1 ne 250)/(b1 ne

250)

Ÿ 修改NaN为特定值(-999):

– finite(b1, /nan)*(-999) or

(~finite(b1, /nan))*b1

Ÿ 修改NaN为0值(先按上面方法修改为-999或其他图像中不存在的值)

– (b1 ne

-999)*b1

2. 利用扩展补丁进行调用

由于波段运算公式较为复杂,所以写成用户函数,编译为sav文件供ENVI调用。

Sav文件下载地址:http://vdisk.weibo.com/s/zrSeGYf9hiwZc

注:适用于ENVI4.8、5.0及以上版本,如果是其他版本,可以将源码自行编译为Sav文件。

下载后将sav文件拷贝到如下路径,重启ENVI即可。

Ÿ ENVI 4.8

– C:\Program

Files\ITT\IDL\IDL80\products\envi48\save_add

Ÿ ENVI

Classic

– C:\Program

Files\Exelis\ENVI50\classic\save_add

Ÿ ENVI 5.0

– C:\Program

Files\Exelis\ENVI50\custom_code

补丁中函数功能和调用格式说明如下表所示:

函数名

功能

波段运算调用公式

NaN2Zero

修改NaN为0值

NaN2Zero(b1)

Zero2NaN

修改0值为NaN

Zero2NaN(b1)

DN2NaN

修改指定值为NaN

DN2NaN(b1,DN)

NaN2DN

修改NaN为指定值

NaN2DN(b1,DN)

注:公式中的DN为用户自定义DN值,比如将值为250的像元修改为NaN,公式可写为:DN2NaN(b1,

250)

相关文章

一直显示 Downloading Do not turn off target 等了很长时间了。。。。手机型号为三星i9250

365体育ios 09-21

dnf制裁公约多久能解除

365体育ios 07-23

直到黎明 (电影)

bet体育365官网正规平台 08-19

微信聊天记录存在哪里

365体育ios 07-10