ENVI编写函数进行波段运算

来源:互联网 发布:淘宝名不虚传怎么用 编辑:程序博客网 时间:2024/05/20 23:06

编写函数有更好的灵活性。

波段运算函数的编写非常简单,接受输入波段,处理数据,并返回结果。以下面的方式
定义:

Function bm_func,b1,[b2,…,bn, parameters and keywords]processing stepsreturn,resultend
以编写(b1+b2)/ (b1-b2)功能为例,编写波段运算函数步骤如下:
编写函数并保存。

默认保存在以下路径,也可以进行修改。

C:\Documents and Settings\Administrator\IDLWorkspace71

;函数定义为两个输入波段b1和b2以及一个check关键字Function bm_ratio,b1,b2,check=check;计算差值den=FLOAT(b1)-b2;如果设置了check关键字,检查被0除问题IF(KEYWORD_SET(check)) THEN ptr=WHERE(den EQ 0.,count)$ELSE count=0IF(count GT 0) THEN den [ptr]=1.0;继续计算比率结果result=(FLOAT(b1)+b2)/denIF(count GT 0) THEN result[ptr]=0.0;返回结果RETURN,resultEND
编译函数
编译函数的方法有两种,一是直接编译 pro,一是拷贝函数或保存的 sav 文件到相应的目录下重启 ENVI+IDL。 

1)  在 ENVI 的主菜单下,选择[File]→[Compile IDL Module],选择函数进行编译;
2)  把 bm_ratio.pro 或 sav 文件放入 ENVI 安装目录下的..\ envi46\save_add 下,重新启动
ENVI+IDL 即可。
3)  执行函数
在 ENVI 主菜单下,选择[Basic Tools]→[Band Math],在弹出的 BandMath 界面中,在[Enter 
an Expresion]里面输入函数调用,点击[OK]执行。

注意:在点击OK执行之前需要先加载影像,否则没有可用波段供选择。

(5)执行两个波段的比值,不检查是否被0除,在表达式文本框中输入:
Bm_ratio(b1,b2) 
(6)执行两个波段的比值,并检查是否被0除,输入下面的式子:
Bm_ratio(b1,b2,/check) 



0 0
原创粉丝点击