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

如何从HDF5降水文件提取变量为TIFF栅格或获取指定坐标像素值

嘿,我来帮你搞定这两个关于GPM HDF5数据处理的需求!看你已经用R的rhdf5等工具加载了文件并查看了Groups和Datasets,接下来分两部分给你具体的实现代码和注意事项:

一、将HDF5中的变量提取为TIFF栅格

首先你需要明确要提取的具体数据集路径(可以从list.datasets(a)的输出里复制),下面以GPM常见的/Grid/precipitationCal变量为例演示:

  1. 读取目标数据集
# 替换成你实际要提取的数据集路径
target_dataset <- "/Grid/precipitationCal"
# 从HDF5文件中读取数据
var_data <- h5read(a, target_dataset)
  1. 获取地理空间属性(确保栅格有正确的坐标信息)
    GPM的HDF5文件通常在/Grid组的属性里存储了经纬度范围和分辨率,我们可以提取这些信息:
# 读取Grid组的属性
grid_attrs <- h5readAttributes(a, "/Grid")

# 提取经度、纬度的范围和分辨率
lon_min <- grid_attrs$lonMin
lon_max <- grid_attrs$lonMax
lon_res <- grid_attrs$lonRes

lat_min <- grid_attrs$latMin
lat_max <- grid_attrs$latMax
lat_res <- grid_attrs$latRes
  1. 创建并校正Raster对象
    注意GPM的纬度数据是从北到南排列的,所以需要翻转纬度方向:
# 创建初始栅格对象(注意转置数据,因为HDF5中数据维度是lat×lon)
var_raster <- raster(t(var_data),
                     xmn = lon_min, xmx = lon_max,
                     ymn = lat_min, ymx = lat_max,
                     crs = CRS("+proj=longlat +datum=WGS84"))

# 翻转纬度,让栅格的纬度从南到北正确排列
var_raster <- flip(var_raster, direction = "y")
  1. 保存为TIFF文件
# 替换成你想要的输出文件名
writeRaster(var_raster, "extracted_precipitation.tif", format = "GTiff", overwrite = TRUE)
二、通过CSV坐标获取变量的像素值

假设你的CSV文件(比如coords.csv)包含longitude和latitude两列的坐标数据,步骤如下:

  1. 读取CSV坐标文件
coords_df <- read.csv("coords.csv")
  1. 创建空间点对象(确保坐标系和GPM数据一致,即WGS84经纬度)
# 基于坐标列创建空间点数据框
coords_sp <- SpatialPointsDataFrame(
  coords = coords_df[, c("longitude", "latitude")],
  data = coords_df,
  proj4string = CRS("+proj=longlat +datum=WGS84")
)
  1. 提取栅格像素值并保存结果
# 提取刚才创建的栅格中对应坐标的像素值
coords_df$target_value <- extract(var_raster, coords_sp)

# 将带像素值的结果保存为新的CSV
write.csv(coords_df, "coords_with_values.csv", row.names = FALSE)

一些注意事项

  • 一定要替换代码中的数据集路径和文件名为你实际的内容
  • 如果你的目标变量维度不是lat×lon,需要调整raster()函数中的数据转置逻辑
  • 如果CSV中的坐标不是WGS84经纬度,需要先使用spTransform()函数进行投影转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:42:30