[CF-metadata] curvilinear cartesian coordinates case

John Caron caron at unidata.ucar.edu
Fri Dec 1 17:53:57 MST 2006



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


More information about the CF-metadata mailing list