MODIS数据下载

MODIS数据下载地址:https://lpdaac.usgs.gov/products/mod15a2hv006/

MODIS数据格式为HDF,以FPAR数据为例:

推荐使用wget下载,省时省力,还能断点续传。

HEG工具安装

根据自己的平台选择下载安装

https://wiki.earthdata.nasa.gov/pages/viewpage.action?pageId=170800766


以hegMAC为例,下载完解压后执行./install 根据提示输入’安装目录’、'java/bin位置’和’用户名’即可完成安装。

HEG工具运行

使用终端进入安装目录,这里我安装在了/Users/hanlzh/Documents/HEG

cd /Users/hanlzh/Documents/HEG/bin #进入bin
./HEG #执行HEG即可运行窗口


这些操作基本和早期版本的MRT相类似。

基于Python的批处理

将hdf文件按照相同日期归类存档(如图1)

import os
import shutil
sourceDir = '/Users/hanlzh/Desktop/LAI/hdf/2020/'
result_Dir = '/Users/hanlzh/Desktop/LAI/hdf_classify/2020/'
files = os.listdir(sourceDir)
for i in files:fileday = i[14:17] #列出文件日期,如:2020001# print(fileday) target = (result_Dir + fileday)source_file = (sourceDir + i)# print(source_file)target_file = (result_Dir + '/' + fileday + '/' + i)# print(target_file)if not os.path.exists(target):os.makedirs(target)shutil.copyfile(source_file, target_file)else: shutil.copyfile(source_file, target_file)

分类后就得到了这样的目录结构

进行拼接重采样

拼接重采样生成tif文件

# -*- coding: utf-8 -*-
import os
# 设置HEG相关环境变量
os.environ['MRTDATADIR'] = '/Users/hanlzh/Documents/HEG/data'
os.environ['PGSHOME'] = '/Users/hanlzh/Documents/HEG/TOOLKIT_MTD'
os.environ['MRTBINDIR'] = '/Users/hanlzh/Documents/HEG/bin'
# 设置HEG的bin路径
hegpath = '/Users/hanlzh/Documents/HEG/bin'
# 指定处理模块的可执行程序文件路径,批处理采用subset_stitch_grid,可以根据具体的处理问题设置
hegdo = os.path.join(hegpath, 'subset_stitch_grid')
# 指定输入数据的路径
inpath = r'/Users/hanlzh/Desktop/LAI/hdf_classify'
# 指定输出数据的路径
outpath = r'/Users/hanlzh/Desktop/LAI/output'
# os.chdir(inpath) #改变当前工作目录到输入数据目录
prmpath = r"/Users/hanlzh/Desktop/LAI"
# 读取目录
allyears = os.listdir(inpath)
# print(allyears)
for year in allyears:year_path = inpath + '/' + year# print(year_path)day_folders = os.listdir(year_path)# print(day_folders)  for day in day_folders:  day_path = year_path + '/' + day#print(day_path)allfiles = os.listdir(day_path)#print(allfiles)# 列出每年/每天/*.hdf所有文件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)# 要求所有文件名首尾串联,且用'|'进行分隔        sd = ""for eachhdf in allhdffiles:file_name = day_path + '/' + eachhdf + '|'sd += file_name.strip()# print(sd)# prm文件设置模块,需要首先在HEG工具中生成一个参考的prm文件,示例如下:# '\n'表示换行# prm具体设置根据需要做出调整,这里的仅供参考!prm = ['\n''NUM_RUNS = 1\n','\n''BEGIN\n', 'NUMBER_INPUTFILES = 7\n','INPUT_FILENAMES = ' + sd + '\n','OBJECT_NAME = MOD_Grid_MOD15A2H|\n','FIELD_NAME = Fpar_500m|\n','BAND_NUMBER = 1\n','SPATIAL_SUBSET_UL_CORNER = ( 59.999999995 91.37851024 )\n','SPATIAL_SUBSET_LR_CORNER = ( 39.999999996 179.99999996 )\n','OUTPUT_OBJECT_NAME = MOD_Grid_MOD15A2H|\n','OUTGRID_X_PIXELSIZE = 500.000000000\n','OUTGRID_Y_PIXELSIZE = 500.000000000\n','RESAMPLING_TYPE = NN\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_FILENAME = ' + outpath + '/' + 'Fpar_' + year + '_' + day + '.tif' + '\n','SAVE_STITCHED_FILE = NO\n','OUTPUT_STITCHED_FILENAME = /Users/hanlzh/Desktop/LAI/output/temp' + '_' + year + day + '.hdf'+ '\n','OUTPUT_TYPE = GEO\n','END\n',]# 设置prm文件存储路径prmfilename = prmpath + '/' + 'python_test' +'_gridstitch'fo=open(prmfilename,'w',newline='\n')fo.writelines(prm)fo.close()# 执行命令resamplefiles = '{0} -P {1}'.format(hegdo, prmfilename)print(resamplefiles)os.system(resamplefiles)print('--'*60)print(year + '/' + day + '_' +'Have Finished!')print('--'*60)

特别注意:macos下会自动生成一个.DS_Store的隐藏文件,要在终端ls -al显示后 rm .DS_Store
否则会影响Python的列表读取,导致报错终止进程。

运行成功后就会出现处理进度,并生成自定义的prm文件(*_gridstitch)和output下的临时hdf文件与tif输出结果。

最后等待进程结束即可。

MODIS数据之HEG拼接重采样批处理(Python_MacOS)相关推荐

  1. MODIS数据下载、拼接、转tif

    modis数据的优势在于时间序列长,产品种类多. modis数据下载下来是hdf格式,且一份数据由很多瓦片数据组成,需要进行拼接.投影,转tif等操作 刚开始研究了好久使用MRT来对modis的hdf ...

  2. MODIS数据下载,HEG批量拼接处理,arcmap批量掩膜提取,python栅格计算

    前言: 2022.12.30修改:补Python编程基础的过程中发现使用Print也可以向文件里写东西,查看写过的代码,然后发现HEG批量拼接处理代码中有的地方在复制粘贴至博客的时候出现了缩进错误,评 ...

  3. hdf heg 批量拼接_python调用HEG工具批量处理MODIS数据

    下面的代码主要用于使用python语言调用NASA官方的MODIS处理工具HEG进行投影坐标转换与重采样批量处理 主要参考 主要的注意事项如下: 根据HEG用户手册批量生成批处理参数文件,可以在HEG ...

  4. python modis数据拼接_python调用HEG工具批量处理MODIS数据的方法及注意事项

    下面的代码主要用于使用python语言调用NASA官方的MODIS处理工具HEG进行投影坐标转换与重采样批量处理 主要参考 HEG的用户手册:https://newsroom.gsfc.nasa.go ...

  5. python批处理工具_python调用HEG工具批量处理MODIS数据的方法及注意事项

    下面的代码主要用于使用python语言调用NASA官方的MODIS处理工具HEG进行投影坐标转换与重采样批量处理 主要参考 HEG的用户手册:https://newsroom.gsfc.nasa.go ...

  6. python 调用HEG工具批量处理modis数据将hdf转为tif

    python 调用HEG工具批量处理modis数据将hdf转为tif 搞了2.3天才搞定,在这里做个记录,希望 可以帮到需要的朋友. HEG工具安装需要的准备工作: 一.. JAVA安装. 电脑上没有 ...

  7. 【MODIS合集】MRT批处理MODIS数据

    [MODIS合集]MRT批处理MODIS数据 针对MODIS数据的处理,NASA提供了modis tool软件,方便我们对数据进行处理,包括数据格式的转换,坐标系转换.镶嵌以及重采样等. 单个文件的处 ...

  8. 手动下载、投影、拼接全球modis数据——以mcd12q1为例

    1.下载modis全球数据步骤(以mcd12q1产品为例) modis官网下载地址:https://lpdaac.usgs.gov/products/mcd12q1v006/#tools 下载得到包含 ...

  9. modis数据简介及批处理工具

    MODIS数据: MODIS是传感器而不是卫星(Landsat是卫星) MODIS传感器的全称为中分辨率成像光谱仪(moderate-resolution imaging spectroradiome ...

最新文章

  1. 如何将模糊的图片变得清晰
  2. Tiny4412开发板 LED灯的控制
  3. 7.Windows线程切换_时钟中断切换
  4. 装饰器的注意事项python_python中的装饰器decorator
  5. 微软正在开发基于Rust的安全编程语言
  6. 前端学习(1927)vue之电商管理系统电商系统之美化一层循环的UI结构for循环渲染第三层结构
  7. LeetCode 1569. 将子数组重新排序得到同一个二叉查找树的方案数(DP)
  8. 文本信息检索(维基百科)
  9. 手把手教你用keras搭建GAN
  10. 正交编码 正交编码器 增量式编码器
  11. Assuming drive cache: write through 因为硬盘内存不足VM虚拟机开不了机的问题
  12. 视频号将成为大众的生活方式
  13. 计算机c盘哪些可以清理,怎么清理C盘?不知道哪些可以删除?
  14. 使用萤石工作室采集视频流程以及萤石摄像头(C6、C8PF)、Sj6 Legend详解
  15. C语言005:常见例题
  16. oracle 指定账套建表,FAQ-EAS账套备份恢复方法(oracle)
  17. 看携程如何借助“预测式外呼”提高呼叫效率
  18. 吾爱第二课-去除网页弹窗
  19. php泡点,夜猫首页更新PHP程序 是一个应用于网站
  20. 论文阅读方法与技巧【教授经验】

热门文章

  1. C#实现调取钉钉考勤接口的功能
  2. Java多线程学习详细学习及扩展
  3. 5.20——工作记录
  4. 由微博图床挂掉之后想到的
  5. ContentProvider--共享文件(.jepg文件)
  6. V神的2019和2021
  7. 【非常重要】运行supervisorctl错误提示【FATAL或BACKOFF 】Exited too quickly (process log may have details)问题总结
  8. android系统 最新版本是多少,安卓系统最新版本是多少 Android M 最新功能
  9. 【前端面试题(3)】
  10. ubuntu 启动、退出 startx界面