【问题标题】:Using R to open grib files使用 R 打开 grib 文件
【发布时间】:2011-03-04 12:38:12
【问题描述】:

我正在使用 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 回答)

【问题讨论】:

    标签: 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 个变量。

        【讨论】:

          【解决方案4】:

          另一种解决方案是使用 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中读取...

          【讨论】:

          • 至少对于 wgrib,-csv 不是一个选项
          【解决方案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 文件。

          【讨论】:

            猜你喜欢
            • 2015-05-28
            • 2020-08-27
            • 1970-01-01
            • 2020-11-06
            • 2013-11-10
            • 2021-10-27
            • 1970-01-01
            • 2017-12-08
            • 2021-12-12
            相关资源
            最近更新 更多