⇐ ⇒

[CF-metadata] identifying horizontal coordinate variables using the axis attribute

From: Jonathan Gregory <j.m.gregory>
Date: Wed, 28 Mar 2007 18:17:05 +0100

Dear all

I have posted my proposal to make the application of the axis attribute more
precise and useful (I hope) as a new thread on the Trac section of the PCMDI
CF website (under development). I have used the template Kyle has set up, and
Russ has kindly agreed to moderate the discussion. In fact I hope this will
be a fairly easy test case for the system being developed, since the discussion
mostly took place last year on the email list, and appeared to reach a happy
conclusion. However, please post further comments. I think it remains to be
seen what is the most convenient way to do this; you could add them to the
Trac ticket, or send them to the usual email list (this one). Trac should send
any new entries to the ticket out to the email list. However, something went
wrong when I opened the ticket, so the proposal itself did not get sent out by
email. I have therefore copied it below. You can read it at
http://cf-pcmdi.llnl.gov/trac/ticket/8

Best wishes

Jonathan


1. Title

Identifying horizontal coordinate variables using the axis attribute

2. Moderator

Russ Rew

3. Requirement

A method is needed to identify which are the horizontal coordinate axes of a
data variable

4. Initial Statement of Technical Proposal

The axis attribute of coordinate variables (1D, in the Unidata sense) is
optional. The value axis="X" can be used on a longitude coordinate variable
(CF 4.2), and axis="Y" on a latitude coordinate variable (CF 4.1)
(case-insensitive). CF is ambiguous about its use on other coordinate
variables. The introduction of CF 4 states that the axis attribute is
recommended for other kinds of spatial coordinate, but without giving an
interpretation to its values. However in CF 4.1 and 4.2 it is prohibited for
coordinate variables of rotated latitude and longitude. This proposal aims to
clarify the use of the axis attribute for horizontal coordinate variables.

The proposal is

* to modify the sentence "We attach no specific meaning ..." in the
introduction to CF 4 with: "The values X and Y for the axis attribute should
be used to identify horizontal coordinate variables. If both X- and Y-axis are
identified, X-Y-up should define a right-handed coordinate system
i.e. rotation from the positive X direction to the positive Y direction is
anticlockwise if viewed from above."

* to delete the prohibition on the axis attribute for rotated latitude in CF
4.1, and rotated longitude in CF 4.2.

* to append the following to the paragraph beginning "The use of coordinate
variables" in the introduction to CF 5: "The axis attribute is not allowed for
auxiliary coordinate variables. Auxiliary coordinate variables which lie on
the horizontal surface can be identified as such by their dimensions being
horizontal, which can in turn be inferred from their having an axis attribute
of X or Y, or from their units in the case of latitude and longitude (see
section 4)."

* to append the following to the paragraph beginning "If the coordinate
variables" in the introduction to CF 5: "The use of the axis attribute with
values X and Y is recommended for the coordinate variables (see section 4)."

5. Benefits

The axis attribute, thus redefined, provides a clear way to identify
horizontal coordinate variables and horizontal auxiliary coordinate variables.

As an example, we can modify the one in CF 5.2:

dimensions:
  xc = 128 ;
  yc = 64 ;
  lev = 18 ;
variables:
  float T(lev,yc,xc) ;
    T:long_name = "temperature" ;
    T:units = "K" ;
    T:coordinates = "lon lat" ;
  float xc(xc) ;
    xc:axis="X";
    xc:long_name = "x-coordinate in Cartesian system" ;
    xc:units = "m" ;
  float yc(yc) ;
    yc:axis="Y";
    yc:long_name = "y-coordinate in Cartesian system" ;
    yc:units = "m" ;
  float lev(lev) ;
    lev:long_name = "pressure level" ;
    lev:units = "hPa" ;
  float lon(yc,xc) ;
    lon:long_name = "longitude" ;
    lon:units = "degrees_east" ;
  float lat(yc,xc) ;
    lat:long_name = "latitude" ;
    lat:units = "degrees_north" ;

The axis attributes identify xc and yc as horizontal dimensions, and indicate
that xc-yc-up is right-handed. Because xc and yc are the dimensions of lon and
lat, these auxiliary coordinate variables are also implied to be
horizontal. In this case, we can also deduce that from the fact that they are
identifiable as longitude and latitude, but for a general 2D coordinate
variable it might not be obvious.

There is no backward incompatibility because the redefinition permits the axis
attribute in cases where it was formerly not allowed, but does not change its
meaning in existing cases.

6. Status Quo

With the CF standard as it is, latitude and longitude coordinate variables can
be identified by their units or standard_name, and they are well known to be
horizontal. Other horizontal coordinate variables can be identified only by
recognising specific standard_names e.g. those in Appendix F on map
projections. The axis attribute is a more general solution that works without
any knowledge of the possible choices of horizontal grid.
Received on Wed Mar 28 2007 - 11:17:05 BST

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

⇐ ⇒