NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
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: