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

如何在Python中读取含卫星数据的H5文件并提取带位置的GHI数据至CSV

解决H5卫星数据提取X/Y/GHI到CSV的问题

核心思路

H5文件中Geo2D格式的GHI数据,对应的位置信息(X/Y,通常为经纬度)一般以独立数据集存储。只需将位置数据与GHI数据做维度匹配后展平,再合并成结构化表格即可导出CSV。

步骤与代码实现

  1. 确认H5文件结构:通过Panoply查看GHI、X、Y对应的数据集路径(比如GHI可能在/PRODUCT/GHI,经度X在/PRODUCT/lon,纬度Y在/PRODUCT/lat)。
  2. 读取并处理数据:用h5py读取数据集,若X/Y是一维数组,用meshgrid生成和GHI同维度的二维网格,再将所有数组展平后关联。
import h5py
import numpy as np
import pandas as pd

# 替换为你的H5文件路径
h5_file_path = "satellite_data.h5"

with h5py.File(h5_file_path, 'r') as hf:
    # 替换为Panoply中查到的实际数据集路径
    ghi = hf['/PRODUCT/GHI'][()]
    lon = hf['/PRODUCT/lon'][()]  # X对应经度
    lat = hf['/PRODUCT/lat'][()]  # Y对应纬度

# 处理一维位置数据:生成二维网格匹配GHI维度
if lon.ndim == 1 and lat.ndim == 1:
    lon_grid, lat_grid = np.meshgrid(lon, lat)
else:
    lon_grid = lon
    lat_grid = lat

# 展平所有数组,确保数据一一对应
x_flat = lon_grid.flatten()
y_flat = lat_grid.flatten()
ghi_flat = ghi.flatten()

# 生成CSV
df = pd.DataFrame({
    'X': x_flat,
    'Y': y_flat,
    'GHI': ghi_flat
})
# 可选:过滤无效值(比如填充的-9999)
# df = df[df['GHI'] != -9999]
df.to_csv('ghi_data.csv', index=False)

关键注意事项

  • 必须替换代码中的数据集路径:严格按照Panoply中显示的层级填写,比如如果Panoply里GHI在/Geophysical_Data/GHI,就把/PRODUCT/GHI改成对应路径。
  • 若X/Y本身就是二维数组(和GHI维度一致),跳过meshgrid步骤直接展平即可。
  • 部分卫星数据会用特殊值标记无效数据,导出前可根据实际情况过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:15:37