Blob Blame History Raw

Decoding GRIB Data                                7/97 

                    (Conversion to IEEE by wgrib)

           
GRIB is a format used to store binary data.  While there are several other 
competing formats (IEEE, CDF, Net-CDF, etc), GRIB has been endorsed by 
the WMO and is the primary format at the operational centers (ECMWF, 
NCEP).  GRIB has the advantages of being both an international standard 
and more space efficient than its main competing formats. 


A simple-to-use grib decoder can be obtained from wesley.ncep.noaa.gov
	/pub/wgrib/wgrib.c   (source code)

(for NCEP users) The latest compiled versions can be found at

     /wd5/wd51/rl51we/bin/wgrib                   (Cray YMP)
     ~wd51we/bin.sun/wgrib                        (Sun workstation)
     ~wd51we/bin.sgi/wgrib                        (SGI workstation)
     ~wd51we/bin.hp/wgrib                         (HP workstation)
     ~wd51we/bin.linux/wgrib                      (x86 linux)
     /wd2/cpc/cdrom/PROGRAMS/WGRIB/WGRIB.EXE (PC version, on Cray YMP)

Documentation and directions for compiling wgrib can be found at
ftp://wesley.ncep.noaa.gov/pub/wgrib.


The first step in decoding GRIB data is a file inventory.  The simplest 
method is to type
     % wgrib -s grib_file               -s is for the simple output format

     Output format (-s option)
     field 1: record number
     field 2: position of record within the file
     field 3: time (yymmddhh)
     field 4: variable (see /wd2/ln/map/data/grib1.kpds5.vsn21 on the Cray YMP)
     field 5: level/layer
     following fields: description of record
          ex. mean, variance, forecast, analysis, etc

Now suppose we want to extract the 50 mb zonal winds for all dates.  The 
following commands extract the data on a UNIX computer as f77 IEEE data.  
Note that zonal winds have the name "UGRD" in the file inventory.

     % wgrib -s grib_file | grep ":UGRD:" | grep ':50 mb:' | wgrib -i -s -ieee -h grib_file

To understand the previous command, you need to consider all the steps.
     wgrib -s grib_file
          creates a simple file inventory
          in this example '-s' is optional
     grep ":UGRD:"
          selects only the records with ":UGRD:" in the record description
     grep ':50 mb:'
          selects only the records with ":50 mb:" in the record description
          note that ":50 mb:" was used rather than "50 mb" as the latter
          would also match the 850 mb level.
     wgrib -i -s -ieee -h grib_file
          -i ... read a file inventory
          -s ... short description of records written
          -ieee ... IEEE format numbers
          -h ... f77-style headers (default), -nh for no headers
          by default,  the output format is binary with headers.  On 
          workstations, this is usually the "f77 IEEE" format which is 
          often compatible with UNIX fortran programs.


To convert all the records to a binary format with f77 style headers:
     % wgrib -s grib_file | wgrib -s -i grib_file

To determine the dimension and type of grid used in record N, type,

     %wgrib -V -o /dev/null  -d N grib_file

            -V ... verbose output
            -o /dev/null ... write output (dump file) to bottomless pit
            -d N ... dump record N

NCEP's convention for fields produced by the MRF (operational forecasts, 
Reanalysis) is for the fields to be on a lat-long or Gaussian grid.  The 
fields start at the northern most latitude and at the Greenwich meridian 
and go eastward.  The data is stored in the fortran scanning order.  
This can be verified by using the -V option of wgrib which will tell you 
the dimension of the fields and how it is arranged.

A quick summary of the wgrib's options can be obtained by executing wgrib 
with no arguments.  The undefined value is 9.999e20 (version 1.6.0) and 
more documentation can be found at ftp://wesley.ncep.noaa.gov/pub/wgrib.
on the Cray-YMP at /wd2/cpc/cdrom/PROGRAMS/WGRIB/.