#140: Clarifying the role of attributes on boundary variables.
-----------------------------+------------------------------------------
Reporter: davidhassell | Owner: cf-conventions@…
Type: enhancement | Status: new
Priority: medium | Milestone:
Component: cf-conventions | Version:
Resolution: | Keywords: boundary variable, attribute
-----------------------------+------------------------------------------
Comment (by davidhassell):
Dear Karl and Jonathan,
I agree with all of your suggestions and changes. I hope that I have
parsed them correctly and that we are indeed "there". The proposed
changes, in full, are now:
After the first paragraph of section 7.1 Cell Boundaries, add the
following three paragraphs and two examples:
Boundary variable attributes which determine the coordinate type
(`units`, `standard_name`, `axis` and `positive`) or those which affect
the interpretation of the array values (`units`, `calendar`, `leap_month`,
`leap_year` and `month_lengths`) must always agree exactly with the same
attributes of its associated coordinate, scalar coordinate or auxiliary
coordinate variable. To avoid duplication, however, it is recommended that
these are not provided to a boundary variable.
If a parametric coordinate variable with a `formula_terms` attribute
(section 4.3.2) also has a `bounds` attribute, its boundary variable must
have a `formula_terms` attribute too. In this case the same terms would
appear in both (as specified in Appendix D), since the transformation from
the parametric coordinate values to physical space is realized through the
same formula. For any term that depends on the vertical dimension,
however, the variable names appearing in the formula terms would differ
from those found in the `formula_terms` attribute of the coordinate
variable itself because the boundary variables for formula terms are two-
dimensional while the formula terms themselves are one-dimensional.
Whenever a `formula_terms` attribute is attached to a boundary
variable, the formula terms may additionally be identified using a second
method: variables appearing in the vertical coordinate's `formula_terms`
may be declared to be coordinate, scalar coordinate or auxiliary
coordinate variables, and those coordinates may have bounds attributes
that identify their boundary variables. In that case, the bounds attribute
of a formula terms variable must be consistent with the `formula_terms`
attribute of the boundary variable. Software digesting legacy datasets
(constructed prior to version 1.7 of this standard) may have to rely in
some cases on the first method of identifying the formula term variables
and in other cases, on the second. Starting from version 1.7, however, the
first method will be sufficient.
'''Example:''' Specifying `formula_terms` when a parametric coordinate
variable has bounds.
{{{
float eta(eta) ;
eta:long_name = "eta at full levels" ;
eta:positive = "down" ;
eta:standard_name = " atmosphere_hybrid_sigma_pressure_coordinate" ;
eta:formula_terms = "a: A b: B ps: PS p0: P0" ;
eta:bounds="eta_bnds" ;
float eta_bnds(eta, 2) ;
eta_bnds:formula_terms = "a: A_bnds b: B_bnds ps: PS p0: P0" ; // This
attribute is mandatory
float A(eta) ;
A:long_name = "'a' coefficient for vertical coordinate at full levels"
;
A:units = "Pa" ;
A:bounds = "A_bnds" ; // This attribute is included for the optional
second method
float B(eta) ;
B:long_name = "'b' coefficient for vertical coordinate at full levels"
;
B:units = "1" ;
B:bounds = "B_bnds" ; // This attribute is included for the optional
second method
float A_bnds(eta, 2) ;
float B_bnds(eta, 2) ;
float PS(lat, lon) ;
PS.units = "Pa" ;
float P0 ;
P0.units = "Pa" ;
float temp(eta, lat, lon) ;
temp:standard_name = "air_temperature" ;
temp:units = "K";
temp:coordinates = "A B" ; // This attribute is included for the
optional second method
}}}
The conformance document is to be changed as follows:
In section 7.1 Cell Boundaries:
Replace requirement "If a boundary variable has `units` or `standard_name`
attributes, they must agree with those of its associated variable." with
If a boundary variable has `units`, `standard_name`, `axis`,
`positive`, `calendar`, `leap_month`, `leap_year` or `month_lengths`
attributes, they must agree with those of its associated variable.
Add a new requirement (This requirement is backwards incompatible):
Starting with version 1.7, a boundary variable must have a
`formula_terms` attribute when it contains bounds for a parametric
vertical coordinate variable that has a `formula_terms` attribute. In this
case the same terms and named variables must appear in both except for any
term that depends on the vertical dimension, for which the variable name
appearing in the boundary variable's `formula_terms` attribute must differ
from that found in the `formula_terms` attribute of the coordinate
variable itself. The different variable must have the same dimensions as
its associated variable, plus have a trailing dimension (CDL order) for
the maximum number of vertices in a cell. If the named variable in the
`formula_terms` attribute of the vertical coordinate variable is a
coordinate, scalar coordinate or auxiliary coordinate variable then its
`bounds` attribute must be consistent with the equivalent term in
`formula_terms` attribute of the boundary variable.
Replace recommendation "Boundary variables should not have the
`_FillValue` or `missing_value` attributes." with
Boundary variables should not have the `_FillValue`, `missing_value`,
`units`, `standard_name`, `axis`, `positive`, `calendar`, `leap_month`,
`leap_year` or `month_lengths` attributes.
--
Ticket URL: <https://cf-trac.llnl.gov/trac/ticket/140#comment:26>
CF Metadata <http://cf-convention.github.io/>
CF Metadata