Small R package to read data directly from grib1/grib2 files (and perform interpolation).
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
data
getgrib
trash
.gitignore
README.md
SAMOS.R
dev.R
make.sh
overview.pdf
test.R

README.md

SHORT

  • WHAT: A small R-package
  • FOR WHAT: R/grib file interaction (using grib_api fortran code)
  • WHO: Reto Stauffer
  • WHEN: End of Mai 2016
  • UPDATED: October 2017 to v1.2-7

Requirements

Requires an installation of the ECMWF GRIB_API library. This package has been tested on a Linux system with GRIB_API release version 1.19 and R version 3.3.1.

R Package to Directly Read From Grib Files

Once upon a time I was working with Sascha on a small problem on how to efficiently read grib data in R. There is the raster package which offers some functionality, however, the raster package is neither quick nor does it provide the (often) required meta information of the grib messages or is able to read data from rotated grids (like COSMO). This was the beginning of this getgrib package which offers some grib handling functionalities using the ECMWF GRIB API (see installation notes).

Over the time the R package getgrib got some updates and extensions, and some methods have been replaced and/or removed by better, faster, or more flexible methods (written in C/Fortran/R).

The package also contains a vignette called overview.pdf which shows an overview over the different functionalities which are currently implemented.

Installation Notes

A proper grib API installation is required to build the Fortran and C shared object files included in the package. Furthermore, some paths and flags have to be set properly. I was using the make.sh file which should be included in this repository, but---of course---contains some paths customized to my machine and OS. Please check the paths there and then do something similar as this (some bash shell code):

#!/bin/bash
## This line simply extracts the current package version
## out of the R package DESCRIPTION file
version=`cat getgrib/DESCRIPTION | grep 'Version:' | awk '{print $2}'`

## Setting required R flags for the compilers (IMPORTANT)
export PKG_FCFLAGS="-static-libgfortran -L/usr -I/usr/include -lgrib_api_f90 -lgrib_api"
export PKG_LIBS="-L/usr -I/usr/include -lgrib_api_f90 -lgrib_api"

## Build and install package
R CMD build --no-build-vignettes getgrib
R CMD INSTALL getgrib_${version}.tar.gz

Bilinear Interpolation

There is a function called bilinear which performs bilinear interpolation on grib files (deterministic and ensemble grib files) using some C-backend code based on the GRIB_API (wherefore the compiler flags are required). Code written somewhen in spring 2017 by Reto Stauffer.

Method in bilinearlist.c used by bilinear(...) modified, is now able to interpolate grib messages without perturbationNumber in the message header. A perturbationNumber = 0 will be returned if not found.

Reading Grib Data

Another nice set of functions is provided by getdata and gribdata2raster (please check the package manual pages or the vignette for more information). These functions allow to load full grids and convert them to RasterLayer objects if you wanna plot them.