植被覆盖度(Fraction Vegetation Cover,FVC)

植被覆盖度( FractionalVegetation Cover,FVC) 通常定义为植被( 包括叶、茎、枝) 在地面的垂直投影面积占统计区总面积的百分比,它量化了植被的茂密程度,反应了植被的生长态势,是刻画地表植被覆盖的重要参数,也是指示生态环境变化的基本指标。植被覆盖度的测量方法从以前的地面测量(目估法、采样法等)操作复杂,成本高,效率低逐渐被遥感估算方法取代(回归指数、植被指数等)。

以下太长不看了,重点是几个公式。

VFC即植被覆盖度:

NDVIsoil为完全是裸土或无植被覆盖区域的NDVI值
NDVIveg则代表完全被植被所覆盖的像元的NDVI值,即纯植被像元的NDVI值。

比如以5%的置信度计算某时期NDVIsoil、NDVIveg, 其中累计百分比为5%时的NDVI值为NDVIsoil,累计百分比为95%时的NDVI值为NDVIveg

两个值的计算公式为:

(1)NDVIsoil=(VFCmax*NDVImin-VFCmin*NDVImax)/(VFCmax-VFCmin)

(2)NDVIveg=((1-VFCmin)*NDVImax-(1-VFCmax)*NDVImin)/(VFCmax- VFCmin)

置信度计算方法为:

ENVI公式:
(b1 gt 0.7)* 1+(b1 It 0.05)0+(b1 ge 0.05 and b1 le 0.7)(b1-0.05)(0.7-0.05))
Arcgis中calcuator公式:
Con( inRaster<0. 05 ,0. Con( (inRaster>=005 )&( inRaster<=0.7). (inRaster-005)/(0.7-0 .05),1))


数据处理

  • 数据来源:ModisNDVI数据下载
  • 空间位置:陕西省榆林市
  • 时间:2000-2022年

具体操作

1.创建Python文件

首先打开PyCharm,新建一个目录,用来存放工程文件,在目录下面就可以创建Python程序文件了,你只需要点击【新建】【Python文件】

新建工程

2.写入代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# coding=utf-8

# 导入必要的模块
import sys
# reload(sys)
# sys.setdefaultencoding("utf-8")
import os
import arcpy
from arcpy import env
from arcpy.sa import *

# 设置输入文件夹路径
inputfilepath = r"C:\NDVIout\Result"

# 设置ArcGIS的工作环境为输入文件夹路径
arcpy.env.workspace = inputfilepath

# 获取输入文件夹中所有的.tif格式的栅格数据集
rasterlist = arcpy.ListRasters("*", "tif")

# 设置输出文件夹路径
outputpath = r"C:\FVCout"

# 设置中间数据存储文件夹路径
intermediateDataPath = outputpath + "\\" + "IntermediateData"

# 检查输出文件夹是否已存在,如果不存在则创建
if os.path.exists(outputpath):
print("Outputfile floder exists!")
else:
os.makedirs(outputpath) # 创建多层目录

# 检查中间数据存储文件夹是否已存在,如果不存在则创建
if os.path.exists(intermediateDataPath):
print("IntermediateData floder exists")
else:
arcpy.CreateFolder_management(outputpath, "IntermediateData")

# 遍历每一个栅格数据集
for raster in rasterlist:
print(str(raster))

# 设置工作环境为中间数据存储文件夹
arcpy.env.workspace = intermediateDataPath
arcpy.env.overwriteOutput = True

# 检出ArcGIS 3D Analyst和Spatial扩展许可
arcpy.CheckOutExtension("3D")
arcpy.CheckOutExtension("Spatial")

# 构建输入栅格数据集的完整路径
inputRaster = inputfilepath + '\\' + raster
print(inputRaster)

# 构建输出VFC(Vegetation Fraction Cover)栅格数据集的完整路径
vfcoutPath = outputpath + '\\' + raster[:-4] + "_VFC.tif"
print(vfcoutPath)

# 将输入栅格数据集转换为浮点型
arcpy.Float_3d(inputRaster, "floatNDVIBand.tif")

# 将浮点型栅格数据集乘以10000
arcpy.Times_3d("floatNDVIBand.tif", 10000, "outTimesndvi.tif")

# 读取输出的浮点型栅格数据集
inRaster = "outTimesndvi.tif"
inRaster = arcpy.Raster(inRaster)

# 根据条件进行逻辑运算,生成VFC栅格数据集
outCon = Con(inRaster < 0.05, 0, Con((inRaster >= 0.05) & (inRaster <= 0.7), (inRaster - 0.05)/(0.7 - 0.05), 1))

# 保存生成的VFC栅格数据集
outCon.save(vfcoutPath)

# 打印提示信息
print("OK!")

  • 提示,网络代码可能需要进行修改到符合自身需求和数据需求的情况,有疑惑可以关注微信公众号xbgis联系作者进行解答。

3.运行成功

1
2
3
4
5
6
7
8
9
10
china_2021_NDVI1km.tif
F:\沙漠绿色奇迹\modis_ndvi\榆林市\china_2021_NDVI1km.tif
F:\沙漠绿色奇迹\modis_ndvi\FVC\yulin\china_2021_NDVI1km_VFC.tif
OK!
china_2022_NDVI1km.tif
F:\沙漠绿色奇迹\modis_ndvi\榆林市\china_2022_NDVI1km.tif
F:\沙漠绿色奇迹\modis_ndvi\FVC\yulin\china_2022_NDVI1km_VFC.tif
OK!

进程已结束,退出代码0

打开文件夹,查看批量处理后的结果

批量生成好的FVC

在ArcGIS中附上色带查看 NICE!

查看结果


致谢/参考文档:科学网—MODIS NDVI数据处理相关问题 - 杨峰峰的博文 (sciencenet.cn)