You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

零基础Python实现HDF转TIFF:MOD17A2H GPP影像提取需求

MODIS MOD17A2H 提取GPP并转TIFF分步指南

1. 先搞定Python环境和依赖

  • 没装Python的话直接装Anaconda(选最新版就行),安装时记得勾选「Add to PATH」。
  • 打开Anaconda Prompt(或终端),输入命令安装必备库:
    conda install gdal numpy -c conda-forge
    
    (用conda装GDAL兼容性更好,不推荐pip直接装)

2. 确认HDF文件和GPP数据集路径

  • 找到你下载的MOD17A2H格式文件(比如MOD17A2H.A2023001.h27v06.061.2023012053108.hdf)。
  • 终端输入命令查看HDF内部的数据集结构:
    gdalinfo MOD17A2H.A2023001.h27v06.061.2023012053108.hdf
    
    在输出里找带Gpp_500m的条目,通常完整路径是:
    HDF4_EOS:EOS_GRID:"MOD17A2H.A2023001.h27v06.061.2023012053108.hdf":MOD_Grid_GPP:Gpp_500m,把这个路径记下来。

3. 编写转换脚本

新建一个文本文件,重命名为hdf2tiff.py,粘贴以下代码,替换其中的路径为你自己的文件信息:

# 导入依赖库
from osgeo import gdal
import numpy as np

# 替换成你的文件路径
hdf_file = "MOD17A2H.A2023001.h27v06.061.2023012053108.hdf"
# 替换成刚才找到的GPP数据集完整路径
gpp_dataset = 'HDF4_EOS:EOS_GRID:"MOD17A2H.A2023001.h27v06.061.2023012053108.hdf":MOD_Grid_GPP:Gpp_500m'
# 输出TIFF的文件名
output_tiff = "gpp_output.tiff"

# 打开GPP数据集
ds = gdal.Open(gpp_dataset)
if not ds:
    print("找不到GPP数据集!检查路径是否正确")
    exit()

# 读取影像数据和地理信息
gpp_data = ds.ReadAsArray()
geo_transform = ds.GetGeoTransform()
projection = ds.GetProjection()
rows, cols = gpp_data.shape

# 还原真实GPP值(MOD17A2H的原始值需乘以0.1,单位:g C/m²/8day)
gpp_data = gpp_data * 0.1

# 创建TIFF输出文件
driver = gdal.GetDriverByName("GTiff")
output_ds = driver.Create(output_tiff, cols, rows, 1, gdal.GDT_Float32)
if not output_ds:
    print("创建TIFF失败!检查路径权限")
    exit()

# 设置TIFF的地理信息和投影
output_ds.SetGeoTransform(geo_transform)
output_ds.SetProjection(projection)

# 写入数据并保存
output_ds.GetRasterBand(1).WriteArray(gpp_data)
output_ds.FlushCache()

# 关闭数据集释放资源
ds = None
output_ds = None

print(f"转换完成!TIFF文件已保存到: {output_tiff}")

4. 运行脚本

  • 终端切换到脚本所在文件夹,输入:
    python hdf2tiff.py
    
  • 无报错的话,就能看到生成的TIFF文件,用QGIS或ArcGIS打开即可查看GPP数据。

常见问题

  • 报错「找不到GDAL」:重新用conda安装GDAL,或检查环境变量是否配置正确。
  • 报错「数据集不存在」:核对gpp_dataset路径是否和gdalinfo输出完全一致,注意文件名大小写(Linux/Mac系统敏感)。
  • TIFF打开显示黑色:是因为原始数据是缩放后的值,脚本里已经加了gpp_data = gpp_data * 0.1还原真实值,若仍有问题可检查数据范围是否超出软件默认显示区间。

内容的提问来源于stack exchange,提问作者Fran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:50:09