Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Somewhat restructured ch03, added sentence to appc and footnote to appe #3

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions appc.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ the values supplied are for one standard error. If the values supplied
are for some multiple of the standard error, the `standard_error`
ancillary variable should have an attribute
**`standard_error_multiplier`** stating the multiplication factor.
Note that for temperature the `standard error` is always a "difference" quantity,
even if the "parent data" is a "position-on-scale" quantity (cf. Section 3.1.1).

| `status_flag` |
| Flag values indicating the quality or other status of the data values.
Expand Down
7 changes: 4 additions & 3 deletions appe.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,16 @@ respect to the specified dimension.

| `mode` | __u__ | Mode (most common value)

| `range` | __u__ | Absolute difference between maximum and minimum
| `range` | __u__ | Absolute difference between maximum and minimum^(*)^

| `root_mean_square` | __u__ | Root mean square (RMS)

| `standard_deviation` | __u__ | Standard deviation
| `standard_deviation` | __u__ | Standard deviation^(*)^

| `sum_of_squares` | __u^2^__ | Sum of squares

| `variance` | __u^2^__ | Variance
| `variance` | __u^2^__ | Variance^(*)^
|===============


^(*)^ For temperature quantities these methods imply a change from a "position_on_scale" quantity to a "difference" quantity. cf Section 3.1.1 for details
17 changes: 12 additions & 5 deletions ch03.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,23 @@ Udunits recognizes the following prefixes and their abbreviations.
The Udunits syntax that allows scale factors and offsets to be applied to a unit is not supported by this standard. The application of any scale factors or offsets to data should be indicated by the **`scale_factor`** and **`add_offset`** attributes. Use of these attributes for data packing, which is their most important application, is discussed in detail in <<packed-data>>.

[[special-units, Section 3.1.1, "Special Units"]]
=== Special Units
=== Units and quantities that requires special considerations

==== Degrees (angular units)

The COARDS convention prohibits the unit `degrees` altogether, but this unit is not forbidden by the CF convention because it may in fact be appropriate for a variable containing, say, solar zenith angle. The unit `degrees` is also allowed on coordinate variables such as the latitude and longitude coordinates of a transformed grid. In this case the coordinate values are not true latitudes and longitudes which must always be identified using the more specific forms of `degrees` as described in <<latitude-coordinate>> and <<longitude-coordinate>>.

==== Dimensionless vertical coordinates

The units `level`, `layer`, and `sigma_level` are allowed for dimensionless vertical coordinates to maintain backwards compatibility with COARDS. These units are not compatible with Udunits and are deprecated by this standard because conventions for more precisely identifying dimensionless vertical coordinates are introduced (see <<dimensionless-vertical-coordinate>>).

A temperature quantity (including a power of temperature) either refers to a "position-on-scale" quantity (i.e. how warm an object is in relation to the origin of the scale), or to a "difference" quantity (i.e. how much warmer one object is in relation to another object).
The position-on-scale quantity is a difference between one temperature quantity and a fixed origin that is intrinsic to the definition of the temperature scale itself; and the difference quantity is the difference between two temperature quantities only depending on their relative position on a measurement scale.
Discerning between these two types of temperature measurement is not possible from the **`units`** attribute alone, for which all valid Udunits temperature values (such as `K`, `degree_Celsius`, `K2`, etc.) could refer to either type, and may not be possible even when the **`standard_name`** (including any standard name modifiers, see <<standard-name>>), **`long_name`** (see <<long-name>>), or **`cell_methods`** (see <<cell-methods>>) attributes are also present.
Temperature is special, compared with other quantities, in that it is a quantity that is most commonly stored using measurement scales with different offsets, and so cannot be analysed reliably without explicit knowledge of the measurement type.
==== Temperature units

Temperature is special, compared with other quantities, in that it is a quantity that is most commonly stored using measurement scales with different offsets. Consequently, it is important to distinguish when a temperature unit (including a power of temperature) either refers to a "position-on-scale" quantity (i.e. how warm an object is in relation to the origin of the scale), or to a "difference" quantity (i.e. how much warmer one object is in relation to another object).
The position-on-scale quantity is a difference between one temperature quantity and a fixed origin that is intrinsic to the definition of the temperature scale itself (i.e. the offset is essential for interpreting the unit); and the difference quantity is the difference between two temperature quantities only depending on their relative position on a measurement scale (i.e. the offset is not important for interpreting the unit).

Discerning between these two types of temperature measurement is not possible from the **`units`** attribute alone. All the valid Udunits temperature values (such as `K`, `degree_Celsius`, `K2`, etc.) could refer to either type. It may not be possible even when the **`standard_name`** (including any standard name modifiers, see <<standard-name>>), or **`cell_methods`** (see <<cell-methods>>) attributes are also present. That is, they cannot be analysed reliably without explicit knowledge of the measurement type.

Therefore, whenever a (power of) temperature quantity is stored, it is a requirement to also include the **`temperature_context`** attribute which indicates which measurement type applies, with a string value of `position_on_scale` or `difference`.
This attribute was introduced in CF-1.10, and for versions prior to CF-1.10 it may not be possible to ascertain the temperature measurement type from the available metadata.

Expand Down