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文件的设置内容
参考
代码参考:https://www.cnblogs.com/yhpan/p/12324465.html
关于路径中的“\\”解释参考:https://blog.csdn.net/databatman/article/details/49453953
Python调用HEG批量转换hdf影像为tiff相关推荐
- python 调用HEG工具批量处理modis数据将hdf转为tif
python 调用HEG工具批量处理modis数据将hdf转为tif 搞了2.3天才搞定,在这里做个记录,希望 可以帮到需要的朋友. HEG工具安装需要的准备工作: 一.. JAVA安装. 电脑上没有 ...
- python调用everything批量查找表格中的文件名在磁盘中是否存在
python调用everything批量查找表格中的文件名在磁盘中是否存在 介绍 Everything 配置 使用openpyxl读写文件 读文件 写文件 BeautifulSoup的使用 创建 be ...
- python调用js批量爆破账号密码
python调用js批量爆破账号密码 前言 流程 爬取账号 爆破 参考文章 前言 在进行默认弱口令爆破的时候遇到了使用js对账号密码加密,而且加密算法写的比较复杂,如果用python重新写一个加密算法 ...
- Python学习:批量转换图片格式-PNG转JPG
个人微信公众号:AI研习图书馆,欢迎关注~ 深度学习知识及资源分享,学习交流,共同进步~ 1. 介绍 Python代码:批量将PNG格式图片转换为JPG图片格式,即PNG转JPG格式. 2. Pyth ...
- 【ArcGIS遇上Python】ArcGIS批量处理栅格影像(NDVI)归一化完整案例代码
文章<ArcGIS栅格影像(NDVI)归一化处理的两种方法精解>详细介绍了ArcGIS中进行NDVI影像归一化处理的两种方法,但是无法批量进行,本文就放大招用Python实现批量NDVI归 ...
- python多层遍历批量转换PPT为PDF
Python多层遍历转换PPT为PDF 1. 需求分析 2. 环境配置 3. PPT转为PDF 4.文件夹遍历 5. 总程序 参考资料 1. 需求分析 因为Mac制作的PPT在一些Windows电脑打 ...
- win10:dos调用ffmpeg批量转换视频格式
简介:在某些特定场景中,测试数据的输入有格式要求,例如需要将目录下所有3gp文件转成mp4,那么我们可以通过dos命令操作ffmpeg进行转换,其他场景以此类推. 相关攻略: 利用ffmpeg将avi ...
- python实现文件格式批量转换,PNG,JPG,PGM(娱乐项)
用python实现文件夹下的成批文件格式转换(娱乐项) 我们对于文件转换的需求很大,甚至于对于图片的格式,JPG和PNG格式在肉眼看来都没什么差别,但是对于计算机而言,它有时候就只接受这些肉眼看起来差 ...
- python 经纬度 地址批量转换
# coding=utf-8import csv import requests import json import pandas as pd import re num=0 y=[] ''' 在u ...
最新文章
- Exp1 PC平台逆向破解(5)M
- Tkinter的事件绑定
- 策略模式在jdk Arrays 中使用
- 让AI自动调参,才是百度无人车的进化方式:适应环境全靠自己 | 论文
- awakeFromNib 与 viewDIdLoad 自己小结
- 4月24 利用shell脚本添加环境变量
- 税务会计实务【19】
- 【参赛作品101】充实openGauss每日一练21天学习完成大总结
- command not found: npm
- 【MySQL数据库设计与应用(四)】视图
- 鼠标失灵,但鼠标和USB接口都是好的的情况。
- Related Problems
- Http免费升级Https详细步骤【Let's Encrypt】
- C# Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
- linux中的帮助命令man,help
- oracle stdevp函数,plsql和tsql常用函数比对
- 多功能计算机使用教程,腾讯tim使用教程计算机应用知识
- 安卓开发实现俄罗斯方块游戏
- 图灵奖得主Yann LeCun的六十年
- EOS智能合约开发系列(15): N与name