Jonathan Gregory wrote:
> Dear Brian and John
>
>
>>John proposed a new object ...
>>
>>That's not using the grid_mapping variable to point to the projection
>>coordinates. It's defining a new object that contains both the projection
>>coordinates and the grid mapping.
>
>
> Oh, I see. Sorry, I jumped to a conclusion, but now I have reread what John
> said I get the point. We have three options:
>
> John's
>
> int Dutch_CoordSystem;
> Dutch_CoordSystem:coordinates = "dutch_x dutch_y";
> Dutch_CoordSystem:grid_mapping = "EPSG19914";
> int German_CoordSystem;
> German_CoordSystem:coordinates = "german_x german_y";
> Dutch_CoordSystem:grid_mapping = "EPSG16362";
> float velocity(time,layer,m,n);
> velocity:coordinateSystems = "Dutch_CoordSystem Belgian_CoordSystem" ;
> velocity:coordinates="lat lon";
> float dutch_x(m,n);
> float dutch_y(m,n);
> float german_x(m,n);
> float german_y(m,n);
>
> mine
>
> float velocity(time,layer,m,n);
> velocity:grid_mapping="dutch_x: dutch_y: EPSG19914 german_x: german_y: EPSG16362";
> velocity:coordinates="lat lon";
> float dutch_x(m,n);
> float dutch_y(m,n);
> float german_x(m,n);
> float german_y(m,n);
>
> Bert's
>
> float velocity(time,layer,m,n);
> velocity:coordinates="lat lon dutch_x dutch_y german_x german_y";
> float dutch_x(m,n);
> dutch_x:grid_mapping="EPSG19914";
> float dutch_y(m,n);
> dutch_y:grid_mapping="EPSG19914";
> float german_x(m,n);
> german_x:grid_mapping="EPSG16362";
> float german_y(m,n);
> german_y:grid_mapping="EPSG16362";
>
> I appreciate that John's scheme, by introducing an extra indirection, saves
> repeating the association of the grid_mapping and the projection variables,
> which must be done on every data variable in my scheme, and on every
> projection variable in Bert's. I'm not convinced that the extra complexity is
> really needed to solve this problem, though.
Hi Jonathon:
Thanks for summarizing the options.
1) One thing to note, in my proposal, you no longer put the coordinates attribute on the data variables, eg dont use:
velocity:coordinates="lat lon";
rather:
int German_CoordSystem;
German_CoordSystem:coordinates = "german_x german_y lat lon";
German_CoordSystem:grid_mapping = "EPSG16362";
this is because the set of coordinate variables is a property of the coordinate system, which you have now deffered to. In fact, you need to put all the coordinate variables on it, probably:
int German_CoordSystem;
German_CoordSystem:coordinates = "german_x german_y lat lon time z_coord";
German_CoordSystem:grid_mapping = "EPSG16362";
2) now that im looking at it, however, I like the way you wrote it, it basically means "im factoring out the horizontal part of the coordinate system, and pointing to it from each variable that uses it". So:
float velocity(time,layer,m,n);
velocity:coordinateSystems = "Dutch_CoordSystem German_CoordSystem" ;
velocity:coordinates="lat lon layer time";
int German_CoordSystem;
German_CoordSystem:coordinates = "german_x german_y";
German_CoordSystem:grid_mapping = "EPSG16362";
Means the data variable has 2 coordinate systems (lat lon layer time, german_x german_y) and (lat lon layer time, dutch_x dutch_y). Here I have explicitly listed all the coordinate variables, even if 1D.
The reason I like that is that we see model output with many different vertical coordinates for different variables, but all using the same horizontal coordinates/projection.
3) We need the standard_name = "projection_x", "projection_y", on any proposal, in order to know which is the x and which the y coordinate.
>
> Cheers
>
> Jonathan
> _______________________________________________
> CF-metadata mailing list
> CF-metadata at cgd.ucar.edu
> http://www.cgd.ucar.edu/mailman/listinfo/cf-metadata
Received on Fri Dec 01 2006 - 17:53:57 GMT