ENVI & ENVI Classic 中 Band Math 常见运算符及其含义和表达式的写法

一、ENVI Band Math 常见运算符及其用法

运算符/函数含义示例
+加法b1 + b2
-减法b3 - b4
*乘法b1 * 2.0
/除法b2 / b1
^幂运算b1 ^ 2
sqrt()平方根sqrt(b1)
float()转浮点数float(b1)
abs()绝对值abs(b1 - b2)
max(a,b)取较大值max(b1, b2)
min(a,b)取较小值min(b1, b2)
gt(a,b)判断 a 是否大于 b(返回1或0)gt(b1, b2)
lt(a,b)判断 a 是否小于 blt(b1, b2)
and, or逻辑与、或gt(b1, 0.2) and lt(b1, 0.8)
equal(a,b)判断是否相等equal(b1, 1000)
not逻辑非not equal(b1, 0)
eq等于 ( = )b1 eq b2
ne不等于 ( ≠ )b1 ne b2
lt小于 ( < )b1 lt b2
le小于或等于 ( ≤ ) b1 le b2
gt大于 ( > ) b1 gt b2
ge大于或等于 ( ≥ )b1 ge b2

二、编写 Band Math 表达式的注意事项

1. 所有波段应通过 float()函数转成浮点数以避免整数除法。

2. 如果出现除法运算,要注意分母是否为零,可以加入小常数避免除以0。

float(b4 - b3) / (b4 + b3 + 0.0001)

3. 逻辑组合时建议用括号明确优先级,例如:

(gt(b4, 0.2) and lt(b4, 0.8)) or equal(b3, 100)

4. 形如:min(b5, 0.11)/0.11 的公式是错误的,因为min()函数仅支持两个数组(波段)输入,或两个数值输入,但不能混合数组和标量。正确的写法如下:

((b5 le 0.11) * b5 + (b5 gt 0.11) * 0.11) / 0.11
  • b5 le 0.11:当 b5 小于等于 0.11 时为 1,否则为 0 (相当于 TRUE 或 FALSE 的判断,也可以理解为掩膜判断(0,1二值化))

  • (b5 le 0.11) * b5, 即满足(b5 le 0.11)时取b5

  • b5 gt 0.11:大于 0.11 时取 1,否则取0

  • (b5 gt 0.11) * 0.11,即满足(b5 gt 0.11)时取0.11

如果需要了解如何在ENVI和ENVI Classic中使用Band Math,可以参考我的另一篇文章:

如何在ENVI和ENVI Classic中使用Band Math进行波段运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值