700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python调用HEG批量转换hdf影像为tiff

Python调用HEG批量转换hdf影像为tiff

时间:2023-08-12 07:57:55

相关推荐

Python调用HEG批量转换hdf影像为tiff

目录

Python代码注意参考

Python代码

本文示例为处理MOD11_L2数据,提取数据中的QC和LST图层的代码:

# -*- coding: utf-8 -*-"""调用HEG相关工具批处理MODIS数据"""import os# 设置HEG相关环境变量os.environ['MRTDATADIR'] = 'D:\\HEGtools\\HEG_Win\\data'os.environ['PGSHOME'] = 'D:\\HEGtools\\HEG_Win\\TOOLKIT_MTD'os.environ['MRTBINDIR'] = 'D:\\HEGtools\\HEG_Win\\bin'# 设置HEG的bin路径hegpath = 'D:\\HEGtools\\HEG_Win\\bin'# 指定处理模块的可执行程序文件路径,此处采用swtif.exe,可以根据具体的处理问题设置hegdo = os.path.join(hegpath, 'swtif.exe')# 指定输入数据的路径inpath = r'D:\MODIS\testin'# 指定输出数据的路径outpath = r'D:\MODIS\testout'# os.chdir(inpath) #改变当前工作目录到输入数据目录# 获取当前文件夹下的所有hdf文件allfiles = os.listdir(inpath)allhdffiles = []for eachfile in allfiles:if os.path.splitext(eachfile)[1] == '.hdf':allhdffiles.append(eachfile)print('--'*20)print('文件数量为:', len(allhdffiles), ',所有hdf文件如下')print(' '+'\n '.join(allhdffiles))print('--'*20)# prm文件设置模块,需要首先在HEG工具中生成一个参考的prm文件,示例如下# 设置prm文件存储路径prmpath = r"D:\MODIS\testin"#prmpath = prmpath.replace('\\', '/')for eachhdf in allhdffiles:prm = ['NUM_RUNS = 2\n','BEGIN\n','INPUT_FILENAME = ' + inpath+'/'+eachhdf+'\n','OBJECT_NAME = MOD_Swath_LST\n','FIELD_NAME = QC|\n','BAND_NUMBER = 1\n','OUTPUT_PIXEL_SIZE_X = 0.014441\n','OUTPUT_PIXEL_SIZE_Y = 0.009046\n','SPATIAL_SUBSET_UL_CORNER = ( 61.485413 -12.8604 )\n','SPATIAL_SUBSET_LR_CORNER = ( 39.5896 27.465942 )\n','RESAMPLING_TYPE = NN\n','OUTPUT_PROJECTION_TYPE = GEO\n','ELLIPSOID_CODE = DEFAULT\n','OUTPUT_PROJECTION_PARAMETERS = ( 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 )\n','OUTPUT_FILENAME = ' + outpath+'/'+eachhdf[0:-4]+'_MOD_Swath_QC.tif\n','OUTPUT_TYPE = GEO\n','END\n''BEGIN\n','INPUT_FILENAME = ' + inpath + '/' + eachhdf + '\n','OBJECT_NAME = MOD_Swath_LST\n','FIELD_NAME = LST|\n','BAND_NUMBER = 1\n','OUTPUT_PIXEL_SIZE_X = 0.014441\n','OUTPUT_PIXEL_SIZE_Y = 0.009046\n','SPATIAL_SUBSET_UL_CORNER = ( 61.485413 -12.8604 )\n','SPATIAL_SUBSET_LR_CORNER = ( 39.5896 27.465942 )\n','RESAMPLING_TYPE = NN\n','OUTPUT_PROJECTION_TYPE = GEO\n','ELLIPSOID_CODE = DEFAULT\n','OUTPUT_PROJECTION_PARAMETERS = ( 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 )\n','OUTPUT_FILENAME = ' + outpath + '/' + eachhdf[0:-4] + '_MOD_Swath_LST.tif\n','OUTPUT_TYPE = GEO\n','END\n']prmfilename = prmpath + '\\' + eachhdf[0:-4]+'.prm'# 这里一定要注意,设定换行符为‘\n’,否则由于在windows系统下默认换行符为‘\r\n’,则无法运行成功fo=open(prmfilename,'w',newline='\n')fo.writelines(prm)fo.close()for eachhdf in allhdffiles:prmfilepath = prmpath + '\\' + eachhdf[0:-4] + '.prm'try:resamplefiles = '{0} -P {1}'.format(hegdo, prmfilepath)os.system(resamplefiles)print(eachhdf + ' has finished')except:# 提示错误信息print(eachhdf + 'was wrong')

注意

需要修改的部分为

全部路径prm文件的设置内容

参考

代码参考:/yhpan/p/12324465.html

关于路径中的“\\”解释参考:/databatman/article/details/49453953

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。