[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Converting GRIB To NetCDF



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 ;

}