Versions Compared

Key

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

...

  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 keys 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.

  1. Suppose we want to use the soil temperature on level 1 to provide a sea-surface temperature.  We can change the header information for this parameter and set it to sea-surface temperature

    Code Block
    grib_set -S -s shortName=sst -w shortName=stl1 ICMGGepc8+* sst.grib
    Note

    By default, all parameters are copied to the output file.  The 'strict' option (-S) writes only those messages that are changed to the output file.  To see the difference, try running grib_set again but without the -S option !

  2. This is still not encoded like a true sea-surface temperature.  To do this, we need also to change the typeOfLevel:

    Code Block
    grib_set -S -s shortName=sst,typeOfLevel=surface -w shortName=stl1 ICMGGepc8+* sst.grib
  3. An offset can be added to all data values:

    Code Block
    grib_set -S -s offsetValuesBy=-273.15 -w shortName=stl1 ICMGGepc8+* stl1_in_degC.grib
    Note

    Remember: use "grib_ls -n statistics" to make a quick check of the values in output file.

  4. The values can be multiplied by a constant factor:

    Code Block
    grib_set -S -s scaleValuesBy=0.102 -w shortName=z ICMGGepc8+* gh.grib
  5. Some values are read only and cannot be changed.  Try:

    Code Block
    grib_set -S -s scaleValuesBy=0.000001,units="kg cm**-2" -w shortName=tcw ICMGGepc8+000000 tcm_kgcm-2.grib

    The units key cannot be set as it is read only.  the only way to change the units key is by changing the parameter (either the shortName or paramId), assuming there is a suitable parameter defined to express Total column water in units of kg/cm2.

  6. Key names can be used to specify the output file names.  This works in the same way as for grib_copy. Try:

    Code Block
    grib_set -S -s scaleValuesBy=0.102,shortName=gh -w shortName=z ICMGGepc8+* "[shortName]_[dataDate]_[dataTime]_[stepRange].grib"
Warning

 

 

Resources and further reading

...