budayang_ 2023-04-25 15:19 采纳率: 10%
浏览 28
已结题

HDF转为tiff栅格数据

如何将来自于NASA官网中GES DISC的OMI-Aura_L2-OMDOAO3的he5格式,批量转为tif栅格数据

  • 写回答

1条回答 默认 最新

  • 肩匣与橘 游戏开发领域新星创作者 2023-04-25 15:50
    关注
    
    import os
    import numpy as np
    from osgeo import gdal
    # 设置输入和输出路径
    input_folder = 'path/to/he5/files'
    output_folder = 'path/to/tif/files'
    # 获取所有的he5文件
    he5_files = [f for f in os.listdir(input_folder) if f.endswith('.he5')]
    # 遍历所有的he5文件
    for he5_file in he5_files:
        # 构造输入和输出文件路径
        input_file = os.path.join(input_folder, he5_file)
        output_file = os.path.join(output_folder, he5_file.replace('.he5', '.tif'))
        # 使用GDAL打开he5文件
        hdf_ds = gdal.Open(input_file, gdal.GA_ReadOnly)
        # 读取需要的数据集
        data = hdf_ds.GetSubDatasets()[0][0]
        # 打开需要的数据集
        ds = gdal.Open(data, gdal.GA_ReadOnly)
        # 读取数据集的相关信息
        cols = ds.RasterXSize
        rows = ds.RasterYSize
        bands = ds.RasterCount
        # 创建输出数据集
        driver = gdal.GetDriverByName('GTiff')
        out_ds = driver.Create(output_file, cols, rows, bands, gdal.GDT_Float32)
        # 读取数据并写入输出数据集
        for i in range(1, bands + 1):
            band = ds.GetRasterBand(i)
            data = band.ReadAsArray().astype(np.float32)
            out_band = out_ds.GetRasterBand(i)
            out_band.WriteArray(data)
        # 设置输出数据集的投影和地理参考信息
        out_ds.SetProjection(ds.GetProjection())
        out_ds.SetGeoTransform(ds.GetGeoTransform())
        # 关闭数据集
        out_ds = None
        ds = None
        hdf_ds = None
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月13日
  • 已采纳回答 5月5日
  • 创建了问题 4月25日

悬赏问题

  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。