[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Converting GRIB To NetCDF
- Subject: Re: Converting GRIB To NetCDF
- Date: Fri, 3 Dec 2004 10:25:04 -0700 (MST)
On Fri, 3 Dec 2004, Matthew Hanna wrote:
> Hi! I am trying to convert some GRIB files to NetCDF so I can use the
> data in my research project.
> I found the gribtonc program and its friends and was able to compile
> them and work with the example data.
hiya matthew,
i think the problem might be a old version of the decoders package, make
sure you have version decoders-3.0.6.tar.Z.
the files in question were downloaded/made cdls/converted to netcdf w/o
any problems. the platform was solaris 5.9 but that shouldn't matter. the
cdl's for the u/v winds are attached to the msg. if you want to have
both u/v winds in the same netcdf file, just include the v variable:
> float v(record,level,lat,lon) ;
> v:long_name = "v-component of wind at isobaric levels" ;
> v:GRIB_parameter_number = 34 ;
> v:GRIB_level_flag = 100 ;
> v:units = "m/s" ;
> v:_FillValue = -9999.f ;
> v:navigation = "nav" ;
in the u_winds.cdl file, might want to rename file too.
a method for created a cdl w/ all the variables needed, concate the grib
files together before running gribtocdl routine.
robb...
ps daryl these are grib 1 files not grib 2 files. Dec 6 there will be a
decoders release w/ grib 2 decoders and utilities in java, so it will be
platform independant.
>
> The data I am using for my research can be found at
> ftp://usgodae1.usgodae.org/pub/outgoing/fnmoc/models/
> in both the coamps and nogaps folders. Occasionally I get lucky and I
> am able to create a cdl file and a netcdf
> file but for the most part I just get cdl files that don't work.
>
> Example
> ---------------------------
> I download these files:
> ftp://usgodae1.usgodae.org/pub/outgoing/fnmoc/models/nogaps/2004/2004120100/US058GMET-GR1mdl.0058_0240_00000F0RL2004120100_0100_006000-000000wnd_ucmp
> ftp://usgodae1.usgodae.org/pub/outgoing/fnmoc/models/nogaps/2004/2004120100/US058GMET-GR1mdl.0058_0240_00000F0RL2004120100_0100_006000-000000wnd_vcmp
>
> I run gribtocdl to create the cdl files:
> $ gribtocdl
> US058GMET-GR1mdl.0058_0240_14400F0RL2004120100_0105_000100-000000wnd_ucmp
> > wnd_ucmp.cdl
> $ gribtocdl
> US058GMET-GR1mdl.0058_0240_14400F0RL2004120100_0105_000100-000000wnd_vcmp
> > wnd_vcmp.cdl
>
> In this case wnd_ucmp.cdl doesn't look right. It is missing the lat and
> lon information and perhaps a few other details however
> wnd_vcmp.cdl looks like it is correct.
>
> I run gribtonc to create the new netcdf files:
> US058GMET-GR1mdl.0058_0240_14400F0RL2004120100_0105_000100-000000wnd_ucmp
> Dec 03 14:53:37 gribtonc[1884]: Starting Up
> ncgen: wnd_ucmp.cdl line 6: dimension length must be positive
> ncgen: wnd_ucmp.cdl line 7: dimension length must be positive
> ncgen: wnd_ucmp.cdl line 9: dimension length must be positive
> ncgen: wnd_ucmp.cdl line 10: dimension length must be positive
> ncgen: wnd_ucmp.cdl line 11: dimension length must be positive
> ncgen: wnd_ucmp.cdl line 130: too many values for this variable, 0 >= 0
> Dec 03 14:53:37 gribtonc[1884]: can't run "ncgen -o wnd_ucmp.nc
> wnd_ucmp.cdl"
> Dec 03 14:53:37 gribtonc[1884]: can't create or size 0 output netCDF
> file wnd_ucmp.nc, exiting
> Dec 03 14:53:37 gribtonc[1884]: Exiting
> Dec 03 14:53:37 gribtonc[1884]: 0 WMO msgs, 0 GRIBs decoded, 0 written
>
> US058GMET-GR1mdl.0058_0240_14400F0RL2004120100_0105_000100-000000wnd_vcmp
> Dec 03 14:54:47 gribtonc[2068]: Starting Up
> Dec 03 14:54:47 gribtonc[2068]: 1: wrote v_fhg(0,0,*,*) to wnd_vcmp.nc
> Dec 03 14:54:47 gribtonc[2068]: EOF on input
> Dec 03 14:54:47 gribtonc[2068]: Exiting
> Dec 03 14:54:47 gribtonc[2068]: 1 WMO msgs, 1 GRIBs decoded, 1 written
>
> So wnd_ucmp.nc wasn't created but wnd_vcmp.nc was. wnd_vcmp.nc is
> exactly what I expected. These two files are supposed to go together.
> In fact, once I can get this working the two netcdf files will be merged
> into one file and will possibly include additional data from the same
> folder where these files were downloaded from.
>
> If it helps I believe these GRIB files were created using GrADS.
>
> Can someone please help me figure this out?
>
> Thanks!
> Matthew Hanna
>
===============================================================================
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
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)
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 u(record,level,lat,lon) ;
u:long_name = "u-component of wind at isobaric levels" ;
u:GRIB_parameter_number = 33 ;
u:GRIB_level_flag = 100 ;
u:units = "m/s" ;
u:_FillValue = -9999.f ;
u:navigation = "nav" ;
// global attributes
:history = "2004-12-03 09:47:55 - 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 = 600.0 ;
model_id = 58 ;
valtime_offset = 0 ;
// 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 ;
}
netcdf Replace_with_model_name{
dimensions:
record = UNLIMITED ; // (reference time, forecast time)
lat = 181 ; // latitude
lon = 360 ; // longitude
level = 1 ; // isobaric levels
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)
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 v(record,level,lat,lon) ;
v:long_name = "v-component of wind at isobaric levels" ;
v:GRIB_parameter_number = 34 ;
v:GRIB_level_flag = 100 ;
v:units = "m/s" ;
v:_FillValue = -9999.f ;
v:navigation = "nav" ;
// global attributes
:history = "2004-12-03 10:07:24 - 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 = 600.0 ;
model_id = 58 ;
valtime_offset = 0 ;
// 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 ;
}