Re: ncdigest V1 #419

John Caron (
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
tries to somewhat formalize this in the language of projection

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
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".