为什么envi中band math算出来的NDVI MNDWI NDBI等全部是正值?
1. 主要原因
数据类型转换,类型改成float。
例:当两个unit相比如:
unit a=4;
unit b=5;
由于unit/unit=unit,而unit类型又不能表示负数。所以怎么办呢?那就是把unit强制转化为int..
因此:unit类型的 -1/9 就被强制转化为了int类型的4294967295 / 9
2.解决办法
强制类型转换
在波段计算器中这样写,以landsat5计算NDVI为例,其他指数类似:
- NDVI=(float(TM4)-float(TM3)) /(float(TM4)+float(TM3))
- 或者 NDVI=(TM4*1.0-TM3*1.0)/(TM4*1.0+TM3*1.0)
- OR更简单,就用ndvi这个工具,改一下波段就可以了,如要计算MNDWI=(2-5)/(2+5)
3.参考