为什么envi中band math算出来的NDVI MNDWI NDBI等全部是正值?

1. 主要原因

数据类型转换,类型改成float。

例:当两个unit相比如:

unit a=4;

unit b=5;

为什么envi中band math算出来的NDVI MNDWI NDBI等全部是正值?

由于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)

为什么envi中band math算出来的NDVI MNDWI NDBI等全部是正值?


 3.参考

http://blog.sina.com.cn/s/blog_bf1a24270102wjmh.html