Re: 2D coordinate variables

Hi John and John,

It's proposal season and things are hectic ... but I was driven by curiosity to
see how the two suggested file layouts would behave in Ferret.

Indeed, sample_1.cdf, which looks clean but violates the NetCDF conventions by
matching a dimension name to a 2D variable gives this result (edited):

yes? use sample_1
 *** Unknown error code:       500 ***
             Expected: lon Found: not a 1D variable

I guess that qualifies as "croaking" -- or at least "spitting up".

The alternative strategy, ref_atts.cdf, which uses attributes to point out the
connections, works fine and is quite usable in Ferret. But, of course, the
automatic connections between the variable and its coordinate system are lost.

(In Ferret V.5 you can give the command

        yes? SHADE/K=1 MYDATA[T=whatever], LONARR, LATARR

This is a human-created connection between the variables ... but it will give
you the plot on the curvilinear coordinate system -- and it fits well into the
proposed styles.)

        - steve

> =====================================================================
> netcdf sample_1 {
> dimensions:
>         lon = 4 ;
>         lat = 3 ;
>         lev = 2 ;
>         time = UNLIMITED ; // (1 currently)
> variables:
>         float lon(lat,lon) ;
>         float lat(lat,lon) ;
>         float lev(lev) ;
>         double time(time) ;
>       float mydata(time, lev, lat, lon) ;
>
> data:
>
>  lev = 1000, 2000 ;
>
>  time = 24 ;
>
>  lon = 10, 20, 30, 40,
>        11, 21, 31, 41,
>        12, 22, 32, 42 ;
>
>  lat = 1.0, 2.0, 3.0, 4.0,
>        1.1, 2.1, 3.1, 4.1,
>        1.2, 2.2, 3.2, 4.2 ;
>
>  mydata = 1,2,3,4,
>           5,6,7,8,
>         9,10,11,12,
>         13,14,15,16,
>         17,18,19,20,
>         21,22,23,24 ;
> }

=====================================================================
netcdf ref_atts {
dimensions:
        ni = 4 ;
        nj = 3 ;
        lev = 2 ;
        time = UNLIMITED ; // (1 currently)
variables:
        float lev(lev) ;
        double time(time) ;
        float mydata(time, lev, nj, ni) ;  // this def'n retains 4-D shape
           mydata:nj = "latarr";   // => get latitudes from variable "latarr"
           mydata:ni = "lonarr";   // => get longitudes from variable "lonarr"
        float latarr(ni,nj) ;    // you'll have to be smart enuough to realize
        float lonarr(ni,nj) ;    // how to interpret this (ie, from its shape)

data:

 lev = 1000, 2000 ;

 time = 24 ;

 lonarr = 10, 20, 30, 40,
          11, 21, 31, 41,
          12, 22, 32, 42 ;

 latarr = 1.0, 2.0, 3.0, 4.0,
          1.1, 2.1, 3.1, 4.1,
          1.2, 2.2, 3.2, 4.2 ;

 mydata = 1,2,3,4,
          5,6,7,8,
          9,10,11,12,
          13,14,15,16,
          17,18,19,20,
          21,22,23,24 ;
}



-- 

                |  NOAA/PMEL               |  ph. (206) 526-6080  
Steve Hankin    |  7600 Sand Point Way NE  |  FAX (206) 526-6744
                |  Seattle, WA 98115-0070  |  hankin@xxxxxxxxxxxxx

  • 1997 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: