Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Using the GRIB tools

The GRIB tools are part of the ECMWF ecCodes Library. They are a set of command line programs for interactive and batch decoding and processing of GRIB data

...

There is a tool for converting from GRIB to netCDF

  • grib_to_netcdf

Getting help with the tools

Running any of the ecCodes tools without options or input files will produce a UNIX 'man page' style output describing the usage.  Try:

Code Block
languagebash
titlegetting help
grib_ls

Listing the contents of GRIB files

An inventory of the contents of GRIB files can be obtained with the grib_ls command.

  1. For a single file, try:

    Code Block
    grib_ls ICMGGepc8+000000


  2. Multiple files:

    Code Block
    grib_ls ICMGG*


  3. Counting the number of messages in a file

    Code Block
    grib_count ICMGGepc8+000000


Customising the output of grib_ls

  1. Specifying the information to display:

    Code Block
    grib_ls -p dataDate,dataTime,stepRange,shortName,typeOfLevel,level ICMGGepc8+000000


  2. Specifying the type of key (s: string, i: integer).  To output the centre as a string (default):

    Code Block
    grib_ls -p centre:s ICMGGepc8+000000

    or as an integer:

    Code Block
    grib_ls -p centre:i ICMGGepc8+000000


  3. Listing specific namespace information.  Try:

    Code Block
    grib_ls -n parameter ICMGGepc8+000000

    and

    Code Block
    grib_ls -n statistics ICMGGepc8+000000

    Other namespaces to try are time, vertical and geography.

  4. Order the output.  Try:

    Code Block
    grib_ls -B "level desc" ICMSHepc8+000000

    Compare and contrast with:

    Code Block
    grib_ls -B "level:i desc" ICMSHepc8+000000


  5. The where option:  IS

    Code Block
    grib_ls -w shortName=stl1 ICMGGepc8+000000

    IS NOT

    Code Block
    grib_ls -w shortName!=stl1 ICMGGepc8+000000

    OR

    Code Block
    grib_ls -w shortName=stl1/z ICMGGepc8+000000

    AND

    Code Block
    grib_ls -w shortName=q,level=10 ICMGGepc8+000000


  6. Specifying the step unit.  Compare the output from:

    Code Block
    grib_ls -n time ICMGGepc8+000000

    and

    Code Block
    grib_ls -s stepUnits=m -n time ICMGGepc8+000012

    The stepUnits can be set to s, m, h, 3h, 6h, 12h, D, M, Y, 10Y, 30Y or C.  The result must be expressible as an integer (try setting stepUnits=D above). This is a temporary change for display purposes only !

Note

grib_ls is a tool meant mainly for interactive use.  If you want to use the tools in a shell script then take a look at grib_get instead. It works in much the same way as grib_ls but is less verbose and also fails if an error occurs.

Obtaining detailed information about a GRIB message with grib_dump

  1. To print all of the keys available for a particular GRIB message:

    Code Block
    grib_dump -w shortName=stl1 ICMGGepc8+000012


  2. To obtain a listing which is more like the WMO tables:

    Code Block
    grib_dump -O -w shortName=stl1 ICMGGepc8+000012


  3. To obtain even more detail:

    Code Block
    grib_dump -OatH -w shortName=stl1 ICMGGepc8+000012


Printing the data values

For grid point data, the grib_get_data tool prints a list of latitude, longitude and data values from one or more GRIB files. 

...

Warning

If you need the values in a program then do not be tempted to use grib_get_data to output the information to a file and then read the file in your program.  It is more efficient to use the appropriate Fortran 90, C or Python interface to ecCodes to access the data values directly.

Using the 'smart' copy

The structure of GRIB allows files to be simply copied and concatenated with the UNIX 'cat' command.  However, it's sometimes desirable to do something more sophisticated.  The grib_copy tool provides a way to copy only selected content from GRIB files.

  1. To copy all of the pressure level data at 1000 hPa from a number of separate files and store the output in a single file, try:

    Code Block
    grib_copy -w level=1000 ICMSHepc8* lev1000.grib


    Note

    Remember that you can check the output file with grib_ls to see the result !


  2. To do the same with only temperature field and to store in descending forecast step order, try:

    Code Block
    grib_copy -w level=1000,shortName=t -B "stepRange:i desc" ICMSHepc8* lev1000_ordered.grib


  3. Now let's gather all of the temperature fields and store in order of decreasing level and decreasing step:

    Code Block
    grib_copy -w shortName=t -B "level:i desc, stepRange:i desc" ICMSHepc8* all_t_ordered.grib


    Note

    It is important when using the "order by" (-B) option to specify the key type with, e.g., "level:i" to avoid unexpected (unwanted ?) results.  Remember that the key values are strings by default.  Usually, we want a numeric order.


  4. Key names can be used to specify the output file names.  Try:

    Code Block
    grib_copy ICMGGepc8* "[shortName]_[level].grib[edition]"

    This provides a very convenient way to filter GRIB messages into separate files.

Setting key/value pairs

The grib_set tool allows key values to be set or modified.  It is also able to make simple global changes to the data values themselves.

...

Warning

grib_set is very powerful but it cannot be used to:

  • make transformations to the data representation
  • transform data from one grid representation to another
  • select sub-areas of data


Resources and further reading

  1. The WMO FM 92 GRIB Manuals can be obtained from www.wmo.int/pages/prog/www/WMOCodes.html
  2. The ECMWF GRIB API manual is available at https://software.ecmwf.int/wiki/display/GRIB/Home
  3. ECMWF parameter database: http://apps.ecmwf.int/codes/grib/param-db/
  4. GRIB 1 keyshttp://apps.ecmwf.int/codes/grib/format/grib1/
  5. GRIB 2 keyshttp://apps.ecmwf.int/codes/grib/format/grib2/
  6. Edition independent keys http://apps.ecmwf.int/codes/grib/format/edition-independent/
  7. MARS specific keys http://apps.ecmwf.int/codes/grib/format/mars/
  8. The GRIB API Tools are documented at GRIB tools
  9. Details of the GRIB API Fortran 90 interface:Fortran package grib_api
  10. Example Python scripts and Fortran 90 and C programs can be found at GRIB API examples
  11. ECMWF GRIB API training course material: GRIB API: Library and Tools

    Excerpt Include
    Credits
    Credits
    nopaneltrue



...