[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: NOGAPS: GRIB to netCDF decoder for GFE (fwd)
- Subject: Re: NOGAPS: GRIB to netCDF decoder for GFE (fwd)
- Date: Wed, 14 May 2003 15:36:04 -0600 (MDT)
===============================================================================
Robb Kambic Unidata Program Center
Software Engineer III Univ. Corp for Atmospheric Research
address@hidden WWW: http://www.unidata.ucar.edu/
===============================================================================
---------- Forwarded message ----------
Date: Wed, 14 May 2003 15:33:41 -0600 (MDT)
From: Robb Kambic <address@hidden>
To: "Jacques, Rodney" <address@hidden>
Cc: "''address@hidden'"
<'address@hidden>
Subject: Re: NOGAPS: GRIB to netCDF decoder for GFE
On Wed, 14 May 2003, Jacques, Rodney wrote:
> Hello,
>
> We are trying to decode the NOGAPS and COAMPS grib files to netCDF for
> ingest into GFE. I was reading thru past Unidata archives and found that
> this work (NOGAPS) has been accomplished. Can we obtain the necessary
> documentation and decoder to help our organization?
Rodney,
Yes, the decoders package can decode the NOGAPS and COAMPS grib files to
NetCDF. Of course one has to install the decoders package, NetCDF and
udunits packages. The decoders page is located at:
http://www.unidata.ucar.edu/packages/decoders
The decoders package can be obtained via ftp www.unidata.ucar.edu at
pub/decoders.
Latest package is decoders-2.4.4.tar.Z
I did a test case on the nogaps data, it worked ok. One needs to create a
NetCDF cdl file before running the decoder gribtonc.
% gribtocdl -v "nogaps Grib file" > nogaps.cdl
to decode the data
% gribtonc -l - nogaps.cdl nogaps.nc < "nogaps Grib file"
There are man pages for the programs in the release.
A couple hints: combine nogaps files into one to get all the variables you
want, add the value
valtime_offset = 0, 3, 6, 9, 12, 15 ,18, 21, 24, 30, 36, 42, 48, 54, 60,
66, 72, 84, 96, 108, 120, 132, 144
to the cdl if it complains.
I'll include a sample cdl file as a attachment.
Robb...
>
> Thanks in advance,
>
>
> Rodney Jacques
>
> Meteorological Sciences Officer (MSO)
> NAVPACMETOCCEN San Diego, N5
> address@hidden
> Comm (619) 545-2211/ DSN 735-2211
> FAX (619) 545-0291
>
>
===============================================================================
Robb Kambic Unidata Program Center
Software Engineer III Univ. Corp for Atmospheric Research
address@hidden WWW: http://www.unidata.ucar.edu/
===============================================================================
netcdf Replace_with_model_name{
dimensions:
record = UNLIMITED ; // (reference time, forecast time)
lat = 181 ; // latitude
lon = 360 ; // longitude
level = 1 ; // isobaric levels
datetime_len = 21 ; // string length for datetime strings
valtime_offset = 23 ; // 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, datetime_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" ;
float level(level) ;
level:long_name = "isobaric level" ;
level:units = "hectopascals" ;
// 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" ;
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 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 omega(record,level,lat,lon) ;
omega:long_name = "Pressure vertical velocity at isobaric
levels" ;
omega:GRIB_parameter_number = 39 ;
omega:GRIB_level_flag = 100 ;
omega:units = "Pa/s" ;
omega:_FillValue = -9999.f ;
omega:navigation = "nav" ;
// global attributes
:history = "2003-05-14 15:05:14 - 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:
level = 250.0 ;
model_id = 58 ;
valtime_offset = 0, 3, 6, 9, 12, 15 ,18, 21, 24, 30, 36, 42, 48, 54, 60, 66,
72, 84, 96, 108, 120, 132, 144 ;
// Navigation
nav_model = "GRIB1" ;
grid_type_code = 0 ;
grid_type = "Latitude/Longitude" ;
grid_name = " " ;
grid_center = 58 ;
grid_number = 240 ;
i_dim = "lon" ;
j_dim = "lat" ;
Ni = 360 ;
Nj = 181 ;
La1 = -90.000000 ;
Lo1 = 0.000000 ;
La2 = 90.000000 ;
Lo2 = 359.000000 ;
Di = 1.000000 ;
Dj = 1.000000 ;
ResCompFlag = 128 ;
lon = 0.00, 1.00, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00,
8.00, 9.00, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00,
16.00, 17.00, 18.00, 19.00, 20.00, 21.00, 22.00, 23.00,
24.00, 25.00, 26.00, 27.00, 28.00, 29.00, 30.00, 31.00,
32.00, 33.00, 34.00, 35.00, 36.00, 37.00, 38.00, 39.00,
40.00, 41.00, 42.00, 43.00, 44.00, 45.00, 46.00, 47.00,
48.00, 49.00, 50.00, 51.00, 52.00, 53.00, 54.00, 55.00,
56.00, 57.00, 58.00, 59.00, 60.00, 61.00, 62.00, 63.00,
64.00, 65.00, 66.00, 67.00, 68.00, 69.00, 70.00, 71.00,
72.00, 73.00, 74.00, 75.00, 76.00, 77.00, 78.00, 79.00,
80.00, 81.00, 82.00, 83.00, 84.00, 85.00, 86.00, 87.00,
88.00, 89.00, 90.00, 91.00, 92.00, 93.00, 94.00, 95.00,
96.00, 97.00, 98.00, 99.00,100.00,101.00,102.00,103.00,
104.00,105.00,106.00,107.00,108.00,109.00,110.00,111.00,
112.00,113.00,114.00,115.00,116.00,117.00,118.00,119.00,
120.00,121.00,122.00,123.00,124.00,125.00,126.00,127.00,
128.00,129.00,130.00,131.00,132.00,133.00,134.00,135.00,
136.00,137.00,138.00,139.00,140.00,141.00,142.00,143.00,
144.00,145.00,146.00,147.00,148.00,149.00,150.00,151.00,
152.00,153.00,154.00,155.00,156.00,157.00,158.00,159.00,
160.00,161.00,162.00,163.00,164.00,165.00,166.00,167.00,
168.00,169.00,170.00,171.00,172.00,173.00,174.00,175.00,
176.00,177.00,178.00,179.00,180.00,181.00,182.00,183.00,
184.00,185.00,186.00,187.00,188.00,189.00,190.00,191.00,
192.00,193.00,194.00,195.00,196.00,197.00,198.00,199.00,
200.00,201.00,202.00,203.00,204.00,205.00,206.00,207.00,
208.00,209.00,210.00,211.00,212.00,213.00,214.00,215.00,
216.00,217.00,218.00,219.00,220.00,221.00,222.00,223.00,
224.00,225.00,226.00,227.00,228.00,229.00,230.00,231.00,
232.00,233.00,234.00,235.00,236.00,237.00,238.00,239.00,
240.00,241.00,242.00,243.00,244.00,245.00,246.00,247.00,
248.00,249.00,250.00,251.00,252.00,253.00,254.00,255.00,
256.00,257.00,258.00,259.00,260.00,261.00,262.00,263.00,
264.00,265.00,266.00,267.00,268.00,269.00,270.00,271.00,
272.00,273.00,274.00,275.00,276.00,277.00,278.00,279.00,
280.00,281.00,282.00,283.00,284.00,285.00,286.00,287.00,
288.00,289.00,290.00,291.00,292.00,293.00,294.00,295.00,
296.00,297.00,298.00,299.00,300.00,301.00,302.00,303.00,
304.00,305.00,306.00,307.00,308.00,309.00,310.00,311.00,
312.00,313.00,314.00,315.00,316.00,317.00,318.00,319.00,
320.00,321.00,322.00,323.00,324.00,325.00,326.00,327.00,
328.00,329.00,330.00,331.00,332.00,333.00,334.00,335.00,
336.00,337.00,338.00,339.00,340.00,341.00,342.00,343.00,
344.00,345.00,346.00,347.00,348.00,349.00,350.00,351.00,
352.00,353.00,354.00,355.00,356.00,357.00,358.00,359.00 ;
lat =-90.00,-89.00,-88.00,-87.00,-86.00,-85.00,-84.00,-83.00,
-82.00,-81.00,-80.00,-79.00,-78.00,-77.00,-76.00,-75.00,
-74.00,-73.00,-72.00,-71.00,-70.00,-69.00,-68.00,-67.00,
-66.00,-65.00,-64.00,-63.00,-62.00,-61.00,-60.00,-59.00,
-58.00,-57.00,-56.00,-55.00,-54.00,-53.00,-52.00,-51.00,
-50.00,-49.00,-48.00,-47.00,-46.00,-45.00,-44.00,-43.00,
-42.00,-41.00,-40.00,-39.00,-38.00,-37.00,-36.00,-35.00,
-34.00,-33.00,-32.00,-31.00,-30.00,-29.00,-28.00,-27.00,
-26.00,-25.00,-24.00,-23.00,-22.00,-21.00,-20.00,-19.00,
-18.00,-17.00,-16.00,-15.00,-14.00,-13.00,-12.00,-11.00,
-10.00, -9.00, -8.00, -7.00, -6.00, -5.00, -4.00, -3.00,
-2.00, -1.00, 0.00, 1.00, 2.00, 3.00, 4.00, 5.00,
6.00, 7.00, 8.00, 9.00, 10.00, 11.00, 12.00, 13.00,
14.00, 15.00, 16.00, 17.00, 18.00, 19.00, 20.00, 21.00,
22.00, 23.00, 24.00, 25.00, 26.00, 27.00, 28.00, 29.00,
30.00, 31.00, 32.00, 33.00, 34.00, 35.00, 36.00, 37.00,
38.00, 39.00, 40.00, 41.00, 42.00, 43.00, 44.00, 45.00,
46.00, 47.00, 48.00, 49.00, 50.00, 51.00, 52.00, 53.00,
54.00, 55.00, 56.00, 57.00, 58.00, 59.00, 60.00, 61.00,
62.00, 63.00, 64.00, 65.00, 66.00, 67.00, 68.00, 69.00,
70.00, 71.00, 72.00, 73.00, 74.00, 75.00, 76.00, 77.00,
78.00, 79.00, 80.00, 81.00, 82.00, 83.00, 84.00, 85.00,
86.00, 87.00, 88.00, 89.00, 90.00 ;
}