5

我正在使用 R 处理气象数据。我分两步进行:

  1. 使用 ncar 命令语言中的命令行函数 ncl_convert2nc 将 grib 转换为 netcdf
  2. 在 R 中使用包 ncdf 导入 netcdf 数据。

我还有一个问题:

2- 对于某些特定的 grib 文件,使用 ncar 工具进行的转换不起作用。是否有其他方法或技巧(除了转录为 netcdf)来读取 R 中的 grib 文件

Dirk 回答的问题: 1- 我想在 R 中自动处理许多文件。我可以在 R 中调用 ncl_convert2nc 吗?(由下面的 Dirk Eddelbuettel 回答)

4

5 回答 5

3

关于问题 1,答案是“是”——如果您想获取结果,请参阅help(system)和选项。internal=TRUE

于 2010-06-16T15:02:01.990 回答
2

rgdal 也可以做到,但比 ncdf 或 RNetCDF 不太灵活,需要更多的关注和细节 - 并且取决于您构建的 GDAL/rgdal,包括 GRIB 驱动程序。

于 2010-06-16T23:52:07.017 回答
2

ncl_convert2nc 似乎是最好的解决方案。但是,如果数据结构稍微复杂一点,我会使用 GrADS 将 GRIB 文件转换为 ASCII(例如 .csv),然后可以使用 R 专用的 ncdf4 包创建 NetCDF 文件。GrADS 还提供对 re-将 GRIB 写入 NetCDF,但仅限于 1 个变量。

于 2012-09-03T09:43:35.153 回答
2

作为从 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 的转换失败。

该命令称为 grib_to_netcdf

grib_to_netcdf -o output.nc input_grib.grb

到目前为止,grib_to_netcdf 已经能够毫无问题地处理我扔给它的每个 grib 文件。

于 2017-09-20T13:29:35.393 回答
1

另一种解决方案是使用 wgrib/wgrib2 软件 ( http://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/ ) 并将您的 GRIB-1/GRIB-2 文件直接转储为 CSV 格式,例如:

/path/to/your/wgrib2 input_file.grb -csv output_file.csv

然后可以直接在R中读取...

于 2017-01-02T20:08:04.867 回答