HDF转为tiff栅格数据

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


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