opengeospatial / ogcapi-coverages

OGC API - Coverages draft specification
https://ogcapi.ogc.org/coverages
Apache License 2.0
22 stars 13 forks source link

disallow null as extent boundary value #136

Closed pebau closed 2 years ago

pebau commented 3 years ago

In the OAPI-Common extent definition null values are allowed (although only by way of an informal comment in the description). For a coverage this means that the domain extent in a direction containing an "unbounded" is undefined. This will break coverage applications.

It has been discussed that this describes the potential extent, but then this acts more like a "coverage type definition", which is different from the concrete instance's extent. The extent property as it stands in any case defines the concrete extent.

Therefore, OAPI-Coverages should contain a restricting requirement that in a coverage view (or context, whatever it will be called) a null extent value is not admitted.

PS: On a side note, if "null" wants to express "unbounded" then this is a hack, the corresponding value should be "unbounded".

jerstlouis commented 3 years ago

Concerns discussed in the call today (2021-07-28):

The hope is that this extent/envelope definition, including description of dimensions beyond the 2-3 spatial and 1 temporal, be a conformance class defined in OGC API - Common - Part 2: Geospatial data (see https://github.com/opengeospatial/ogcapi-common/issues/91, https://github.com/opengeospatial/ogcapi-common/issues/167, https://github.com/opengeospatial/ogcapi-common/issues/274). Perhaps a recommendation to avoid null values would satisfy the concerns? We could perhaps also avoid null values for the additional dimensions, since Features seems to only allow null values specifically for the temporal dimension already.

See also https://github.com/opengeospatial/ogcapi-common/issues/196 .

pebau commented 3 years ago

is there anywhere an exact specification of what such a null value means for the concrete object? How does it behave on subsetting? on bbox search? etc.

jerstlouis commented 3 years ago

@pebau

For Features / Common, there is only this where it just says that it means "an open interval". However as I highlighted in https://github.com/opengeospatial/ogcapi-common/issues/196, what is meant is probably an infinite interval, since an open interval has a different meaning in mathematic. The example in Features is the end time being set to null, presumably because the features are live data which are constantly updated and thefore constantly retrieving the collection description to update the upper bound would be impractical.

In CIS, I just found out section 17.4 pertaining to the coverage-partitioning class where it says in 17.4 Domain set constraints:

The sub-coverage domain sets, as well as single direct positions, must be non-overlapping (considering all axes plus the range components) and properly contained in the super-cover­age; missing boundary values are represented as a null value. Such null values can be used whenever the actual extent of the super-coverage is not known in the super-coverage itself, such as in timeseries where further timeslices can be appended at any time. The representation of such a null value is defined in the concrete encodings.

That CIS meaning actually seems fully consistent with the use of null in the extent / envelope.

It should probably not be limited to the coverage-partitioning class, since implementations can internally have a concept of scenes/images, without exposing the coverage as a partioned coverage.

jerstlouis commented 2 years ago

SWG 2022-02-16: Closing this issue because the definition of the Collection extent is defined by OGC API - Common - Part 2: Geospatial data. There is also already an example where null is used with the same meaning in CIS for coverage-partitioning, and the interpretation is clear, therefore this should not cause any issues for OGC API - Coverages. It also does not affect in any way the CIS specification/encoding.