python批处理工具_python调用HEG工具批量处理MODIS数据

本文介绍了如何使用Python调用NASA的HEG工具进行MODIS数据的批处理,包括投影坐标转换与重采样。通过读取HEG用户手册,自动生成批处理参数文件,并对参数文件的换行符进行处理,确保在Windows环境下正确运行。代码示例详细展示了整个处理流程。
摘要由CSDN通过智能技术生成

下面的代码主要用于使用python语言调用NASA官方的MODIS处理工具HEG进行投影坐标转换与重采样批量处理

主要参考

主要的注意事项如下:

根据HEG用户手册批量生成批处理参数文件,可以在HEG工具中生成一个文件,拿来自己改改用用

具体调用哪一个工具,参数文件如何写,请一定仔细阅读用户手册,东西全都在上面。一般常用的是resample.exe和swtif.exe,如果实在无法判断可以先用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相关环境变量

os.environ['MRTDATADIR']='D:/MyApps/HEG/HEG_Win/data'

os.environ['PGSHOME']='D:/MyApps/HEG/HEG_Win/TOOLKIT_MTD'

os.environ['MRTBINDIR']='D:/MyApps/HEG/HEG_Win/bin'

# 设置HEG的bin路径

hegpath = 'D:/MyApps/HEG/HEG_Win/bin'

# 指定处理模块的可执行程序文件路径,此处采用resample.exe,可以根据具体的处理问题设置

hegdo = os.path.join(hegpath, 'resample.exe')

hegdo = hegdo.replace('\\', '/') # 全路径以“/”连接

# 指定输入数据的路径

inpath = r'C:\Users\pan\Desktop\Py_ex\data\hdf'

inpath = inpath.replace('\\', '/')

# 指定输出数据的路径

outpath = r'C:\Users\pan\Desktop\Py_ex\data\hdf\out'

outpath = outpath.replace('\\', '/')

# 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"C:\Users\pan\Desktop\Py_ex\data\hdf\prm"

prmpath = prmpath.replace('\\', '/')

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'

prmfilename=prmfilename.replace('\\', '/')

#这里一定要注意,设定换行符为‘\n’,否则由于在windows系统下默认换行符为‘\r\n’,则无法运行成功

fo=open(prmfilename,'w',newline='\n')

fo.writelines(prm)

fo.close()

for eachhdf in allhdffiles:

prmfilepath=prmpath +'\\'+ eachhdf + '.prm'

prmfilepath=prmfilepath.replace('\\', '/')

try:

resamplefiles = '{0} -P {1}'.format(hegdo, prmfilepath)

os.system(resamplefiles)

print(eachhdf + ' has finished')

except:

# 提示错误信息

print(eachhdf + 'was wrong')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值