How to read GRIB files!
Back to ECMWF overview
Updated by nik: 13 March 2013
GRIdded Binary is a compressed format for meterological data used since 1985.
Requires software for encoding and decoding.
Currently used for ECMWF operational surface and pressure level data.
GRIB1 data is stored in 5 sections where section 4 includes the compressed data and the other sections are data specifications.
One GRIB1 file may include many messages (blocks of sections).
was introduced for ECMWF operational model level data on 18 May 2011.
Migration from GRIB1 to GRIB2 was necessary because GRIB1 data could only hold 126 model levels.
Number of model levels in the high resolution forecast will be increased from 91 to 137 in June 2013.
Pressure levels will still have GRIB1 but eventually this will also be changed.
"Old" model data will still have GRIB1 format in the archive.
GRIB2 also allows more flexibility and is more complex than GRIB1.
For example higher precision of variables.
GRIB1: Lon/lat is in milli-degree GRIB2: Lon/lat is in micro-degree
GRIB2 data are stored in 8 sections where section 7 includes the compressed data and the other sections are data specifications. Thus, the structure of GRIB1 and GRIB2 messages is different, the order of the sections are different and there are additional sections for GRIB2.
To decode GRIB data there are software available from ECMWF.
This software is the GRIB_API (Application Programming Interface) library.
This software hides the binary layer of the message and uses a key/value approach to access the information in a GRIB message.
GRIB1 and GRIB2 uses the same function call.
Many keys to identify a parameter are edition independent, use these where possible!
GRIB_API can be used either through
Command line tools Fortran90/C/Python interfaces
COMMAND-LINE GRIB TOOLS
General syntax for use of the grib tools
grib_<tool> [options] grib_file1 grib_file2... [output file]
Manuals for each tool are available by running the tool without any options or input file.
Tools to inspect the content of and compare GRIB messages
grib_ls summary of the content of a GRIB file. (Do not use in scripts - only interactive mode!) A default list of keys in printed without using options: edition, centre, typeOfLevel, level, dataDate, stepRange, dataType, shortName, packingType, gridType Useful options -p keys to print (other than the default list) -P additional keys to print (additional to the default list) -m print MARS keys. Very useful to see the keys as they would be specified in a MARS request! E.g. domain, levtype, levelist, date, time, step, param, class, type, stream, expver -w "where", prints only the content for specified key=value -l Find the lat/long value in the model close to a given lat/long Example: grib_ls -w shortName=t,level=1 /flex_wrk/WIND_FIELDS/ECMWF/GLOBAL/OPER_fields/2013/03/EN13030100 prints the information about the temperature field at level 1: edition centre date dataType gridType stepRange typeOfLevel level shortName packingType 2 ecmf 20130301 an regular_ll 0 hybrid 1 t grid_jpeg grib_ls -w shortName=t,level=1 /flex_wrk/WIND_FIELDS/ECMWF/GLOBAL/OPER_fields/2013/03/EN13030103 prints the information about the temperature field at level 1: edition centre date dataType gridType stepRange typeOfLevel level shortName packingType 2 ecmf 20130301 fc regular_ll 3 hybrid 1 t grid_jpeg You can see that this is GRIB edition 2, and midnight is analysis data while 03 is forecast data.
grib_dump provides a more detailed view and listing of the file. Useful options -O to show the content in WMO style (easier to read) -w "where", prints only the content for specified key=value
Tools for counting and copying some messages
Tools for making changes to the content of a GRIB message