接上文
(三)归一化植被指数计算(NDVI)
(1)归一化植被指数概念
1.NDVI(Normalized Difference Vegetation Index,归一化差分植被指数,标准差异植被指数),也称为生物量指标变化,通过测量近红外(植被强烈反射) 和红光(植被吸收)之间的差异来量化植被,可使植被从水和土中分离出来
2.NDVI的范围始终为-1至+1。但是每种类型的土地覆盖并没有明确的界限,例如,当值为负数时,很可能是水。另一方面,如果NDVI值接近+1,则很有可能是茂密的绿叶。然而,当NDVI接近于零时,没有绿叶,甚至可能是城市化区域。
3.NDVI是分析人员在遥感中最常用的指标。
(2)NDVI基本原理:
植物叶片组织对蓝光(470nm)和红光(650nm)有强烈吸收,而对绿光和红外光强烈反射。
叶片中心的海绵组织和叶片背面组织对近红外辐射(NIR, 700-1000nm)反射较强。
从红光(Red)到红外光(NIR),裸地反射率较高但增幅很小。
植被覆盖越高,红光反射越小,近红外光反射越大。红光吸收很快达到饱和,而近红外光反射随着植被增加而增加。
所以,任何强化Red和NIR差别的数学变换都可以作为植被指数,来描述植被状况。归一化植被指数(NDVI)就被定义为:
此公式的结果生成一个介于-1和+1之间的值。如果红色通道的反射率较低(或较低的值),而NIR通道的反射率较高,则将产生较高的NDVI值。反之亦然。
(3)NDVI在农业中示例
检查一下中心枢纽灌溉的农业区的NDVI。枢轴灌溉在一个点上旋转,从而创建圆形作物图案。
真实的颜色是红色,绿色和蓝色条带的外观。真实的色彩是因为其与我们的眼睛所见相同。
在公式中,可以看到NDVI如何利用近红外(NIR)。因此,当将NIR波段显示为红色时,得到的是红外色。我们说彩色红外是因为近红外在红色通道中。正如在下面看到的那样,支点灌溉植被应该已经以鲜红色显示出来
应用公式时,亮绿色表示NDVI高。而红色的NDVI较低。因此,通过测量近红外光(植被强烈反射)和红光(植被吸收)之间的差异来量化植被。
(4)具有NDVI近红外功能的卫星
Sentinel-2,Landsat 和SPOT 等卫星会产生红色和近红外图像
15 个免费卫星图像数据源:15 Free Satellite Imagery Data Sources - GIS Geography
(5)植被指数
这里扩展一下植被指数的概念:
根据波段间的比值运算能够提取植被的算法,称为植被指数(Vegetation Index,VI)
- 比值植被指数(RVI:Ratio Vegetation Index):RVI=NIR/R
- 归一化植被指数(NDVI:Normalized Vegetation Index):NDVI = (NIR-R)/(NIR+R)
- 差值植被指数(DVI:Difference Vegetation Index):DVI=NIR-R
(6)归一化植被指数代码学习
1.python包中的functools,reduce, operator
functools:用于高阶函数,指那些作用于函数或者返回其它函数的函数,通常只要是可以被当做函数调用的对象就是这个模块的目标。
operator:标准运算符替代函数,例如,operator.add(x, y) 与表达式 x+y 相同。 许多函数名与特殊方法名相同,只是没有双下划线。为了向后兼容性,也保留了许多包含双下划线的函数。为了表述清楚,建议使用没有双下划线的函数。函数包含的种类有:对象的比较运算、逻辑运算、数学运算以及序列运算。
reduce:python3中,内置函数中已经没有reduce了。要使用reduce,需要从functools模块里引入
reduce有三个参数,第一个是函数function,第二个是序列sequence,第三个是initial,为初始值,可以忽略。可以看到源代码中已经使用了两个参数
2.多维数组的直方图函数
1)histogram:直方图
2)gd.numpy.searchsorted()
根据函数定义,该函数在应该插入元素以保持顺序的地方查找索引。将索引查找到排序数组“a”中,这样,如果“v”中的相应元素被插入索引之前,则“a”的顺序将被保留。
2)gd.numpy.sort()
返回数组的排序副本
3)gd.numpy.concatenate()
沿现有轴连接一系列阵列
3.ndvi数据的输出
该代码主要目标是计算归一化指数并保存彩色的NDVI数据为geotiff图片
读入NIR和Red图,并对数据进行处理,然后对数据进行输出
这里看一下SaveArray( )函数的定义
输出图如下
(四)土壤调节植被指数 (SAVI)
(1) SAVI概念
(SAVI) 方法是试图通过土壤亮度校正系数最小化土壤亮度影响的植被指数。 它通常用在植被覆盖率较低的干旱区域,其输出值在 -1.0 到 1.0 之间。
SAVI = ((NIR - Red)/(NIR + Red + L)) * (1 + L)
(2) SAVI代码学习
该代码可以获取土壤和植被的uint8格式图像,如下图所示
主要代码分为几块
1.读取土壤和植被NIR和Red图像的处理数据(是多维数组)
2.获取土壤和植被的SAVI数据
3.绘制土壤和植被的uint8格式图像
(五)冠层覆盖度
上面已经计算量土壤调节植被指数 (SAVI)
这里接着对冠层覆盖度进行计算绘图
如下图所示
主要代码分析
红色图框中在获取掩码数据后进行比例计算获取"冠层覆盖度"
随后使用matlab绘图方法绘制冠层覆盖度