参考:
利用arcpy在arcgis中批量将hdf数据转tif数据_hdf arcgis 数据-优快云博客
基于ArcPy将HDF格式栅格文件批量转为TIFF格式 - 简书
基于Python的批量多波段HDF文件转为TIF文件 - 简书
HDF格式批量转TIF代码如下:
# -*- coding:utf-8 -*-
import os
import arcpy
from arcpy import env
#sourceDir=r'G:\SCUSWATNew\Sonwcover\ArcPytest\snowdata' #可以是中文路径
#targetDir=r'G:\SCUSWATNew\Sonwcover\ArcPytest\result' #只能是英文路径
sourceDir=arcpy.GetParameterAsText(0)
targetDir=arcpy.GetParameterAsText(1)
arcpy.CheckOutExtension("Spatial")
env.workspace = sourceDir
arcpy.env.scratchWorkspace = sourceDir
hdfList = arcpy.ListRasters('*','HDF')
for hdf in hdfList:
eviName=os.path. basename(hdf).replace('hdf', 'tif')
data1=arcpy.ExtractSubDataset_management(hdf,targetDir+'/' + eviName , "0")
print 'Finished!!!'
中间遇到的困难:
为啥有的eviname那里是eviName=hdf[8:16] + ".tif"这种写法,比如该例子
利用Python(ArcGIS环境下的ArcPy)批量将hdf数据特定波段输出为tif格式_arcgis python按属性导出tif-优快云博客不太明白,但这个参数好像只是命名。
该函数最后一个参数是波段的选择,本研究只提取第一个subdataset(结合arcgis,在arcgis打开的时候能看到波段数),位于0,因此最后是"0"。
采用MRT批处理格式转换、投影参考:
MRT(MODIS Reprojection Tool)安装、影像批量拼接、重投影和格式转换_mrt批量拼接-优快云博客
但是该方法运行实在是太慢啦!没有使用该方法。
批量投影、裁剪:
找到了超好用的工具:
MODIS数据批量处理工具,一键完成拼接、裁剪,比MRT更快速_哔哩哔哩_bilibili
积雪覆盖面积计算:
1、非积雪覆盖百分比栅格设置为空
https://blog.youkuaiyun.com/qq_34950486/article/details/104545545
参考上述文章,结合官方数据产品手册
https://nsidc.org/sites/nsidc.org/files/files/MODIS-snow-user-guide-C6.pdf
>100的栅格设为空值,涉及栅格计算器
批处理采用ModelBuilder的方式
ArcGIS ModelBuilder批量栅格计算器_arcgis批量栅格计算-优快云博客
SetNull("%Clip_MOD10CM.A2000061.061.2020040211342.tif%">100,"%Clip_MOD10CM.A2000061.061.2020040211342.tif%")
2、各栅格的积雪覆盖面积
ModelBuilder+栅格计算器计算积雪覆盖面积:
5000*5000(分辨率)*0.01(百分比)*0.000001(km2)*raster1
"%Clip_MOD10CM.A2001001.061.2020059105205.tif%"*0.01*2944.86864*2944.86864*0.000001
3、所有栅格积雪覆盖求和
Zonal Statistics批量处理
Extract Multi Values to Points 这个会按顺序显示结果。
可恶,后面愣是传不了图片!!!