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

Re: 20020423: NOGAPS GRIB data CDL



Rorik,

I attached a nogaps.cdl file that should decode the dataset properly. Let
me know if you have any problems.

Robb...

On Tue, 23 Apr 2002, Rorik Peterson wrote:

> Robb,
>       As possible addition motivation, I am also interested in a cdl for
> NOGAPS.  I currently use an ugly perl script I wrote to generate cdf files
> of my NOGAPS data, and would prefer to pipe it to gribtonc (like I do with
> the AVN/MRF data).
> 
> Thanks.
> rorik
> 
> -----------------------------
> Rorik Peterson
> Research Engineer
> Remote Sensing Group
> Geophysical Institute
> University Alaska, Fairbanks
> Fairbanks, AK 99775
> PH:  907-474-1519
> FAX: 907-474-7290
> -----------------------------
> 
> On Tue, 23 Apr 2002, Robb Kambic wrote:
> 
> > On Tue, 23 Apr 2002, Unidata Support wrote:
> >
> > >
> > > ------- Forwarded Message
> > >
> > > >To: Unidata Support <address@hidden>
> > > >cc: address@hidden,
> > > >cc: address@hidden
> > > >From: Unidata LDM <address@hidden>
> > > >Subject: NOGAPS GRIB data decoder
> > > >Organization: UCAR/Unidata
> > > >Keywords: 200204231342.g3NDgna16641
> > >
> > > Hi, there,
> > >
> > > We're trying to convert MSL pressure data from NOGAPS of FNMOC to NCDF
> > > file. I wonder if anybody knows a decoder working for it. Seems like the
> > > decoder on Unidata's webpage doesn't work for it. Thanks a lot!
> >
> > Hi,
> >
> > You are correct that there is no cdl for the MSL pressure data from
> > NOGAPS. Nobody has requested it before so it hasn't been considered. I
> > will obtain some NOGAPS data and take a look at it. I'll let you know the
> > results probably in a day.
> >
> >
> > >
> > > By the way, anybody knows "gribtocdl"? I found it on NoSerC's webpage, but
> > > no link to this code. If it could generate CDL file then I guess I could
> > > use gribtonc to generate the NCDF file.
> > >
> > I haven't heard of gribtocdl program, sounds like a good idea.
> >
> >
> > Robb...
> >
> >
> > >
> > >
> > > Wendy Shi
> > > Senior Computer Programer-Analyst
> > > Center for Ocean-Atmospheric Prediction Studies (COAPS)
> > > Florida State University, Tallahassee, FL 32306
> > >
> > >
> > > ------- End of Forwarded Message
> > >
> > >
> >
> > ===============================================================================
> > Robb Kambic                            Unidata Program Center
> > Software Engineer III                          Univ. Corp for Atmospheric 
> > Research
> > address@hidden                 WWW: http://www.unidata.ucar.edu/
> > ===============================================================================
> >
> >
> >
> 
> 

===============================================================================
Robb Kambic                                Unidata Program Center
Software Engineer III                      Univ. Corp for Atmospheric Research
address@hidden             WWW: http://www.unidata.ucar.edu/
===============================================================================
netcdf nogaps {         // US Navy  - Fleet Numerical Oceanography Center

dimensions:

        record = UNLIMITED ;    // (reference time, forecast time)
        level = 27 ;
        lat = 181 ;             // latitude
        lon = 360 ;             // longitude
        fhg = 3 ;               // fixed height above ground levels
        datetime_len = 21 ;     // string length for datetime strings
        nmodels = 2 ;           // 
        nav = 1 ;               // For navigation.  Variables that use
                                // this dimension define a mapping between
                                // (lat, lon) indices and (lat, lon) coords.
        nav_len = 100 ;         // max string length for navigation strings
        ngrids = 1 ;            // number of subgrids stitched together

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)

        float   valtime_offset(record) ; // derived as valtime-reftime
                valtime_offset:long_name = "hours from reference time" ;
                valtime_offset:units = "hours" ;

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

        float   fhg(fhg) ;               // fixed height above ground
                fhg:long_name = "fixed height above ground" ;
                fhg:units = "meters" ;

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

        // 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" ;

        // 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) ;
                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   E(record, lat, lon) ;
                E:long_name = "vapor pressure" ;
                E:units = "Pa" ;
                E:_FillValue = -9999.f ;
                E:navigation = "nav" ;

        float   P_maxwind(record, lat, lon) ;
                P_maxwind:long_name = "pressure at maximum wind" ;
                P_maxwind:units = "Pa" ;
                P_maxwind:_FillValue = -9999.f ;
                P_maxwind:navigation = "nav" ;

        float   P_trop(record, lat, lon) ;
                P_trop:long_name = "pressure at tropopause" ;
                P_trop:units = "Pa" ;
                P_trop:_FillValue = -9999.f ;
                P_trop:navigation = "nav" ;

        float   P_msl(record, lat, lon) ;
                P_msl:long_name = "pressure reduced to MSL" ;
                P_msl:units = "Pa" ;
                P_msl:_FillValue = -9999.f ;
                P_msl:navigation = "nav" ;

        float   P_sfc(record, lat, lon) ;
                P_sfc:long_name = "pressure at surface" ;
                P_sfc:units = "Pa" ;
                P_sfc:_FillValue = -9999.f ;
                P_sfc:navigation = "nav" ;

        float   T(record, level, lat, lon) ;
                T:long_name = "temperature" ;
                T:units = "degK" ;
                T:_FillValue = -9999.f ;
                T:navigation = "nav" ;

        float   T_TD(record, level, lat, lon) ;
                T_TD:long_name = "Dew point depression" ;
                T_TD:units = "degK" ;
                T_TD:_FillValue = -9999.f ;
                T_TD:navigation = "nav" ;

        float   T_TD_sfc(record, lat, lon) ;
                T_TD_sfc:long_name = "Dew point depression" ;
                T_TD_sfc:units = "degK" ;
                T_TD_sfc:_FillValue = -9999.f ;
                T_TD_sfc:navigation = "nav" ;

        float   T_maxwind(record, lat, lon) ;
                T_maxwind:long_name = "temperature at maxwind" ;
                T_maxwind:units = "degK" ;
                T_maxwind:_FillValue = -9999.f ;
                T_maxwind:navigation = "nav" ;

        float   T_trop(record, lat, lon) ;
                T_trop:long_name = "temperature at tropopause" ;
                T_trop:units = "degK" ;
                T_trop:_FillValue = -9999.f ;
                T_trop:navigation = "nav" ;

        float   Z(record, level, lat, lon) ;
                Z:long_name = "geopotential height" ;
                Z:units = "gp m" ;
                Z:_FillValue = -9999.f ;
                Z:navigation = "nav" ;  // georeference info

        float   Z_maxwind(record, lat, lon) ;
                Z_maxwind:long_name = "geopotential height at maxwind" ;
                Z_maxwind:units = "gp m" ;
                Z_maxwind:_FillValue = -9999.f ;
                Z_maxwind:navigation = "nav" ;

        float   u(record, level, lat, lon) ;
                u:long_name = "u-component of wind" ;
                u:units = "meters/second" ;
                u:_FillValue = -9999.f ;
                u:navigation = "nav" ;

        float   u_maxwind(record, lat, lon) ;
                u_maxwind:long_name = "u-component of wind at max wind" ;
                u_maxwind:units = "meters/second" ;
                u_maxwind:_FillValue = -9999.f ;
                u_maxwind:navigation = "nav" ;

        float   v(record, level, lat, lon ) ;
                v:long_name = "v-component of wind" ;
                v:units = "meters/second" ;
                v:_FillValue = -9999.f ;
                v:navigation = "nav" ;

        float   v_maxwind(record, lat, lon) ;
                v_maxwind:long_name = "v-component of wind at max wind" ;
                v_maxwind:units = "meters/second" ;
                v_maxwind:_FillValue = -9999.f ;
                v_maxwind:navigation = "nav" ;

        float   SPD_fhg(record, fhg, lat, lon) ;
                SPD_fhg:long_name = "wind speed at fixed height above ground" ;
                SPD_fhg:units = "meters/second" ;
                SPD_fhg:_FillValue = -9999.f ;
                SPD_fhg:navigation = "nav" ;

        float   u_fhg(record, fhg, lat, lon) ;
                u_fhg:long_name = "u-component of wind at fixed height above 
ground" ;
                u_fhg:units = "meters/second" ;
                u_fhg:_FillValue = -9999.f ;
                u_fhg:navigation = "nav" ;

        float   v_fhg(record, fhg, lat, lon) ;
                v_fhg:long_name = "v-component of wind at fixed height above 
ground" ;
                v_fhg:units = "meters/second" ;
                v_fhg:_FillValue = -9999.f ;
                v_fhg:navigation = "nav" ;

        float   PRECIP(record, lat, lon) ;
                PRECIP:long_name = "total precipitation over accumulation 
interval" ;
                PRECIP:units = "kg/m2" ;
                PRECIP:_FillValue = -9999.f ;
                PRECIP:navigation = "nav" ;

        float   precip_cn(record, lat, lon) ;
                precip_cn:long_name = "convective precipitation " ;
                precip_cn:units = "kg/m2" ;
                precip_cn:_FillValue = -9999.f ;
                precip_cn:navigation = "nav" ;

        float   preix(record, lat, lon ) ;
                preix:long_name = "precipitation index" ;
                //preix:units = "" ;
                preix:_FillValue = -9999.f ;
                preix:navigation = "nav" ;

        float   snow(record, lat, lon ) ;
                snow:long_name = "snow dept" ;
                snow:_FillValue = -9999.f ;
                snow:navigation = "nav" ;

        float   ice_conc(record, lat, lon ) ;
                ice_conc:long_name = "Ice concentration" ;
                ice_conc:_FillValue = -9999.f ;
                ice_conc:navigation = "nav" ;

        float   sen_ht_sfc(record, lat, lon ) ;
                sen_ht_sfc:long_name = "Sensible heat net flux" ;
                sen_ht_sfc:units = "W / m2" ;
                sen_ht_sfc:_FillValue = -9999.f ;
                sen_ht_sfc:navigation = "nav" ;

        float   rdn_swsrf_sfc(record, lat, lon ) ;
                rdn_swsrf_sfc:long_name = "net short wave rad. surface" ;
                rdn_swsrf_sfc:units = "W/m2" ;
                rdn_swsrf_sfc:_FillValue = -9999.f ;
                rdn_swsrf_sfc:navigation = "nav" ;

        //      Latent heat net flux

        float   lat_ht_sfc(record, lat, lon ) ;
                lat_ht_sfc:long_name = "Latent heat net flux" ;
                lat_ht_sfc:units = "W / m2" ;
                lat_ht_sfc:_FillValue = -9999.f ;
                lat_ht_sfc:navigation = "nav" ;

        float   u_flx_sfc(record, lat, lon ) ;
                u_flx_sfc:long_name = "Momentum flux, u componet" ;
                u_flx_sfc:units = "N/m2" ;
                u_flx_sfc:_FillValue = -9999.f ;
                u_flx_sfc:navigation = "nav" ;

        float   v_flx_sfc(record, lat, lon ) ;
                v_flx_sfc:long_name = "Momentum flux, v componet" ;
                v_flx_sfc:units = "N/m2" ;
                v_flx_sfc:_FillValue = -9999.f ;
                v_flx_sfc:navigation = "nav" ;

        //      Planetary boundary layer height

        float   hpbl_sfc(record) ;
                hpbl_sfc:long_name = "Planetary boundary layer height" ;
                hpbl_sfc:units = "m" ;
                hpbl_sfc:_FillValue = -9999.f ;
                hpbl_sfc:navigation = "nav" ;

        float   Nc(record, level, lat, lon) ;
                Nc:long_name = "convective cloud cover" ;
                Nc:units = "percent" ;
                Nc:_FillValue = -9999.f ;
                Nc:navigation = "nav" ;

        float   Nh_sfc(record, lat, lon) ;
                Nh_sfc:long_name = "high cloud layer" ;
                Nh_sfc:_FillValue = -9999.f ;
                Nh_sfc:navigation = "nav" ;

        float   Nm_sfc(record, lat, lon) ;
                Nm_sfc:long_name = "middle cloud layer" ;
                Nm_sfc:_FillValue = -9999.f ;
                Nm_sfc:navigation = "nav" ;

        float   Nl_sfc(record, lat, lon) ;
                Nl_sfc:long_name = "low cloud layer" ;
                Nl_sfc:_FillValue = -9999.f ;
                Nl_sfc:navigation = "nav" ;

        float   omega(record, level, lat, lon) ;
                omega:long_name = "pressure vertical velocity" ;
                omega:units = "Pa/s" ;
                omega:_FillValue = -9999.f ;
                omega:navigation = "nav" ;      // georeference info

        float   absvor(record, level, lat, lon) ;
                absvor:long_name = "absolute vorticity" ;
                absvor:units = "1/s" ;
                absvor:_FillValue = -9999.f ;
                absvor:navigation = "nav" ;

        float   gpt_hgt5_sfc(record, lat, lon ) ;
                gpt_hgt5_sfc:long_name = "5-wave Geopotential height" ;
                gpt_hgt5_sfc:units = "gp m" ;
                gpt_hgt5_sfc:_FillValue = -9999.f ;
                gpt_hgt5_sfc:navigation = "nav" ;

        float   srf_rn(record, lat, lon) ;
                srf_rn:long_name = "surface roughness" ;
                srf_rn:units = "m" ;
                srf_rn:_FillValue = -9999.f ;
                srf_rn:navigation = "nav" ;

        float   Kind_sfc(record, lat, lon) ;
                Kind_sfc:long_name = "K index" ;
                Kind_sfc:units = "degK" ;
                Kind_sfc:_FillValue = -9999.f ;
                Kind_sfc:navigation = "nav" ;

// global attributes:
                :history = "created by gribtonc from NOAAport broadcast" ;
                :title = "NOGAPS Global Product Set" ;
                :Conventions = "NUWG" ;
                :version = 0.0 ;                // still just a draft

data:

 level = 1013, 1000, 975, 950, 925, 900, 850, 800, 750, 700, 650, 600, 550, 
        500, 450, 400, 350, 300, 250, 200, 150, 100, 70, 50, 30, 20, 10 ;
 fhg = 2, 10, 19 ;
 model_id = 58, 63;

 // Navigation
 nav_model = "GRIB1" ;
 grid_type_code = 0 ;
 grid_type  = "Latitude/Longitude" ;
 grid_name = "Global 1.0 x 1.0 degree grid" ;
 grid_center = 58 ;   // US Navy  - Fleet Numerical Oceanography Center
 grid_number = 240 ;   
 i_dim = "lon" ;
 j_dim = "lat" ;
 Ni = 360 ;
 Nj = 181 ;
 La1 = -90.0 ;
 Lo1 = 0.0 ;
 La2 = 90.0 ;
 Lo2 = 359.0 ;
 Di = 1.0 ;
 Dj = 1.0 ;
 ResCompFlag = 0x80 ;

 lon =   0,    1,    2,    3,    4,    5,    6,    7,    8,    9,
        10,   11,   12,   13,   14,   15,   16,   17,   18,   19,
        20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
        30,   31,   32,   33,   34,   35,   36,   37,   38,   39,
        40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
        50,   51,   52,   53,   54,   55,   56,   57,   58,   59,
        60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
        70,   71,   72,   73,   74,   75,   76,   77,   78,   79,
        80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
        90,   91,   92,   93,   94,   95,   96,   97,   98,   99,
       100,  101,  102,  103,  104,  105,  106,  107,  108,  109,
       110,  111,  112,  113,  114,  115,  116,  117,  118,  119,
       120,  121,  122,  123,  124,  125,  126,  127,  128,  129,
       130,  131,  132,  133,  134,  135,  136,  137,  138,  139,
       140,  141,  142,  143,  144,  145,  146,  147,  148,  149,
       150,  151,  152,  153,  154,  155,  156,  157,  158,  159,
       160,  161,  162,  163,  164,  165,  166,  167,  168,  169,
       170,  171,  172,  173,  174,  175,  176,  177,  178,  179,
       180,  181,  182,  183,  184,  185,  186,  187,  188,  189,
       190,  191,  192,  193,  194,  195,  196,  197,  198,  199,
       200,  201,  202,  203,  204,  205,  206,  207,  208,  209,
       210,  211,  212,  213,  214,  215,  216,  217,  218,  219,
       220,  221,  222,  223,  224,  225,  226,  227,  228,  229,
       230,  231,  232,  233,  234,  235,  236,  237,  238,  239,
       240,  241,  242,  243,  244,  245,  246,  247,  248,  249,
       250,  251,  252,  253,  254,  255,  256,  257,  258,  259,
       260,  261,  262,  263,  264,  265,  266,  267,  268,  269,
       270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
       280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
       290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
       300,  301,  302,  303,  304,  305,  306,  307,  308,  309,
       310,  311,  312,  313,  314,  315,  316,  317,  318,  319,
       320,  321,  322,  323,  324,  325,  326,  327,  328,  329,
       330,  331,  332,  333,  334,  335,  336,  337,  338,  339,
       340,  341,  342,  343,  344,  345,  346,  347,  348,  349,
       350,  351,  352,  353,  354,  355,  356,  357,  358,  359 ;

 lat = -90,  -89,  -88,  -87,  -86,  -85,  -84,  -83,  -82,  -81,
       -80,  -79,  -78,  -77,  -76,  -75,  -74,  -73,  -72,  -71,
       -70,  -69,  -68,  -67,  -66,  -65,  -64,  -63,  -62,  -61,
       -60,  -59,  -58,  -57,  -56,  -55,  -54,  -53,  -52,  -51,
       -50,  -49,  -48,  -47,  -46,  -45,  -44,  -43,  -42,  -41,
       -40,  -39,  -38,  -37,  -36,  -35,  -34,  -33,  -32,  -31,
       -30,  -29,  -28,  -27,  -26,  -25,  -24,  -23,  -22,  -21,
       -20,  -19,  -18,  -17,  -16,  -15,  -14,  -13,  -12,  -11,
       -10,   -9,   -8,   -7,   -6,   -5,   -4,   -3,   -2,   -1,
         0,    1,    2,    3,    4,    5,    6,    7,    8,    9,
        10,   11,   12,   13,   14,   15,   16,   17,   18,   19,
        20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
        30,   31,   32,   33,   34,   35,   36,   37,   38,   39,
        40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
        50,   51,   52,   53,   54,   55,   56,   57,   58,   59,
        60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
        70,   71,   72,   73,   74,   75,   76,   77,   78,   79,
        80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
        90 ; 

}