用Arcpy批量进行植被覆盖度计算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⽤Arcpy批量进⾏植被覆盖度计算
近期准备计算某地区的植被覆盖度,所⽤数据为MODIS13A3,前期经过了MRT实现批量投影、裁剪及格式转换,并利⽤arcpy进⾏了异常值处理及浮点转换,现在为标准tif格式数据。
由于暂时没找到好的办法可以像ENVI⼀样进⾏置信度区间取值,所以打算采⽤经验值计算植被覆盖度,NDVIveg取值0.7,NDVIsoil取值0.05,当NDVI⼤于0.7时,植被覆盖度为1,当NDVI⼩于0.05时,植被覆盖度为0,中间时采⽤⼆分法公式计算:
vfc = [(NDVI-NDVIsoil)/(NDVIveg-NDVIsoil)]
事先在记事本中写好代码,arcgis分段计算利⽤Con函数实现,具体代码如下:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import os
import arcpy
from arcpy import env
from arcpy.sa import *
arcpy.env.workspace = "E:/MODISNDVI/ceshi"
rasterlist = arcpy.ListRasters("*","tif")
output_path = "E:/MODISNDVI/BYVFC/"
for raster in rasterlist:
print str(raster)
(filepath, fullname) = os.path.split(raster)
(prename, suffix) = os.path.splitext(fullname)
#Raster(raster)读取已有的栅格数据来建⽴栅格对象
inRaster = arcpy.Raster(raster)
outCon = Con(inRaster < 0.05,0, Con((inRaster >= 0.05) & (inRaster <= 0.7), (inRaster-0.05)/(0.7-0.05), 1))
outCon.save(output_path + prename + '_vfc.tif')
print("OK!")
打开Arcgis,点击⼯具箱旁边的⼩图标,进⼊python界⾯,将写好的代码复制到⾥⾯,按enter键运⾏代码
PS:如果有会⽤arcgis实现置信去见取值的⼤神,请指教我⼀下哈,IDL对于我⽽⾔实在是太晕了。