⇐ ⇒

[CF-metadata] curvilinear cartesian coordinates case

From: John Caron <caron>
Date: Fri, 01 Dec 2006 17:53:57 -0700

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

This archive was generated by hypermail 2.3.0 : Tue Sep 13 2022 - 23:02:40 BST

⇐ ⇒