[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 20020423: NOGAPS GRIB data CDL
- Subject: Re: 20020423: NOGAPS GRIB data CDL
- Date: Tue, 14 May 2002 13:09:28 -0600 (MDT)
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 ;
}