From 492611b5abe93c9ea5b737ec58dee3ab14e12e6f Mon Sep 17 00:00:00 2001 From: JonathanGregory Date: Thu, 23 May 2024 20:36:31 +0100 Subject: [PATCH 1/6] Provide a convention for boundary variables for grids whose cells do not all have the same number of sides --- ch01.adoc | 2 ++ ch07.adoc | 5 +++++ history.adoc | 1 + 3 files changed, 8 insertions(+) diff --git a/ch01.adoc b/ch01.adoc index 90a39158..d44b04c8 100644 --- a/ch01.adoc +++ b/ch01.adoc @@ -118,6 +118,8 @@ There is no relationship between the name of a tie point variable and the name(s time dimension:: A dimension of a netCDF variable that has an associated time coordinate variable. +vertex dimension:: The dimension of a boundary variable along which the vertices of each cell are ordered. + vertical dimension:: A dimension of a netCDF variable that has an associated vertical coordinate variable. === Overview diff --git a/ch07.adoc b/ch07.adoc index 4019a600..224a27bd 100644 --- a/ch07.adoc +++ b/ch07.adoc @@ -16,6 +16,11 @@ To represent cells we add the attribute **`bounds`** to the appropriate coordina The value of **`bounds`** is the name of the variable that contains the vertices of the cell boundaries. We refer to this type of variable as a "boundary variable." __A boundary variable will have one more dimension than its associated coordinate or auxiliary coordinate variable.__ The additional dimension should be the most rapidly varying one, and its size is the maximum number of cell vertices. +We refer to the additional dimension as the "vertex dimension". +For one-dimensional coordinate variables, the size of the vertex dimension is always two. +For multidimensional coordinate variables, its size is always greater than two. +For grids constructed from cells that do not all have the same number of sides (e.g., a grid with some rectangular cells and some triangular cells), the boundary variable must be dimensioned to accommodate the maximum number of cell vertices. +For cells with fewer than the maximum number of vertices, the unneeded elements should appear as the last elements in the vertex dimension and should be assigned the **`_FillValue`**. A boundary variable inherits the values of some attributes from its parent coordinate variable. If a coordinate variable has any of the attributes marked "BI" (for "inherit") in the "Use" column of <>, they are assumed to apply to its bounds variable as well. diff --git a/history.adoc b/history.adoc index f2c78a93..b4287117 100644 --- a/history.adoc +++ b/history.adoc @@ -7,6 +7,7 @@ === Working version (most recent first) +* {issues}163[Issue #163]: Provide a convention for boundary variables for grids whose cells do not all have the same number of sides. * {issues}515[Issue #515]: Clarify the recommendation to use the convention of 4.3.3 for parametric vertical coordinates, because the previous wording caused confusion. * {issues}511[Issue #511]: Appendix B: New element in XML file header to record the "first published date" * {issues}509[Issue #509]: In exceptional cases allow a standard name to be aliased into two alternatives From 57f70d97a9859f99db3a4d105b382a60ea0054c9 Mon Sep 17 00:00:00 2001 From: JonathanGregory Date: Thu, 23 May 2024 20:54:01 +0100 Subject: [PATCH 2/6] conformance, should -> must --- ch07.adoc | 6 +++--- conformance.adoc | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ch07.adoc b/ch07.adoc index 224a27bd..d5287c03 100644 --- a/ch07.adoc +++ b/ch07.adoc @@ -15,10 +15,10 @@ For cases when data pertain to geospatial features with highly variable geometry To represent cells we add the attribute **`bounds`** to the appropriate coordinate variable(s). The value of **`bounds`** is the name of the variable that contains the vertices of the cell boundaries. We refer to this type of variable as a "boundary variable." -__A boundary variable will have one more dimension than its associated coordinate or auxiliary coordinate variable.__ The additional dimension should be the most rapidly varying one, and its size is the maximum number of cell vertices. +__A boundary variable must have one more dimension than its associated coordinate or auxiliary coordinate variable.__ The additional dimension must be the most rapidly varying one, and its size is the maximum number of cell vertices. We refer to the additional dimension as the "vertex dimension". -For one-dimensional coordinate variables, the size of the vertex dimension is always two. -For multidimensional coordinate variables, its size is always greater than two. +For one-dimensional coordinate variables, the size of the vertex dimension must be two. +For multidimensional coordinate variables, its size must be greater than two. For grids constructed from cells that do not all have the same number of sides (e.g., a grid with some rectangular cells and some triangular cells), the boundary variable must be dimensioned to accommodate the maximum number of cell vertices. For cells with fewer than the maximum number of vertices, the unneeded elements should appear as the last elements in the vertex dimension and should be assigned the **`_FillValue`**. diff --git a/conformance.adoc b/conformance.adoc index fddd28ea..6ffef5fb 100644 --- a/conformance.adoc +++ b/conformance.adoc @@ -356,6 +356,7 @@ If there are two dimensions, the leading dimension (CDL order) must match one of * The type of the **`bounds`** attribute is a string whose value is a single variable name. The specified variable must exist in the file. * A boundary 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. +The trailing dimension must be of size two if the associated variable is one-dimensional, and of size greater than two if the associated variable has more than one dimension. * A boundary variable must be a numeric data type. * A boundary variable can only have inheritable attributes, i.e. any of those marked "BI" in the "Use" column of http://cfconventions.org/cf-conventions/cf-conventions.html#attribute-appendix[Appendix A], if they are also present on its parent coordinate variable. * If a boundary variable has an inheritable attribute then its data type and its value must be exactly the same as the parent variable's attribute. From b4601b98657b55d6f28e60dbe27f400039797470 Mon Sep 17 00:00:00 2001 From: Jonathan Gregory Date: Tue, 2 Jul 2024 18:07:50 +0100 Subject: [PATCH 3/6] rephrasing --- ch07.adoc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ch07.adoc b/ch07.adoc index d5287c03..73befe96 100644 --- a/ch07.adoc +++ b/ch07.adoc @@ -15,12 +15,12 @@ For cases when data pertain to geospatial features with highly variable geometry To represent cells we add the attribute **`bounds`** to the appropriate coordinate variable(s). The value of **`bounds`** is the name of the variable that contains the vertices of the cell boundaries. We refer to this type of variable as a "boundary variable." -__A boundary variable must have one more dimension than its associated coordinate or auxiliary coordinate variable.__ The additional dimension must be the most rapidly varying one, and its size is the maximum number of cell vertices. +__A boundary variable must have one more dimension than its associated coordinate or auxiliary coordinate variable.__ We refer to the additional dimension as the "vertex dimension". -For one-dimensional coordinate variables, the size of the vertex dimension must be two. -For multidimensional coordinate variables, its size must be greater than two. -For grids constructed from cells that do not all have the same number of sides (e.g., a grid with some rectangular cells and some triangular cells), the boundary variable must be dimensioned to accommodate the maximum number of cell vertices. -For cells with fewer than the maximum number of vertices, the unneeded elements should appear as the last elements in the vertex dimension and should be assigned the **`_FillValue`**. +The vertex dimension must be the most rapidly varying one, and its size is the maximum number of cell vertices. +The vertex dimension must be of size two if the associated variable is one-dimensional, and of size greater than two if the associated variable has more than one dimension. +For grids constructed from cells that do not all have the same number of sides (e.g., a grid with some rectangular cells and some triangular cells), the vertex dimension must be at least as large as the maximum number of cell vertices. +For cells with fewer vertices than the size of vertex dimension, the unneeded elements should appear as the last elements in the vertex dimension and should be assigned the **`_FillValue`**. A boundary variable inherits the values of some attributes from its parent coordinate variable. If a coordinate variable has any of the attributes marked "BI" (for "inherit") in the "Use" column of <>, they are assumed to apply to its bounds variable as well. From b5a918ef587417b6eac51fc970ce6d32706f16cb Mon Sep 17 00:00:00 2001 From: Jonathan Gregory Date: Tue, 2 Jul 2024 18:09:40 +0100 Subject: [PATCH 4/6] fix conflict --- history.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/history.adoc b/history.adoc index b4287117..f596870e 100644 --- a/history.adoc +++ b/history.adoc @@ -8,6 +8,7 @@ === Working version (most recent first) * {issues}163[Issue #163]: Provide a convention for boundary variables for grids whose cells do not all have the same number of sides. +* {issues}237[Issue #237]: Clarify that the character set given in section 2.3 for variable, dimension, attribute and group names is a recommendation, not a requirement. * {issues}515[Issue #515]: Clarify the recommendation to use the convention of 4.3.3 for parametric vertical coordinates, because the previous wording caused confusion. * {issues}511[Issue #511]: Appendix B: New element in XML file header to record the "first published date" * {issues}509[Issue #509]: In exceptional cases allow a standard name to be aliased into two alternatives From faf24699b523612951610fc28e92995ff2290aa0 Mon Sep 17 00:00:00 2001 From: Jonathan Gregory Date: Mon, 8 Jul 2024 14:40:42 +0100 Subject: [PATCH 5/6] _FillValue elements must be last --- ch07.adoc | 2 +- conformance.adoc | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ch07.adoc b/ch07.adoc index 73befe96..4011a507 100644 --- a/ch07.adoc +++ b/ch07.adoc @@ -20,7 +20,7 @@ We refer to the additional dimension as the "vertex dimension". The vertex dimension must be the most rapidly varying one, and its size is the maximum number of cell vertices. The vertex dimension must be of size two if the associated variable is one-dimensional, and of size greater than two if the associated variable has more than one dimension. For grids constructed from cells that do not all have the same number of sides (e.g., a grid with some rectangular cells and some triangular cells), the vertex dimension must be at least as large as the maximum number of cell vertices. -For cells with fewer vertices than the size of vertex dimension, the unneeded elements should appear as the last elements in the vertex dimension and should be assigned the **`_FillValue`**. +For cells with fewer vertices than the size of vertex dimension, the unneeded elements must appear as the last elements in the vertex dimension and must be assigned the **`_FillValue`**. A boundary variable inherits the values of some attributes from its parent coordinate variable. If a coordinate variable has any of the attributes marked "BI" (for "inherit") in the "Use" column of <>, they are assumed to apply to its bounds variable as well. diff --git a/conformance.adoc b/conformance.adoc index 6ffef5fb..b7adf315 100644 --- a/conformance.adoc +++ b/conformance.adoc @@ -357,6 +357,7 @@ If there are two dimensions, the leading dimension (CDL order) must match one of The specified variable must exist in the file. * A boundary 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. The trailing dimension must be of size two if the associated variable is one-dimensional, and of size greater than two if the associated variable has more than one dimension. +* Any elements of the boundary variable which contain the **`FillValue`** must form a consecutive block at the end of the trailing dimension. * A boundary variable must be a numeric data type. * A boundary variable can only have inheritable attributes, i.e. any of those marked "BI" in the "Use" column of http://cfconventions.org/cf-conventions/cf-conventions.html#attribute-appendix[Appendix A], if they are also present on its parent coordinate variable. * If a boundary variable has an inheritable attribute then its data type and its value must be exactly the same as the parent variable's attribute. From a81408c26ac6fef801cbaf9d87bed91bdd7e91a8 Mon Sep 17 00:00:00 2001 From: JonathanGregory Date: Wed, 10 Jul 2024 08:31:37 +0100 Subject: [PATCH 6/6] clarification --- ch07.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch07.adoc b/ch07.adoc index 4011a507..c086e01b 100644 --- a/ch07.adoc +++ b/ch07.adoc @@ -17,7 +17,7 @@ The value of **`bounds`** is the name of the variable that contains the vertices We refer to this type of variable as a "boundary variable." __A boundary variable must have one more dimension than its associated coordinate or auxiliary coordinate variable.__ We refer to the additional dimension as the "vertex dimension". -The vertex dimension must be the most rapidly varying one, and its size is the maximum number of cell vertices. +The vertex dimension must be the last dimension in CDL order (the most rapidly varying dimension), and its size is the maximum number of cell vertices. The vertex dimension must be of size two if the associated variable is one-dimensional, and of size greater than two if the associated variable has more than one dimension. For grids constructed from cells that do not all have the same number of sides (e.g., a grid with some rectangular cells and some triangular cells), the vertex dimension must be at least as large as the maximum number of cell vertices. For cells with fewer vertices than the size of vertex dimension, the unneeded elements must appear as the last elements in the vertex dimension and must be assigned the **`_FillValue`**.