Page tree
Skip to end of metadata
Go to start of metadata

Common GUI tools for reading and visualising GRIB files are:

For users comfortable with command line tools:

  • ecCodes by ECMWF
    • Supports GRIB to NetCDF conversion (grib_to_netcdf -o netcdf_file grib_file)
    • Supports GRIB to JSON (grib_dump -j <gribfile>)
    • See tools and code examples for Fortran, Python and C
  • CDO info operators (info, infon, sinfo, sinfon)
  • NCO
  • GrADS
  • wgrib2, only for GRIB edition 2, wgrib2 can not decode GRIB edition 1 files
  • IDL
  • the GDAL library, with limited support for coordinate systems, georeferencing and metadata. In particular irregular (non-cartesian) coordinate systems might not be decoded correctly.

More tools are listed in this Wikipedia article.

Known issues

GRIBs from the CAMS Regional service require specific procedures, please see here.

How to extract data from GRIB to text

This example shows how to extract data from a GRIB file to generic text.

Preparation:

  1. Get a computer running Linux
  2. On your Linux computer install ECMWF's ecCodes software
  3. Get data in GRIB format, for example from the CAMS or C3S Service. For this use case we assume the file contains forecast data, and surface data (ie. a single layer, no atmospheric layers above the surface)

Example 1: List data from GRIB

grib_get_data -p dataDate,dataTime,validityDate,validityTime my_file.grib 

... giving this output:

Latitude, Longitude, Value, dataDate, dataTime, validityDate, validityTime
   69.950  -24.950 6.7796034626e-08 20160117 0 20160117 0
   69.950  -24.850 6.8240265944e-08 20160117 0 20160117 0
   69.950  -24.750 6.8275508864e-08 20160117 0 20160117 0
   69.950  -24.650 6.8133954540e-08 20160117 0 20160117 0
...

dataDate and dataTime indicate the date/time we forecast from. validityDate and validityTime indicate the date/time we forecast for.

Note that the keys dataDate, dataTime, validityDate, validityTime are available in CAMS/C3S forecast data. Analysis data has different keys.

For further options please see the documentation of the ecCodes command line GRIB tools

Example 2: List data for closest point(s)

For a given coordinate, for example (lat=46.87 / lon=8.73), list data of the closest model point:

grib_ls -l 46.87,8.73,1 -p dataDate,dataTime,validityDate,validityTime my_file.grib

... giving this output:

my_file.grib
dataDate      dataTime      validityDate  validityTime   value 
20160117      0             20160117      0             3.37724e-08   
20160117      0             20160117      100           3.24475e-08   
20160117      0             20160117      200           3.3837e-08     
...
20160117      0             20160117      2200          3.2791e-08    
20160117      0             20160117      2300          3.61387e-08   
20160117      0             20160118      0             3.96635e-08   
25 of 25 messages in my_grib_file.grib

25 of 25 total messages in 1 files
Input Point: latitude=46.87  longitude=8.73
Grid Point chosen #1 index=162037 latitude=46.85 longitude=8.75 distance=2.69 (Km)
Other grid Points
- 1 - index=162037 latitude=46.85 longitude=8.75 distance=2.69 (Km)
- 2 - index=162036 latitude=46.85 longitude=8.65 distance=6.47 (Km)
- 3 - index=161337 latitude=46.95 longitude=8.75 distance=9.02 (Km)
- 4 - index=161336 latitude=46.95 longitude=8.65 distance=10.77 (Km)

For further options please see the documentation of the ecCodes command line GRIB tools

Tips

-F option to format values as decimals instead of scientific:

grib_ls -F %f my_file.grib

Redirect the output to a text file:

grib_get_data my_file.grib > my_file.txt

List only the first or last 10 lines of an output (aka pipe):

grib_get_data my_file.grib | head -n10
grib_get_data my_file.grib | tail -n10