BandMath
工具能够方便的执行图像中各个波段的加、减、乘、除、三角函数、指数、对数等数学函数
计算,也可以使用
IDL
编写的函数。
BandMath
工具使用函数都是基于
IDL
的数据组运算符。
IDL
的数组运算符使用方便且功能强大。
它们可以对图像中的每一个像元进行单独检验
和处理,而且避免了
FOR
循环的使用(不允许在波段运算中使用)。数组运算符包含关系
运算符(
LT
、
LE
、
EQ
、
NE
、
GE
、
GT
)、
Boolean
运算符(
AND
、
OR
、
NOT
、
XOR
)和
最小值、最大值运算符(
<
、
>
)。这些特殊的运算符对图像中的每个像元同时进行处理,
并将结果返还到与输入图像具有相同维数的图像中。
例如:
要找出所有负值像元并用值
-999
代替它们,可以使用如下的波段运算表达式:
(
b1 lt 0
)
*
(
-999
)
+
(
b1 ge 0
)
* b1
关系运算符对真值(关系成立)返回值为
1
,对假值(关系不成立)返回值为
0
。系统读取
表达式(
b1 lt 0
)部分后将返还一个与
b1
维数相同的数组,其中
b1
值为负的区域返回值为
1
;其他部分返回值为
0
,因此在乘以替换值
-999
时,相当于只对那些满足条件的像元有影
响。第二个关系运算符(
b1 ge 0
)是对第一个的补充——找出那些值为正或
0
的像元,乘以
它们的初始值,
然后再加入替换值后的数组中。
这个用法可以扩展到两个图像中,
比如图像
1
中值大于
220
(有云部分)用图像
2
中对应的像素值代替,其余保留图像
1
中的值,表达
式就可以写成:
(
b1 lt 220
)
*b2+
(
b1 le 220
)
* b1
类似的使用数组运算符的表达式为波段运算提供了很强的灵活性。下表中描述了
BandMath
工具中常用的
IDL
数组操作函数,详细介绍,请参阅《
IDL Reference Guide
》。
种类
操作函数