hdfheg批量拼接_python调⽤HEG⼯具批量处理MODIS数据下⾯的代码主要⽤于使⽤python语⾔调⽤NASA官⽅的MODIS处理⼯具HEG进⾏投影坐标转换与重采样批量处理 主要参考
主要的注意事项如下:
根据HEG⽤户⼿册批量⽣成批处理参数⽂件,可以在HEG⼯具中⽣成⼀个⽂件,拿来⾃⼰改改⽤⽤
**具体调⽤哪⼀个⼯具,参数⽂件如何写,请⼀定仔细阅读⽤户⼿册,东西全都在上⾯。⼀般常⽤的是和,如果实在⽆法判断可以先⽤HEG的GUI处理⼀个⾃⼰的数据,保存⼀个prm⽂件,然后根据这个⽂件中的参数,对照着⽤户⼿册⼀个⼀个的,**就可以了。
⽣成参数⽂件写⼊时**⼀定要注意,设定换⾏符为‘\n’,**fo=open(prmfilename,'w',newline='\n'),否则由于在windows系统下默认换⾏符为‘\r\n’,程序⽆法运⾏成功
下⾯是源码分享
# -*- coding: utf-8 -*-
"""
Created on Sun Feb 16 11:27:19 2020
调⽤HEG相关⼯具批处理MODIS数据,主要完成投影坐标转换与重采样
@author: pan
"""
import os
# 设置HEG相关环境变量
# 设置HEG的bin路径
hegpath = 'D:/MyApps/HEG/HEG_Win/bin'
# 指定处理模块的可执⾏程序⽂件路径,此处采⽤,可以根据具体的处理问题设置
hegdo = os.path.join(hegpath, '')
hegdo = place('\\', '/') # 全路径以“/”连接
# 指定输⼊数据的路径
inpath = r'C:\Users\pan\Desktop\Py_ex\data\hdf'
inpath = place('\\', '/')
# 指定输出数据的路径
outpath = r'C:\Users\pan\Desktop\Py_ex\data\hdf\out'
outpath = place('\\', '/')
# 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)
writelines方法的参数可以是# prm⽂件设置模块,需要⾸先在HEG⼯具中⽣成⼀个参考的prm⽂件,⽰例如下
# 设置prm⽂件存储路径
prmpath = r"C:\Users\pan\Desktop\Py_ex\data\hdf\prm"
prmpath = place('\\', '/')
for eachhdf in allhdffiles:
prm=['NUM_RUNS = 1\n',
'BEGIN\n',
'INPUT_FILENAME = ' + inpath+'/'+eachhdf+'\n',
'OBJECT_NAME = MODIS_Grid_8Day_1km_LST|\n',
'FIELD_NAME = LST_Day_1km\n',
'BAND_NUMBER = 1\n','SPATIAL_SUBSET_UL_CORNER = ( 90.0 -180.0 )\n',
'SPATIAL_SUBSET_LR_CORNER = ( -90.0 180 )\n',
'RESAMPLING_TYPE = BI\n',
'OUTPUT_PROJECTION_TYPE = ALBERS\n',
'ELLIPSOID_CODE = WGS84\n',
'OUTPUT_PROJECTION_PARAMETERS = ( 0.0 0.0 25.0 47.0 105.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 )\n', 'OUTPUT_PIXEL_SIZE = 500.0\n',
'OUTPUT_FILENAME = ' + outpath+'/'+eachhdf+'_out.tif\n',
'OUTPUT_TYPE = GEO\n',
'END\n']
prmfilename=prmpath +'/'+ eachhdf+'.prm'
place('\\', '/')
#这⾥⼀定要注意,设定换⾏符为‘\n’,否则由于在windows系统下默认换⾏符为‘\r\n’,则⽆法运⾏成功
fo=open(prmfilename,'w',newline='\n')
fo.writelines(prm)
fo.close()
for eachhdf in allhdffiles:
prmfilepath=prmpath +'\\'+ eachhdf + '.prm' place('\\', '/')
try:
resamplefiles = '{0} -P {1}'.format(hegdo, prmfilepath) os.system(resamplefiles)
print(eachhdf + ' has finished')
except:
# 提⽰错误信息
print(eachhdf + 'was wrong')
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论