使用R语言打开grib文件

5
我正在使用R处理气象数据,分为两个步骤:
  1. 使用ncar命令语言中的命令行函数ncl_convert2nc将grib转换为netcdf格式。
  2. 使用R中的ncdf包导入netcdf数据。
我还有一个问题: 对于某些特定的grib文件,使用ncar工具进行转换失败。是否有其他方法或技巧(除了转录成netcdf)在R中读取grib文件?
Dirk回答了这个问题:
1- 我想在R中自动处理许多文件。我可以在R中调用ncl_convert2nc吗?(由Dirk Eddelbuettel回答)
5个回答

3

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


2

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


2

rgdal也可以完成这项任务,但比ncdf或RNetCDF不够灵活,需要更多的细心和注意,同时还要依赖于您构建GDAL/rgdal时是否包含GRIB驱动程序。


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 文件。


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中读取...

至少对于wgrib来说,“-csv”不是一个选项。 - Fishish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接