使用R打开grib文件

使用R打开grib文件,r,data-structures,netcdf,grib,R,Data Structures,Netcdf,Grib,我使用R来处理气象数据。我分两步进行: 使用ncar命令语言中的命令行函数ncl_convert2nc将grib转换为netcdf 使用R中的包ncdf导入netcdf数据 我还有一个问题: 2-对于某些特定grib文件,使用ncar工具的转换不起作用。是否有其他方法或技巧(转录到netcdf之外)读取R中的grib文件 Dirk回答的问题:1-我想在R中自动处理许多文件。我可以在R中调用ncl_convert2nc吗?(下面由Dirk Eddelbuettel回答)关于问题1,答案是“是”——

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

  • 使用ncar命令语言中的命令行函数ncl_convert2nc将grib转换为netcdf
  • 使用R中的包ncdf导入netcdf数据 我还有一个问题:

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


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

    关于问题1,答案是“是”——如果您想捕获结果,请参阅
    帮助(系统)
    内部=真
    选项。

    rgdal也可以这样做,但它的灵活性不如ncdf或RNetCDF,需要更多的关注和细节,这取决于您的GDAL/rgdal构建,包括GRIB驱动程序

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

    另一种解决方案是使用wgrib/wgrib2软件()并将GRIB-1/GRIB-2文件直接转储为CSV格式,例如:

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

    然后它可以直接在R中读取。

    作为从R调用ncl_convert2nc的替代方案,我可以建议两种替代方案:

    1。CDO转换

    另一个快速简便的命令行解决方案是使用cdo转换为netcdf以读取:

    cdo -f nc copy file.grb file.nc
    
    如果要输出netcdf4文件,请指定“-f nc4”

    这种方法的一个潜在问题是,如果您的grib文件有多个时间轴(例如,对于多个季节性预测),则可能会导致转换问题

    2。ECCODE转换

    相反,ECCODE提供了一个非常健壮的grib转换器,可以处理多个时间轴的所有情况,这些情况通常会导致基于CDO和NCL的转换失败


    到目前为止,grib_to_netcdf能够毫无问题地处理我抛出的每个grib文件。

    至少对于wgrib,
    -csv
    不是一个选项
    grib_to_netcdf -o output.nc input_grib.grb