This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
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 ; }