[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NOGAPS: GRIB to netCDF decoder for GFE (fwd)




===============================================================================
Robb Kambic                                Unidata Program Center
Software Engineer III                      Univ. Corp for Atmospheric Research
address@hidden             WWW: http://www.unidata.ucar.edu/
===============================================================================

---------- Forwarded message ----------
Date: Wed, 14 May 2003 15:33:41 -0600 (MDT)
From: Robb Kambic <address@hidden>
To: "Jacques, Rodney" <address@hidden>
Cc: "''address@hidden'"
    <'address@hidden>
Subject: Re: NOGAPS: GRIB to netCDF decoder for GFE

On Wed, 14 May 2003, Jacques, Rodney wrote:

> Hello,
>
> We are trying to decode the NOGAPS and COAMPS grib files to netCDF for
> ingest into GFE. I was reading thru past Unidata archives and found that
> this work (NOGAPS) has been accomplished. Can we obtain the necessary
> documentation and decoder to help our organization?


Rodney,

Yes, the decoders package can decode the NOGAPS and COAMPS grib files to
NetCDF.  Of course one has to  install the decoders package, NetCDF and
udunits packages. The decoders page is located at:

http://www.unidata.ucar.edu/packages/decoders

The decoders package can be obtained via ftp www.unidata.ucar.edu at
pub/decoders.

Latest package is decoders-2.4.4.tar.Z


I did a test case on the nogaps data, it worked ok.  One needs to create a
NetCDF cdl file before running the decoder gribtonc.

% gribtocdl -v "nogaps Grib file"  > nogaps.cdl
to decode the data

% gribtonc -l - nogaps.cdl nogaps.nc <  "nogaps Grib file"

There are man pages for the programs in the release.

A couple hints: combine nogaps files into one to get all the variables you
want,  add the value

valtime_offset = 0, 3, 6, 9, 12, 15 ,18, 21, 24, 30, 36, 42, 48, 54, 60,
66, 72, 84, 96, 108, 120, 132, 144

to the cdl if it complains.

I'll include a sample cdl file as a attachment.

Robb...

>
> Thanks in advance,
>
>
> Rodney Jacques
>
> Meteorological Sciences Officer (MSO)
> NAVPACMETOCCEN San Diego, N5
> address@hidden
> Comm (619) 545-2211/ DSN 735-2211
> FAX (619) 545-0291
>
>

===============================================================================
Robb Kambic                                Unidata Program Center
Software Engineer III                      Univ. Corp for Atmospheric Research
address@hidden             WWW: http://www.unidata.ucar.edu/
===============================================================================
netcdf Replace_with_model_name{ 


dimensions:
        record = UNLIMITED ;   // (reference time, forecast time)
        lat = 181 ;            // latitude
        lon = 360 ;            // longitude
        level = 1 ;            // isobaric levels
        datetime_len = 21 ;    // string length for datetime strings
        valtime_offset = 23 ;  // number of offset times
        nmodels = 1 ;          // number of models
        ngrids = 1 ;           // number of grids
        nav = 1 ;              // for navigation
        nav_len = 100 ;        // max string length for navigation strings

variables:

        double reftime(record) ;        // reference time of the model
               reftime:long_name = "reference time" ;
               reftime:units = "hours since 1992-1-1" ;

        double valtime(record) ;        // forecast time ("valid" time)
               valtime:long_name = "valid time" ;
               valtime:units = "hours since 1992-1-1" ;

        :record = "reftime, valtime" ;  // "dimension attribute" -- means
                                        // (reftime, valtime) uniquely
                                        // determine record

        char   datetime(record, datetime_len) ; // derived from reftime
               datetime:long_name = "reference date and time" ;
               // units YYYY-MM-DD hh:mm:ssZ  (ISO 8601)

        double valtime_offset(valtime_offset) ; // valtime - reftime
               valtime_offset:long_name = "hours from reference time" ;
               valtime_offset:units = "hours" ;

        float  level(level) ;
               level:long_name = "isobaric level" ;
               level:units = "hectopascals" ;


        // The following lat and lon coordinate variables are redundant,
        // since the navigation variables provide the necessary information.
        // The extra information is included here for human readability.

        float  lat(lat) ;
               lat:long_name = "latitude" ;
               lat:units = "degrees_north" ;

        float  lon(lon) ;
               lon:long_name = "longitude" ;
               lon:units = "degrees_east" ;

        long   model_id(nmodels) ;
               model_id:long_name = "generating process ID number" ;

        // navigation variables all use nav dimension

        char   nav_model(nav, nav_len) ;        // navigation parameterization
               nav_model:long_name = "navigation model name" ;

        int    grid_type_code(nav) ;
               grid_type_code:long_name = "GRIB-1 GDS data representation type" 
;

        char   grid_type(nav, nav_len) ;
               grid_type:long_name = "GRIB-1 grid type" ;

        char   grid_name(nav, nav_len) ;
               grid_name:long_name = "grid name" ;

        int    grid_center(nav) ;
               grid_center:long_name = "GRIB-1 originating center ID" ;

        int    grid_number(nav, ngrids) ;
               grid_number:long_name = "GRIB-1 catalogued grid numbers" ;
               grid_number:_FillValue = -9999 ;

        char   i_dim(nav, nav_len) ;
               i_dim:long_name = "longitude dimension name" ;

        char   j_dim(nav, nav_len) ;
               j_dim:long_name = "latitude dimension name" ;

        int    Ni(nav) ;
               Ni:long_name = "number of points along a latitude circle" ;

        int    Nj(nav) ;
               Nj:long_name = "number of points along a longitude circle" ;

        float  La1(nav) ;
               La1:long_name = "latitude of first grid point" ;
               La1:units = "degrees_north" ;

        float  Lo1(nav) ;
               Lo1:long_name = "longitude of first grid point" ;
               Lo1:units = "degrees_east" ;

        float  La2(nav) ;
               La2:long_name = "latitude of last grid point" ;
               La2:units = "degrees_north" ;

        float  Lo2(nav) ;
               Lo2:long_name = "longitude of last grid point" ;
               Lo2:units = "degrees_east" ;

        float  Di(nav) ;
               Di:long_name = "longitudinal direction increment" ;
               Di:units = "degrees" ;

        float  Dj(nav) ;
               Dj:long_name = "latitudinal direction increment" ;
               Dj:units = "degrees" ;

        byte   ResCompFlag(nav) ;
               ResCompFlag:long_name = "resolution and component flags" ;

        // end of navigation variables

        float  omega(record,level,lat,lon) ;
               omega:long_name = "Pressure vertical velocity at isobaric 
levels" ;
               omega:GRIB_parameter_number = 39 ;
               omega:GRIB_level_flag = 100 ;
               omega:units = "Pa/s" ;
               omega:_FillValue = -9999.f ;
               omega:navigation = "nav" ;


// global attributes
               :history = "2003-05-14 15:05:14 - created by gribtocdl" ; 
               :title = "Enter model definition here" ;
               :Conventions = "NUWG" ;
               :GRIB_reference = "Office Note 388 GRIB" ;
               :GRIB_URL = "http://www.nco.ncep.noaa.gov/pmb/docs/on388/"; ;
               :version = 0.0 ;

data:

 level = 250.0 ;
 model_id = 58 ;
 valtime_offset = 0, 3, 6, 9, 12, 15 ,18, 21, 24, 30, 36, 42, 48, 54, 60, 66,
 72, 84, 96, 108, 120, 132, 144 ;


 // Navigation
 nav_model = "GRIB1" ;
 grid_type_code = 0 ;
 grid_type = "Latitude/Longitude" ;
 grid_name = " " ;
 grid_center = 58 ;
 grid_number = 240 ;
 i_dim = "lon" ;
 j_dim = "lat" ;
 Ni = 360 ;
 Nj = 181 ;
 La1 = -90.000000 ;
 Lo1 = 0.000000 ;
 La2 = 90.000000 ;
 Lo2 = 359.000000 ;
 Di = 1.000000 ;
 Dj = 1.000000 ;
 ResCompFlag = 128 ;

 lon =  0.00,  1.00,  2.00,  3.00,  4.00,  5.00,  6.00,  7.00,
        8.00,  9.00, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00,
       16.00, 17.00, 18.00, 19.00, 20.00, 21.00, 22.00, 23.00,
       24.00, 25.00, 26.00, 27.00, 28.00, 29.00, 30.00, 31.00,
       32.00, 33.00, 34.00, 35.00, 36.00, 37.00, 38.00, 39.00,
       40.00, 41.00, 42.00, 43.00, 44.00, 45.00, 46.00, 47.00,
       48.00, 49.00, 50.00, 51.00, 52.00, 53.00, 54.00, 55.00,
       56.00, 57.00, 58.00, 59.00, 60.00, 61.00, 62.00, 63.00,
       64.00, 65.00, 66.00, 67.00, 68.00, 69.00, 70.00, 71.00,
       72.00, 73.00, 74.00, 75.00, 76.00, 77.00, 78.00, 79.00,
       80.00, 81.00, 82.00, 83.00, 84.00, 85.00, 86.00, 87.00,
       88.00, 89.00, 90.00, 91.00, 92.00, 93.00, 94.00, 95.00,
       96.00, 97.00, 98.00, 99.00,100.00,101.00,102.00,103.00,
      104.00,105.00,106.00,107.00,108.00,109.00,110.00,111.00,
      112.00,113.00,114.00,115.00,116.00,117.00,118.00,119.00,
      120.00,121.00,122.00,123.00,124.00,125.00,126.00,127.00,
      128.00,129.00,130.00,131.00,132.00,133.00,134.00,135.00,
      136.00,137.00,138.00,139.00,140.00,141.00,142.00,143.00,
      144.00,145.00,146.00,147.00,148.00,149.00,150.00,151.00,
      152.00,153.00,154.00,155.00,156.00,157.00,158.00,159.00,
      160.00,161.00,162.00,163.00,164.00,165.00,166.00,167.00,
      168.00,169.00,170.00,171.00,172.00,173.00,174.00,175.00,
      176.00,177.00,178.00,179.00,180.00,181.00,182.00,183.00,
      184.00,185.00,186.00,187.00,188.00,189.00,190.00,191.00,
      192.00,193.00,194.00,195.00,196.00,197.00,198.00,199.00,
      200.00,201.00,202.00,203.00,204.00,205.00,206.00,207.00,
      208.00,209.00,210.00,211.00,212.00,213.00,214.00,215.00,
      216.00,217.00,218.00,219.00,220.00,221.00,222.00,223.00,
      224.00,225.00,226.00,227.00,228.00,229.00,230.00,231.00,
      232.00,233.00,234.00,235.00,236.00,237.00,238.00,239.00,
      240.00,241.00,242.00,243.00,244.00,245.00,246.00,247.00,
      248.00,249.00,250.00,251.00,252.00,253.00,254.00,255.00,
      256.00,257.00,258.00,259.00,260.00,261.00,262.00,263.00,
      264.00,265.00,266.00,267.00,268.00,269.00,270.00,271.00,
      272.00,273.00,274.00,275.00,276.00,277.00,278.00,279.00,
      280.00,281.00,282.00,283.00,284.00,285.00,286.00,287.00,
      288.00,289.00,290.00,291.00,292.00,293.00,294.00,295.00,
      296.00,297.00,298.00,299.00,300.00,301.00,302.00,303.00,
      304.00,305.00,306.00,307.00,308.00,309.00,310.00,311.00,
      312.00,313.00,314.00,315.00,316.00,317.00,318.00,319.00,
      320.00,321.00,322.00,323.00,324.00,325.00,326.00,327.00,
      328.00,329.00,330.00,331.00,332.00,333.00,334.00,335.00,
      336.00,337.00,338.00,339.00,340.00,341.00,342.00,343.00,
      344.00,345.00,346.00,347.00,348.00,349.00,350.00,351.00,
      352.00,353.00,354.00,355.00,356.00,357.00,358.00,359.00 ;

 lat =-90.00,-89.00,-88.00,-87.00,-86.00,-85.00,-84.00,-83.00,
      -82.00,-81.00,-80.00,-79.00,-78.00,-77.00,-76.00,-75.00,
      -74.00,-73.00,-72.00,-71.00,-70.00,-69.00,-68.00,-67.00,
      -66.00,-65.00,-64.00,-63.00,-62.00,-61.00,-60.00,-59.00,
      -58.00,-57.00,-56.00,-55.00,-54.00,-53.00,-52.00,-51.00,
      -50.00,-49.00,-48.00,-47.00,-46.00,-45.00,-44.00,-43.00,
      -42.00,-41.00,-40.00,-39.00,-38.00,-37.00,-36.00,-35.00,
      -34.00,-33.00,-32.00,-31.00,-30.00,-29.00,-28.00,-27.00,
      -26.00,-25.00,-24.00,-23.00,-22.00,-21.00,-20.00,-19.00,
      -18.00,-17.00,-16.00,-15.00,-14.00,-13.00,-12.00,-11.00,
      -10.00, -9.00, -8.00, -7.00, -6.00, -5.00, -4.00, -3.00,
       -2.00, -1.00,  0.00,  1.00,  2.00,  3.00,  4.00,  5.00,
        6.00,  7.00,  8.00,  9.00, 10.00, 11.00, 12.00, 13.00,
       14.00, 15.00, 16.00, 17.00, 18.00, 19.00, 20.00, 21.00,
       22.00, 23.00, 24.00, 25.00, 26.00, 27.00, 28.00, 29.00,
       30.00, 31.00, 32.00, 33.00, 34.00, 35.00, 36.00, 37.00,
       38.00, 39.00, 40.00, 41.00, 42.00, 43.00, 44.00, 45.00,
       46.00, 47.00, 48.00, 49.00, 50.00, 51.00, 52.00, 53.00,
       54.00, 55.00, 56.00, 57.00, 58.00, 59.00, 60.00, 61.00,
       62.00, 63.00, 64.00, 65.00, 66.00, 67.00, 68.00, 69.00,
       70.00, 71.00, 72.00, 73.00, 74.00, 75.00, 76.00, 77.00,
       78.00, 79.00, 80.00, 81.00, 82.00, 83.00, 84.00, 85.00,
       86.00, 87.00, 88.00, 89.00, 90.00 ;

}