ENVI编写函数进行波段运算

本文详细介绍了如何在ENVI+IDL环境下编写波段运算函数,包括定义、编译及执行过程,旨在提升数据处理的灵活性与效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

Function bm_func,b1,[b2,…,bn, parameters and keywords]
processing steps
return,result
end
以编写(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=0
IF(count GT 0) THEN den [ptr]=1.0
;继续计算比率结果
result=(FLOAT(b1)+b2)/den
IF(count GT 0) THEN result[ptr]=0.0
;返回结果
RETURN,result
END
编译函数
编译函数的方法有两种,一是直接编译 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) 



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值