Re: grib, cdl

NOTE: The decoders mailing list is no longer active. The list archives are made available for historical reasons.

Dave,

I am just starting to look at this, it might take a couple of days.  I'm
busy getting an LDM workshop together.  I just looked at the new GRIB
documentation, it has info on ruc2.  It's located at:

I noticed there is a new version of the GRIB document (Office Note 388)
dated >March 10, 1998 in ftp://nic.fb4.noaa.gov/pub/doc/nws/nmc/gribed1.
Thought you >might be interested.

There might need to be some changes to the gribtonc source code.  I would
use gribdump and the comment out method of the offending variables in the
cdl file until  gribtonc can process the file. Since I'm not a
meteorologist, I have to depend on help from my cohorts.  Keep me abreast
of your progress also.

Thanks,
Robb...


On Mon, 24 Aug 1998 laps@xxxxxxxxxxxxxxxxxxxxx wrote:

robb,

i am trying to use 'gribtonc' to convert the ruc2 native 40km model
from the oso server to netcdf.  fsl gave me a cdl file they use for
this model. i dont know why this is so difficult.  i am not sure
that they us the gribtonc program to accomplish their convertion, but
this cdl convention should work with this model. right?   here is my
command line stuff:

cyclone[bennett]291>ncgen -o ruc2.nc ruc2.cdl

cyclone[bennett]292>gribtonc -l log -v ruc2.nc < ruc2.T12Z.bgrbanl

cyclone[bennett]293>more log
Aug 24 20:15:54 gribtonc[19142]: Starting Up
Aug 24 20:15:54 gribtonc[19142]: Error parsing units: Pascals / second
Aug 24 20:15:54 gribtonc[19142]: ruc2.nc: can't get units attribute for 
variable w
Aug 24 20:15:54 gribtonc[19142]: GRIB units `degK' not conformable with 
variable Tv:units
Aug 24 20:15:54 gribtonc[19142]: Error parsing units: WMO centers table
Aug 24 20:15:54 gribtonc[19142]: ruc2.nc: can't get units attribute for 
variable center_id
Aug 24 20:15:54 gribtonc[19142]: ruc2.nc: no datetimeid variable
Aug 24 20:15:54 gribtonc[19142]: make_ncfile failed
Aug 24 20:15:54 gribtonc[19142]: can't create output netCDF file ruc2.nc, 
exiting
Aug 24 20:15:54 gribtonc[19142]: Exiting
Aug 24 20:15:54 gribtonc[19142]: 0 WMO msgs, 0 GRIBs decoded, 0 written

i added the datetime variable but that didn't matter.  the center_id is 
actually in
the cdl file so that doesn't make sense to me.  the error about Tv:units is also
a mystery. Tv is tropopause v-winds which has units m/s so where does 'degK' 
come from?
your help here would be great if you have the time.  thanks...

dave bennett


================================== CDL FILE ==================================

netcdf ruc2_40km_hybridb.cdl
    {

    dimensions:
        record = unlimited;
        namelen = 132;
        nav = 1;
x = 151; y = 113;
        z = 40;

    variables:

 //  Geopotential Height

    float
        hgt(record, z, y, x) ;
        hgt:long_name = "geopotential height" ;
        hgt:units = "gp m" ;
        hgt:z = "isoLevel";
        hgt:record = "reftime, valtime" ;
        hgt:valid_range = -1000.f, 50000.f ;
        hgt:_FillValue = -9999.f ;
        hgt:navigation_var = "nav";


        //      u wind component

        float
            u(record, z, y, x);
            u:navigation_dim = "nav";
            u:z_dim = "vpt, p";
            u:record = "valtime, reftime";
            u:long_name = "u-component of wind";
            u:units = "meters / second";
            u:valid_range = -200.f, 200.f;
            u:_FillValue = -99999.f;

        //      v wind component

        float
            v(record, z, y, x);
            v:navigation_dim = "nav";
            v:z_dim = "vpt, p";
            v:record = "valtime, reftime";
            v:long_name = "v-component of wind";
            v:units = "meters / second";
            v:valid_range = -200.f, 200.f;
            v:_FillValue = -99999.f;

        //      montgomery stream function

        float
            msg(record, z, y, x);
            msg:navigation_dim = "nav";
            msg:z_dim = "vpt, p";
            msg:record = "valtime, reftime";
            msg:long_name = "montgomery stream function / gravity";
            msg:units = "meters";
            msg:valid_range = 20000.f, 50000.f;
            msg:_FillValue = -99999.f;

        //      atmospheric pressure

        float
            p(record, z, y, x);
            p:navigation_dim = "nav";
            p:z_dim = "vpt";
            p:record = "valtime, reftime";
            p:long_name = "pressure";
            p:units = "pascals";
            p:valid_range = 0.f, 110000.f;
            p:_FillValue = -99999.f;

        //      virtual potential temperature   

        float
            vpt(record, z, y, x);
            vpt:navigation_dim = "nav";
            vpt:z_dim = "p";
            vpt:record = "valtime, reftime";
            vpt:long_name = "virtual potential temperature";
            vpt:units = "degrees kelvin";
            vpt:valid_range = 0.f, 600.f;
            vpt:_FillValue = -99999.f;

        //      water vapor mixing ratio

        float
            qv(record, z, y, x);
            qv:navigation_dim = "nav";
            qv:z_dim = "vpt, p";
            qv:record = "valtime, reftime";
            qv:long_name = "water vapor mixing ratio";
            qv:units = "kg / kg";
            qv:valid_range = 0.f, 100.f;
            qv:_FillValue = -99999.f;

        //      cloud water mixing ratio

        float
            qc(record, z, y, x);
            qc:navigation_dim = "nav";
            qc:z_dim = "vpt, p";
            qc:record = "valtime, reftime";
            qc:long_name = "cloud water mixing ratio";
            qc:units = "kg / kg";
            qc:valid_range = 0.f, 100.f;
            qc:_FillValue = -99999.f;

        //      rain water mixing ratio

        float
            qr(record, z, y, x);
            qr:navigation_dim = "nav";
            qr:z_dim = "vpt, p";
            qr:record = "valtime, reftime";
            qr:long_name = "rain water mixing ratio";
            qr:units = "kg / kg";
            qr:valid_range = 0.f, 100.f;
            qr:_FillValue = -99999.f;

        //      ice mixing ratio

        float
            qi(record, z, y, x);
            qi:navigation_dim = "nav";
            qi:z_dim = "vpt, p";
            qi:record = "valtime, reftime";
            qi:long_name = "ice mixing ratio";
            qi:units = "kg / kg";
            qi:valid_range = 0.f, 100.f;
            qi:_FillValue = -99999.f;

        //      snow mixing ratio

        float
            qs(record, z, y, x);
            qs:navigation_dim = "nav";
            qs:z_dim = "vpt, p";
            qs:record = "valtime, reftime";
            qs:long_name = "snow mixing ratio";
            qs:units = "kg / kg";
            qs:valid_range = 0.f, 100.f;
            qs:_FillValue = -99999.f;

        //      graupel mixing ratio

        float
            qg(record, z, y, x);
            qg:navigation_dim = "nav";
            qg:z_dim = "vpt, p";
            qg:record = "valtime, reftime";
            qg:long_name = "graupel mixing ratio";
            qg:units = "kg / kg";
            qg:valid_range = 0.f, 100.f;
            qg:_FillValue = -99999.f;

        //      number concentration for ice particles

        float
            qin(record, z, y, x);
            qin:navigation_dim = "nav";
            qin:z_dim = "vpt, p";
            qin:record = "valtime, reftime";
            qin:long_name = "number concentration for ice particles";
            qin:units = "1 / m**3";
            qin:valid_range = 0.f, 100.f;
            qin:_FillValue = -99999.f;

        //      turbulent kinetic energy

        float
            tke(record, z, y, x);
            tke:navigation_dim = "nav";
            tke:z_dim = "vpt, p";
            tke:record = "valtime, reftime";
            tke:long_name = "turbulent kinetic energy";
            tke:units = "m**2 / s**2";
            tke:valid_range = 0.f, 10000.f;
            tke:_FillValue = -99999.f;

        //      vertical velocity

        float
            w(record, z, y, x);
            w:navigation_dim = "nav";
            w:z_dim = "vpt, p";
            w:record = "valtime, reftime";
            w:long_name = "vertical velocity";
            w:units = "Pascals / second";
            w:valid_range = -10000.f, 10000.f;
            w:_FillValue = -99999.f;

        //      MAPS Mean Sea Level Pressure

        float
            MMSP(record, y, x);
            MMSP:navigation_dim = "nav";
            MMSP:record = "valtime, reftime";
            MMSP:long_name = "MAPS mean sea level pressure";
            MMSP:units = "pascals";
            MMSP:valid_range = 80000.f, 110000.f;
            MMSP:_FillValue = -99999.f;

        //      Soil Temperature at surface

        float
            ST(record, y, x);
            ST:navigation_dim = "nav";
            ST:record = "valtime, reftime";
            ST:long_name = "soil temperature at surface";
            ST:units = "degrees kelvin";
            ST:valid_range = 150.f, 400.f;
            ST:_FillValue = -99999.f;

        //      Snow Temperature - snow or soil top level

        float
            STsnow(record, y, x);
            STsnow:navigation_dim = "nav";
            STsnow:record = "valtime, reftime";
            STsnow:long_name = "snow temperature - snow or top soil level";
            STsnow:units = "degrees kelvin";
            STsnow:valid_range = 150.f, 400.f;
            STsnow:_FillValue = -99999.f;

        //      Soil Temperature at level 1 below surface

        float
            ST1(record, y, x);
            ST1:navigation_dim = "nav";
            ST1:record = "valtime, reftime";
            ST1:long_name = "soil temperature at level 1 below surface";
            ST1:units = "degrees kelvin";
            ST1:valid_range = 150.f, 400.f;
            ST1:_FillValue = -99999.f;

        //      Soil Temperature at level 2 below surface

        float
            ST2(record, y, x);
            ST2:navigation_dim = "nav";
            ST2:record = "valtime, reftime";
            ST2:long_name = "soil temperature at level 2 below surface";
            ST2:units = "degrees kelvin";
            ST2:valid_range = 150.f, 400.f;
            ST2:_FillValue = -99999.f;

        //      Soil Temperature at level 3 below surface

        float
            ST3(record, y, x);
            ST3:navigation_dim = "nav";
            ST3:record = "valtime, reftime";
            ST3:long_name = "soil temperature at level 3 below surface";
            ST3:units = "degrees kelvin";
            ST3:valid_range = 150.f, 400.f;
            ST3:_FillValue = -99999.f;

        //      Soil Temperature at level 4 below surface

        float
            ST4(record, y, x);
            ST4:navigation_dim = "nav";
            ST4:record = "valtime, reftime";
            ST4:long_name = "soil temperature at level 4 below surface";
            ST4:units = "degrees kelvin";
            ST4:valid_range = 150.f, 400.f;
            ST4:_FillValue = -99999.f;

        //      Soil Temperature at the bottom

        float
            ST5(record, y, x);
            ST5:navigation_dim = "nav";
            ST5:record = "valtime, reftime";
            ST5:long_name = "soil temperature at the bottom";
            ST5:units = "degrees kelvin";
            ST5:valid_range = 150.f, 400.f;
            ST5:_FillValue = -99999.f;

        //      Soil volumetric moisture content at surface

        float
            SM(record, y, x);
            SM:navigation_dim = "nav";
            SM:record = "valtime, reftime";
            SM:long_name = "soil volumetric moisture content at surface";
            SM:units = "m**3 / m**3";
            SM:valid_range = 0.f, 1.f;
            SM:_FillValue = -99999.f;

        //      Soil volumetric moisture content at level 1 below surface

        float
            SM1(record, y, x);
            SM1:navigation_dim = "nav";
            SM1:record = "valtime, reftime";
            SM1:long_name = "soil volumetric moisture content at level 1";
            SM1:units = "m**3 / m**3";
            SM1:valid_range = 0.f, 1.f;
            SM1:_FillValue = -99999.f;

        //      Soil volumetric moisture content at level 2 below surface

        float
            SM2(record, y, x);
            SM2:navigation_dim = "nav";
            SM2:record = "valtime, reftime";
            SM2:long_name = "soil volumetric moisture content at level 2";
            SM2:units = "m**3 / m**3";
            SM2:valid_range = 0.f, 1.f;
            SM2:_FillValue = -99999.f;

        //      Soil volumetric moisture content at level 3 below surface

        float
            SM3(record, y, x);
            SM3:navigation_dim = "nav";
            SM3:record = "valtime, reftime";
            SM3:long_name = "soil volumetric moisture content at level 3";
            SM3:units = "m**3 / m**3";
            SM3:valid_range = 0.f, 1.f;
            SM3:_FillValue = -99999.f;

        //      Soil volumetric moisture content at level 4 below surface

        float
            SM4(record, y, x);
            SM4:navigation_dim = "nav";
            SM4:record = "valtime, reftime";
            SM4:long_name = "soil volumetric moisture content at level 4";
            SM4:units = "m**3 / m**3";
            SM4:valid_range = 0.f, 1.f;
            SM4:_FillValue = -99999.f;

        //      Soil volumetric moisture content at the bottom

        float
            SM5(record, y, x);
            SM5:navigation_dim = "nav";
            SM5:record = "valtime, reftime";
            SM5:long_name = "soil volumetric moisture content at the bottom";
            SM5:units = "m**3 / m**3";
            SM5:valid_range = 0.f, 1.f;
            SM5:_FillValue = -99999.f;

        //      Sensible heat flux

        float
            SHF(record, y, x);
            SHF:navigation_dim = "nav";
            SHF:record = "valtime, reftime";
            SHF:long_name = "sensible heat flux";
            SHF:units = "W / m**2";
            SHF:valid_range = -10000.f, 10000.f;
            SHF:_FillValue = -99999.f;

        //      Latent heat flux

        float
            LHF(record, y, x);
            LHF:navigation_dim = "nav";
            LHF:record = "valtime, reftime";
            LHF:long_name = "latent heat flux";
            LHF:units = "W / m**2";
            LHF:valid_range = -10000.f, 10000.f;
            LHF:_FillValue = -99999.f;

        //      Direct evaporation from bare soil

        float
            EDIR(record, y, x);
            EDIR:navigation_dim = "nav";
            EDIR:record = "valtime, reftime";
            EDIR:long_name = "direct evaporation from bare soil";
            EDIR:units = "W / m**2";
            EDIR:valid_range = -10000.f, 10000.f;
            EDIR:_FillValue = -99999.f;

        //      Evaporation of canopy water

        float
            EC(record, y, x);
            EC:navigation_dim = "nav";
            EC:record = "valtime, reftime";
            EC:long_name = "evaporation of canopy water";
            EC:units = "W / m**2";
            EC:valid_range = -10000.f, 10000.f;
            EC:_FillValue = -99999.f;

        //      Canopy water

        float
            CANWAT(record, y, x);
            CANWAT:navigation_dim = "nav";
            CANWAT:record = "valtime, reftime";
            CANWAT:long_name = "canopy water";
            CANWAT:units = "m";
            CANWAT:valid_range = 0.f, 1.f;
            CANWAT:_FillValue = -99999.f;

        //      Evapotranspiration flux

        float
            ETT(record, y, x);
            ETT:navigation_dim = "nav";
            ETT:record = "valtime, reftime";
            ETT:long_name = "evapotranspiration flux";
            ETT:units = "W / m**2";
            ETT:valid_range = -10000.f, 10000.f;
            ETT:_FillValue = -99999.f;

        //      Water condensation rate near surface

        float
            DEW(record, y, x);
            DEW:navigation_dim = "nav";
            DEW:record = "valtime, reftime";
            DEW:long_name = "water condensation rate near surface";
            DEW:units = "m / s";
            DEW:valid_range = -10000.f, 10000.f;
            DEW:_FillValue = -99999.f;

        //      Rate of water dropping from canopy to ground

        float
            DRIP(record, y, x);
            DRIP:navigation_dim = "nav";
            DRIP:record = "valtime, reftime";
            DRIP:long_name = "rate of water dropping from canopy to ground";
            DRIP:units = "m / s";
            DRIP:valid_range = -10000.f, 10000.f;
            DRIP:_FillValue = -99999.f;

        //      Net Longwave Radiation at Surface

        float
            LWNR(record, y, x);
            LWNR:navigation_dim = "nav";
            LWNR:record = "valtime, reftime";
            LWNR:long_name = "net longwave radiation at surface";
            LWNR:units = "W / m**2";
            LWNR:valid_range = -10000.f, 10000.f;
            LWNR:_FillValue = -99999.f;

        //      Net Shortwave Radiation at Surface

        float
            SWNR(record, y, x);
            SWNR:navigation_dim = "nav";
            SWNR:record = "valtime, reftime";
            SWNR:long_name = "net shortwave radiation at surface";
            SWNR:units = "W / m**2";
            SWNR:valid_range = -10000.f, 10000.f;
            SWNR:_FillValue = -99999.f;

        //      precipitation rate

        float
            PR(record, y, x);
            PR:navigation_dim = "nav";
            PR:record = "valtime, reftime";
            PR:long_name = "precipitation rate";
            PR:units = "kg / m**2 / s";
            PR:valid_range = 0.f, 0.1f;
            PR:_FillValue = -99999.f;

        //      resolvable scale precipitation - 1 hour

        float
            LgSP1h(record, y, x);
            LgSP1h:navigation_dim = "nav";
            LgSP1h:record = "valtime, reftime";
            LgSP1h:long_name = "resolvable scale precipitation - 1h";
            LgSP1h:units = "kg / m**2";
            LgSP1h:valid_range = 0.f, 1000.f;
            LgSP1h:_FillValue = -99999.f;

//      resolvable scale precipitation - 2 hour

        float
            LgSP2h(record, y, x);
            LgSP2h:navigation_dim = "nav";
            LgSP2h:record = "valtime, reftime";
            LgSP2h:long_name = "resolvable scale precipitation - 2h";
            LgSP2h:units = "kg / m**2";
            LgSP2h:valid_range = 0.f, 1000.f;
            LgSP2h:_FillValue = -99999.f;

//      resolvable scale precipitation - 3 hour

        float
            LgSP3h(record, y, x);
            LgSP3h:navigation_dim = "nav";
            LgSP3h:record = "valtime, reftime";
            LgSP3h:long_name = "resolvable scale precipitation - 3h";
            LgSP3h:units = "kg / m**2";
            LgSP3h:valid_range = 0.f, 1000.f;
            LgSP3h:_FillValue = -99999.f;

       // sub-grid scale precipitation - 1h

        float
            ConvP1h(record, y, x);
            ConvP1h:navigation_dim = "nav";
            ConvP1h:record = "valtime, reftime";
            ConvP1h:long_name = "sub-grid scale precipitation - 1h";
            ConvP1h:units = "kg / m**2";
            ConvP1h:valid_range = 0.f, 1000.f;
            ConvP1h:_FillValue = -99999.f;

              // sub-grid scale precipitation - 2h

        float
            ConvP2h(record, y, x);
            ConvP2h:navigation_dim = "nav";
            ConvP2h:record = "valtime, reftime";
            ConvP2h:long_name = "sub-grid scale precipitation - 2h";
            ConvP2h:units = "kg / m**2";
            ConvP2h:valid_range = 0.f, 1000.f;
            ConvP2h:_FillValue = -99999.f;
// sub-grid scale precipitation - 3h

        float
            ConvP3h(record, y, x);
            ConvP3h:navigation_dim = "nav";
            ConvP3h:record = "valtime, reftime";
            ConvP3h:long_name = "sub-grid scale precipitation - 3h";
            ConvP3h:units = "kg / m**2";
            ConvP3h:valid_range = 0.f, 1000.f;
            ConvP3h:_FillValue = -99999.f;

        
     //      Water equivalent of snow depth - 1h

        float
            SnwAcc1h(record, y, x);
            SnwAcc1h:navigation_dim = "nav";
            SnwAcc1h:record = "valtime, reftime";
            SnwAcc1h:long_name = "water equivalent of snow depth - 1h";
            SnwAcc1h:units = "kg / m**2";
            SnwAcc1h:valid_range = 0.f, 1000.f;
            SnwAcc1h:_FillValue = -99999.f;

        //      Water equivalent of snow depth - 2h

        float
            SnwAcc2h(record, y, x);
            SnwAcc2h:navigation_dim = "nav";
            SnwAcc2h:record = "valtime, reftime";
            SnwAcc2h:long_name = "water equivalent of snow depth - 2h";
            SnwAcc2h:units = "kg / m**2";
            SnwAcc2h:valid_range = 0.f, 1000.f;
            SnwAcc2h:_FillValue = -99999.f;

        //      Water equivalent of snow depth - 3h

        float
            SnwAcc3h(record, y, x);
            SnwAcc3h:navigation_dim = "nav";
            SnwAcc3h:record = "valtime, reftime";
            SnwAcc3h:long_name = "water equivalent of snow depth - 3h";
            SnwAcc3h:units = "kg / m**2";
            SnwAcc3h:valid_range = 0.f, 1000.f;
            SnwAcc3h:_FillValue = -99999.f;

       //      snow accumulation since last output

        float
            SnwAcc(record, y, x);
            SnwAcc:navigation_dim = "nav";
            SnwAcc:record = "valtime, reftime";
            SnwAcc:long_name = "snow accumulation";
            SnwAcc:units = "centimeters";
            SnwAcc:valid_range = 0.f, 1000.f;
            SnwAcc:_FillValue = -99999.f;


        //      surface runoff since last output

        float
            Rnoff(record, y, x);
            Rnoff:navigation_dim = "nav";
            Rnoff:record = "valtime, reftime";
            Rnoff:long_name = "surface runoff";
            Rnoff:units = "kg / m**2";
            Rnoff:valid_range = 0.f, 1000.f;
            Rnoff:_FillValue = -99999.f;

        //      sub-surface runoff since last output

        float
            SubRnoff(record, y, x);
            SubRnoff:navigation_dim = "nav";
            SubRnoff:record = "valtime, reftime";
            SubRnoff:long_name = "sub-surface runoff";
            SubRnoff:units = "kg / m**2";
            SubRnoff:valid_range = 0.f, 1000.f;
            SubRnoff:_FillValue = -99999.f;

        //      precipitable water

        float
            PW(record, y, x);
            PW:navigation_dim = "nav";
            PW:record = "valtime, reftime";
            PW:long_name = "precipitable water";
            PW:units = "kg / m**2";
            PW:valid_range = 0.f, 100.f;
            PW:_FillValue = -99999.f;

        //      atmospheric pressure at tropopause

        float
            Tp(record, y, x);
            Tp:navigation_dim = "nav";
            Tp:record = "valtime, reftime";
            Tp:long_name = "pressure at tropopause";
            Tp:units = "pascals";
            Tp:valid_range = 0.f, 110000.f;
            Tp:_FillValue = -99999.f;

        //      potential temperature at tropopause

        float
            Tpot(record, y, x);
            Tpot:navigation_dim = "nav";
            Tpot:record = "valtime, reftime";
            Tpot:long_name = "potential temperature at tropopause";
            Tpot:units = "degrees kelvin";
            Tpot:valid_range = 200.f, 500.f;
            Tpot:_FillValue = -99999.f;

        //      u wind component at tropopause

        float
            Tu(record, y, x);
            Tu:navigation_dim = "nav";
            Tu:record = "valtime, reftime";
            Tu:long_name = "u-component of wind at tropopause";
            Tu:units = "meters / second";
            Tu:valid_range = -200.f, 200.f;
            Tu:_FillValue = -99999.f;

        //      v wind component at tropopause

        float
            Tv(record, y, x);
            Tv:navigation_dim = "nav";
            Tv:record = "valtime, reftime";
            Tv:long_name = "v-component of wind at tropopause";
            Tv:units = "meters / second";
            Tv:valid_range = -200.f, 200.f;
            Tv:_FillValue = -99999.f;

        //      convective available potential energy - max parcel

        float
            CAPE(record, y, x);
            CAPE:navigation_dim = "nav";
            CAPE:record = "valtime, reftime";
            CAPE:long_name = "convective available potential energy";
            CAPE:units = "J / kg";
            CAPE:valid_range = 0.f, 20000.f;
            CAPE:_FillValue = -99999.f;

        //      convective inhibition for max parcel

        float
            CIn(record, y, x);
            CIn:navigation_dim = "nav";
            CIn:record = "valtime, reftime";
            CIn:long_name = "convective inhibition";
            CIn:units = "J / kg";
            CIn:valid_range = 0.f, 20000.f;
            CIn:_FillValue = -99999.f;

        //      storm-relative helicity

        float
            Helic(record, y, x);
            Helic:navigation_dim = "nav";
            Helic:record = "valtime, reftime";
            Helic:long_name = "storm-relative helicity";
            Helic:units = "m**2/s**2";
            Helic:valid_range = 0.f, 20000.f;
            Helic:_FillValue = -99999.f;

        //      snow depth

        float
            SnD(record, y, x);
            SnD:navigation_dim = "nav";
            SnD:record = "valtime, reftime";
            SnD:long_name = "snow depth";
            SnD:units = "meters";
            SnD:valid_range = 0.f, 20000.f;
            SnD:_FillValue = -99999.f;


        double
            valtime(record);
            valtime:long_name = "valid time";
            valtime:units = "seconds since (1970-1-1 00:00:00.0)";
// reference time of the process

        double
            reftime(record);
            reftime:long_name = "reference time";
            reftime:units = "seconds since (1970-1-1 00:00:00.0)";

        //      nice name for originating center

        char
            origin_name(namelen);
            origin_name:long_name = " ";

        //      nice name for process

        char
            process_name(namelen);
            process_name:long_name = " ";

        //      nice name for grid description instance
        char
            grid_name(namelen);
            grid_name:long_name = " ";

        //      basic assumption about earth shape
        char
            earth_shape(namelen);
            earth_shape:long_name = " ";

// navigation variables using // WMO FM 92-VIII Ext.GRIB specification names char grid_type(nav, namelen);
                grid_type:long_name = "GRIB-1 grid type";
char x_dim(nav, namelen);
                x_dim:long_name = "longitude dimension";
char y_dim(nav, namelen);
                y_dim:long_name = "latitude dimension";
short Nx(nav);
                Nx:long_name = "number of x points";
short Ny(nav);
                Ny:long_name =  "number of y points";
short Nz(nav);
                Nz:long_name =  "number of z points";
float La1(nav);
                La1:long_name = "first latitude";
                La1:units = "degrees_north";
float Lo1(nav);
                Lo1:long_name = "first longitude";
                Lo1:units = "degrees_east" ;
float Lov(nav);
                Lov:long_name = "orientation of grid" ;
                Lov:units = "degrees_east";
float Latin(nav);
                Latin:long_name = "conic tangent latitude" ;
                Latin:units = "degrees_north";
float Dx(nav);
                Dx:long_name = "x grid increment";
                Dx:units = "kilometers";
float Dy(nav);
                Dy:long_name = "y grid increment";
                Dy:units = "kilometers";
// end of navigation variables

        long    center_id;
                center_id:long_name = "center ID";
                center_id:units = "WMO centers table";
long process_id;
                process_id:long_name = "process ID";
                process_id:units = "(allocated by center)";
:Conventions = "NUWG";
        :history = "created by FSL Data Systems from the RUC2 Model Grids";
        :record = "valtime, reftime";
        :title = "Hybrid-B 40km Rapid Update Cycle";
        :version = 1.0;
//----------------------------------------------------------------------
        // overhead information used to query the NIMBUS data pool for data
        // this is specific to FSL data management systems
        //----------------------------------------------------------------------
        :query = "GDAM.NMC.RUC2.RUC240kmHyB.*";
        :age = 10800;

    data:

        Dx              = 40.63525;
        Dy              = 40.63525;
        La1             = 16.2810;
        Lo1             = 126.1378;
        Lov             = 265.0;
        Latin           = 25.0;
        Nx              = 151;
        Ny              = 113;
        Nz              = 40;
        center_id       = 7;                   // NMC
        earth_shape     = "oblate spheroid";
        grid_name       = "FSL Conus 40km";
        grid_type       = "lambert conformal";
        process_id      = 105;                    // RUC2 40km
        process_name    = "RUC2 40km Hybrid-b 3-d/2-d Grids";
        origin_name     = "National Weather Service";
        x_dim           = "x";
        y_dim           = "y";

    }






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


  • 1998 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the decoders archives: