From a8f508914cb4ec229efb43692b3d5bb1127b56bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20B=C3=A4rring?= Date: Tue, 22 Feb 2022 11:01:14 +0100 Subject: [PATCH 1/4] Somewhat restructured ch03, added sentence to appc and footnote to appe --- appc.adoc | 2 ++ appe.adoc | 7 ++++--- ch03.adoc | 15 ++++++++++----- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/appc.adoc b/appc.adoc index 95e337d1..6fbe093f 100644 --- a/appc.adoc +++ b/appc.adoc @@ -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. diff --git a/appe.adoc b/appe.adoc index e98eed48..f22b7f09 100644 --- a/appe.adoc +++ b/appe.adoc @@ -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 \ No newline at end of file diff --git a/ch03.adoc b/ch03.adoc index 369cd5fd..3d69fd26 100644 --- a/ch03.adoc +++ b/ch03.adoc @@ -34,16 +34,21 @@ 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 <>. [[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 <> and <>. +==== 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 <>). -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 <>), **`long_name`** (see <>), or **`cell_methods`** (see <>) 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, 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 <>), **`long_name`** (see <>), or **`cell_methods`** (see <>) 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. From d05c3224349a0f2c1042bf5c89066c3f664b9374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20B=C3=A4rring?= Date: Thu, 24 Feb 2022 16:36:49 +0100 Subject: [PATCH 2/4] Split long sentence --- ch03.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch03.adoc b/ch03.adoc index 3d69fd26..1180f2d3 100644 --- a/ch03.adoc +++ b/ch03.adoc @@ -48,7 +48,7 @@ The units `level`, `layer`, and `sigma_level` are allowed for dimensionless vert 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, 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 <>), **`long_name`** (see <>), or **`cell_methods`** (see <>) attributes are also present. That is, they cannot be analysed reliably without explicit knowledge of the measurement type. +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 <>), or **`cell_methods`** (see <>) 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. From fd03744092cf6b2078294aa39c5c0d58faa3c15f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20B=C3=A4rring?= Date: Thu, 24 Feb 2022 16:40:37 +0100 Subject: [PATCH 3/4] Divided section for increased readability --- ch03.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/ch03.adoc b/ch03.adoc index 1180f2d3..a52b7bce 100644 --- a/ch03.adoc +++ b/ch03.adoc @@ -48,6 +48,7 @@ The units `level`, `layer`, and `sigma_level` are allowed for dimensionless vert 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 <>), or **`cell_methods`** (see <>) 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. From c390c1f3732c6e726ebc603f34db37d482e24c87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20B=C3=A4rring?= Date: Thu, 24 Feb 2022 16:45:03 +0100 Subject: [PATCH 4/4] Again divided section into: Background, Current situation, Solution --- ch03.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/ch03.adoc b/ch03.adoc index a52b7bce..d65814f0 100644 --- a/ch03.adoc +++ b/ch03.adoc @@ -50,6 +50,7 @@ Temperature is special, compared with other quantities, in that it is a quantity 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 <>), or **`cell_methods`** (see <>) 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.