【问题标题】:Using R to open grib files使用 R 打开 grib 文件
【发布时间】:2011-03-04 12:38:12
【问题描述】:
我正在使用 R 处理气象数据。我分两步进行:
- 使用 ncar 命令语言中的命令行函数 ncl_convert2nc 将 grib 转换为 netcdf
- 在 R 中使用包 ncdf 来导入 netcdf 数据。
我还有一个问题:
2- 对于某些特定的 grib 文件,使用 ncar 工具进行的转换不起作用。是否有其他方法或技巧(除了转录为 netcdf)来 读取 R 中的 grib 文件?
Dirk 回答的问题:1- 我想在 R 中自动处理许多文件。我可以在 R 中调用 ncl_convert2nc 吗? (下面由 Dirk Eddelbuettel 回答)
【问题讨论】:
标签:
r
data-structures
netcdf
grib
【解决方案1】:
关于问题 1,答案是“是”——如果您想获取结果,请参阅 help(system) 和 internal=TRUE 选项。
【解决方案2】:
rgdal 也可以做到,但灵活性较差,需要比 ncdf 或 RNetCDF 更多的关注和细节 - 并且取决于您构建的 GDAL/rgdal,包括 GRIB 驱动程序。
【解决方案3】:
ncl_convert2nc 似乎是最好的解决方案。但是,如果数据结构稍微复杂一点,我会使用 GrADS 将 GRIB 文件转换为 ASCII(例如 .csv),然后可以使用 R 专用的 ncdf4 包创建 NetCDF 文件。GrADS 还提供对 re-将 GRIB 写入 NetCDF,但仅限于 1 个变量。
【解决方案5】:
作为从 R 调用 ncl_convert2nc 的替代方法,我可以建议两种替代方法:
1. CDO 转换
另一种快速简便的命令行解决方案是使用 cdo 转换为 netcdf 来读取:
cdo -f nc copy file.grb file.nc
如果要输出 netcdf4 文件,请指定“-f nc4”。
这种方法的一个潜在问题是,如果您的 grib 文件有多个时间轴(例如,对于多个季节预测),这可能会导致转换出现问题。
2。 ECCODES 转换
相反,eccodes 提供了一个非常健壮的 grib 转换器,可以处理多时间轴的所有情况,这通常会导致基于 CDO 和 NCL 的转换失败。
The command is called grib_to_netcdf
grib_to_netcdf -o output.nc input_grib.grb
到目前为止,grib_to_netcdf 已经能够毫无问题地处理我扔给它的每个 grib 文件。