NOTE: The decoders
mailing list is no longer active. The list archives are made available for historical reasons.
hiya, i downloaded the file from the last message, created a cdl, and decoded the grb file. there might be something wrong with Dan's decoders build or it could be a platform issue. this was done on a solaris box 5.9 The narr.cdl file is attached and the files narr.cdl, narr.grb, and narr.nc are in the Unidata's ftp dir at ftp unidata.ucar.edu % cd pub/contrib % mget narr* robb.... cdl: netcdf narr{ dimensions: record = UNLIMITED ; // (reference time, forecast time) x = 349 ; y = 277 ; time_len = 21 ; // string length for datetime strings valtime_offset = 1 ; // 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, time_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" ; char forecasttime(record, time_len) ; // derived from valtime forecasttime:long_name = "forecast date and time" ; // units YYYY-MM-DD hh:mm:ssZ (ISO 8601) 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 x_dim(nav, nav_len) ; x_dim:long_name = "x dimension name" ; char y_dim(nav, nav_len) ; y_dim:long_name = "y dimension name" ; long Nx(nav) ; Nx:long_name = "number of points along x-axis" ; long Ny(nav) ; Ny:long_name = "number of points along y-axis" ; 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 Lov(nav) ; Lov:long_name = "orientation of the grid" ; Lov:units = "degrees_east" ; float Dx(nav) ; Dx:long_name = "x-direction grid length" ; Dx:units = "km" ; float Dy(nav) ; Dy:long_name = "y-direction grid length" ; Dy:units = "km" ; byte ProjFlag(nav) ; ProjFlag:long_name = "projection center flag" ; float Latin1(nav) ; Latin1:long_name = "first intersecting latitude" ; Latin1:units = "degrees_north" ; float Latin2(nav) ; Latin2:long_name = "second intersecting latitude" ; Latin2:units = "degrees_north" ; float SpLat(nav) ; SpLat:long_name = "latitude of the southern pole" ; SpLat:units = "degrees_north" ; float SpLon(nav) ; SpLon:long_name = "longitude of the southern pole" ; SpLon:units = "degrees_east" ; byte ResCompFlag(nav) ; ResCompFlag:long_name = "resolution and component flags" ; // end of navigation variables float snow_wat(record,y,x) ; snow_wat:long_name = "Water equivalent of accumulated snow depth at surface of the earth" ; snow_wat:GRIB_parameter_number = 65 ; snow_wat:GRIB_level_flag = 1 ; snow_wat:units = "kg/m2" ; snow_wat:_FillValue = -9999.f ; snow_wat:navigation = "nav" ; float sen_ht_sfc(record,y,x) ; sen_ht_sfc:long_name = "Sensible heat flux at surface of the earth" ; sen_ht_sfc:GRIB_parameter_number = 122 ; sen_ht_sfc:GRIB_level_flag = 1 ; sen_ht_sfc:units = "W/m2" ; sen_ht_sfc:_FillValue = -9999.f ; sen_ht_sfc:navigation = "nav" ; float lat_ht_sfc(record,y,x) ; lat_ht_sfc:long_name = "Latent heat flux at surface of the earth" ; lat_ht_sfc:GRIB_parameter_number = 121 ; lat_ht_sfc:GRIB_level_flag = 1 ; lat_ht_sfc:units = "W/m2" ; lat_ht_sfc:_FillValue = -9999.f ; lat_ht_sfc:navigation = "nav" ; float gflux(record,y,x) ; gflux:long_name = "Ground heat flux at surface of the earth" ; gflux:GRIB_parameter_number = 155 ; gflux:GRIB_level_flag = 1 ; gflux:units = "W/m2" ; gflux:_FillValue = -9999.f ; gflux:navigation = "nav" ; float pr_water_atm(record,y,x) ; pr_water_atm:long_name = "Precipitable water at entire atmosphere considered as a single layer" ; pr_water_atm:GRIB_parameter_number = 54 ; pr_water_atm:GRIB_level_flag = 200 ; pr_water_atm:units = "kg/m2" ; pr_water_atm:_FillValue = -9999.f ; pr_water_atm:navigation = "nav" ; float dswrf_sfc(record,y,x) ; dswrf_sfc:long_name = "Downward short wave rad. flux at surface of the earth" ; dswrf_sfc:GRIB_parameter_number = 204 ; dswrf_sfc:GRIB_level_flag = 1 ; dswrf_sfc:units = "W/m2" ; dswrf_sfc:_FillValue = -9999.f ; dswrf_sfc:navigation = "nav" ; float dlwrf_sfc(record,y,x) ; dlwrf_sfc:long_name = "Downward long wave rad. flux at surface of the earth" ; dlwrf_sfc:GRIB_parameter_number = 205 ; dlwrf_sfc:GRIB_level_flag = 1 ; dlwrf_sfc:units = "W/m2" ; dlwrf_sfc:_FillValue = -9999.f ; dlwrf_sfc:navigation = "nav" ; float uswrf_sfc(record,y,x) ; uswrf_sfc:long_name = "Upward short wave rad. flux at surface of the earth" ; uswrf_sfc:GRIB_parameter_number = 211 ; uswrf_sfc:GRIB_level_flag = 1 ; uswrf_sfc:units = "W/m2" ; uswrf_sfc:_FillValue = -9999.f ; uswrf_sfc:navigation = "nav" ; float ulwrf_sfc(record,y,x) ; ulwrf_sfc:long_name = "Upward long wave rad. flux at surface of the earth" ; ulwrf_sfc:GRIB_parameter_number = 212 ; ulwrf_sfc:GRIB_level_flag = 1 ; ulwrf_sfc:units = "W/m2" ; ulwrf_sfc:_FillValue = -9999.f ; ulwrf_sfc:navigation = "nav" ; // global attributes :history = "2004-10-19 13:25:56 - 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: model_id = 140 ; valtime_offset = 3 ; // Navigation nav_model = "GRIB1" ; grid_type_code = 3 ; grid_type = "Lambert conformal projection" ; grid_name = " " ; grid_center = 7 ; grid_number = 221 ; x_dim = "x" ; y_dim = "y" ; Nx = 349 ; Ny = 277 ; La1 = 1.000000 ; Lo1 = -145.500000 ; Lov = -107.000000 ; Dx = 32463.000000 ; Dy = 32463.000000 ; Latin1 = 50.000000 ; Latin2 = 50.000000 ; SpLat = 0.000000 ; SpLon = 0.000000 ; // Pole in proj. plane = North ; ProjFlag = 0 ; ResCompFlag = 0 ; }
Date: Tue, 19 Oct 2004 12:29:26 -0400 From: "Dan Swank" <Dan.Swank@xxxxxxxx> To: Glenn Rutledge <Glenn.Rutledge@xxxxxxxx> cc: Russ Rew <russ@xxxxxxxxxxxxxxxx>, ben@xxxxxxxxxxxxxxxx Subject: Re: FW: Re: NCEP North American Reanalysis (fwd) More info, gribtocdl continuously appends a never ending stream of the number -16777216.00 To the end of the file! Any ideas? To see what i mean you can download the cdl file (227 mb) i killed gribtocdl process before the file got any larger, which it would have http://nomads.ncdc.noaa.gov/tmp/narr-b_221_20010101_0000_000.cdl And the source NARR file (1.5Mb) http://nomads.ncdc.noaa.gov/tmp/narr-b_221_20010101_0000_000.grb -Dan Glenn Rutledge wrote: > Dan- > Please provide some background on our conversion of the grib to NetCDF > files and the intermediate file that was generated from a meg to a > gig. See Russ' note below. Thanks. Glenn > > Russ Rew wrote: > >>Jon, >> >> >> >>>We are working with the NCDC to convert NARR reanalysis data from Grib to >>>netCDF. They reported that initial attempts to convert a 1mb NARR file in >>>grib resulted in a 1gb NetCDF file. Dr. Madment wanted me check with you to >>>see if this sounds right. I'm sure it depends on the specifics of the >>>conversion routine, which Glenn Rutledge would know. We want to use netCDF >>>to store the NARR data, but can not justify a factor of 1,000 storage >>>increase. >>> >>> >> >>No, that sounds like there's a bug in the conversion or the structure >>for the netCDF file is wrong. We have never seen more than a 4-fold >>increase in size from GRIB to netCDF, and if proper use is made of >>packing conventions, a netCDF file need not be much bigger than the >>corresponding GRIB file. >> >>I can't even imagine how you could increase the size by a factor of >>10, let alone 1,000. If you used double precision arrays in netCDF to >>hold 8-bit GRIB values, that still only increases the size by a factor >>of 8. There is very little overhead in netCDF data storage for most >>kinds of scientific data. >> >>I would like to see the CDL of the 1 GByte netCDF file to determine >>how the data is being structured to account for this huge size >>inflation ... >> >>--Russ >> >> >> -- Dan Swank <dan.swank@xxxxxxxx> NOMADS programmer STG, Incorporated - Government Contractor 151 Patton Avenue, Room 514 Asheville, NC 28801 Phone: 828-271-4007 ------- End of Forwarded Message
============================================================================== Robb Kambic Unidata Program Center Software Engineer III Univ. Corp for Atmospheric Research rkambic@xxxxxxxxxxxxxxxx WWW: http://www.unidata.ucar.edu/ ==============================================================================
decoders
archives: