Re: ncdigest V1 #419

John Caron (caron@ucar.edu)
Thu, 07 Aug 1997 10:53:15 -0600

Harvey DAVIES wrote:

> > >   8. correlations, using a dimension more than once:
> > >       precip(time, npoints)
> > >       precip.correlation( npoints, npoints)
> > >           lat(npoints)
> > >           lon(npoints)
> >
> >   Your solution:
> > >       - will need some notation not yet formally proposed, eg:
> > >           :coordinates = "lat(npoints,) lon(npoints,) lat(,npoints)
> >   My solution:
> >       Not applicable..."correlation" does not possess "coordinates" the
> >       way we think of them.  [rest deleted]
> 
> I just want to emphasise my agreement by pointing out that one could
> equally well be considering correlations between different variables at
> the same station.  This is a little nasty in that you need a data matrix
> with different units of measure for each column!  E.g. say we have matrix
>          data(time,var)
> where
> var=0 is annual precipitation,
> var=1 is annual mean temperature,
> var=2 is annual mean relative-humidity,
> etc.
> 
> Then  corr(var,var) is correlation matrix.
> So corr(0,2) is correlation between variables:
> 1. annual precipitation
> and
> 2. annual mean relative-humidity.
> 
> You could even combine both stations and variables.  E.g. start with data array
>          data(time,var,station)
> and calculate 4D correlation array corr(var,station,var,station).
> So corr(0,5,2,9) is correlation between variables:
> 1. annual precipitation at station 5
> and
> 2. annual mean relative-humidity at station 9.

I would propose a coordinate system for the first example to be
	corr:coordinates = "var_name(var,) var_name(,var)";
where var_name is the name of the variable. The somewhat obscure
"(var,)" and "(,var)" means use the first (second) var of corr(var,var).
My document at
 	http://acd.ucar.edu/~caron/definitions.html
tries to somewhat formalize this in the language of projection
functions.

The second case is similar:
	corr:coordinates = "var_name(var,,,) station_name(,station,,)
var_name(,,var,) station_name(,,,station)";

Here we have a 4D coordinate space; the values happen to be strings,
though they could be integer station numbers, or anything else. You
could define a 6D coordinate system if you wanted to geolocate the
stations by replacing station_name() with lat(), lon(), etc.

While the syntax is a little clumsy and might be improved on (I havent
actually proposed it), the concept that it embodies is clearly a
coordinate system in the sense I have defined in 
	http://acd.ucar.edu/~caron/proposals.html
I also would claim that it is essential to making the file
self-documenting, and that a human reading such a file would infer such
a coordinate system.

I guess I don't understand what you mean by "coordinate system".