Open Geospatial Consortium |
Submission Date: TBD |
Approval Date: TBD |
Publication Date: TBD |
External identifier of this OGC® document: http://www.opengis.net/doc/BP/eo-data-access-bp |
Internal reference number of this OGC® document: 16-118 |
URL for this OGC® document: https://eox-a.github.io/eo-data-access-bp/ |
PDF version: https://eox-a.github.io/eo-data-access-bp/index.pdf |
Version: 0.0.1draft |
Category: OGC® Best Practice |
Editor: Stephan Meißl |
OGC® EO Data Access Best Practice |
Copyright notice |
Copyright © 2016, 2017 Open Geospatial Consortium |
To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ |
Warning |
This document is not an OGC Standard. This document is distributed for review and comment. This document is subject to change without notice and may not be referred to as an OGC Standard.
Recipients of this document are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.
Document type: OGC® Best Practice |
Document subtype: Profile |
Document stage: Draft proposed version |
Document language: English |
License Agreement
Permission is hereby granted by the Open Geospatial Consortium, ("Licensor"), free of charge and subject to the terms set forth below, to any person obtaining a copy of this Intellectual Property and any associated documentation, to deal in the Intellectual Property without restriction (except as set forth below), including without limitation the rights to implement, use, copy, modify, merge, publish, distribute, and/or sublicense copies of the Intellectual Property, and to permit persons to whom the Intellectual Property is furnished to do so, provided that all copyright notices on the intellectual property are retained intact and that each person to whom the Intellectual Property is furnished agrees to the terms of this Agreement.
If you modify the Intellectual Property, all copies of the modified Intellectual Property must include, in addition to the above copyright notice, a notice that the Intellectual Property includes modifications that have not been approved or adopted by LICENSOR.
THIS LICENSE IS A COPYRIGHT LICENSE ONLY, AND DOES NOT CONVEY ANY RIGHTS UNDER ANY PATENTS THAT MAY BE IN FORCE ANYWHERE IN THE WORLD.
THE INTELLECTUAL PROPERTY IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE DO NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE INTELLECTUAL PROPERTY WILL MEET YOUR REQUIREMENTS OR THAT THE OPERATION OF THE INTELLECTUAL PROPERTY WILL BE UNINTERRUPTED OR ERROR FREE. ANY USE OF THE INTELLECTUAL PROPERTY SHALL BE MADE ENTIRELY AT THE USER’S OWN RISK. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ANY CONTRIBUTOR OF INTELLECTUAL PROPERTY RIGHTS TO THE INTELLECTUAL PROPERTY BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM ANY ALLEGED INFRINGEMENT OR ANY LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR UNDER ANY OTHER LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH THE IMPLEMENTATION, USE, COMMERCIALIZATION OR PERFORMANCE OF THIS INTELLECTUAL PROPERTY.
This license is effective until terminated. You may terminate it at any time by destroying the Intellectual Property together with all copies in any form. The license will also terminate if you fail to comply with any term or condition of this Agreement. Except as provided in the following sentence, no such termination of this license shall require the termination of any third party end-user sublicense to the Intellectual Property which is in force as of the date of notice of such termination. In addition, should the Intellectual Property, or the operation of the Intellectual Property, infringe, or in LICENSOR’s sole opinion be likely to infringe, any patent, copyright, trademark or other right of a third party, you agree that LICENSOR, in its sole discretion, may terminate this license without any compensation or liability to you, your licensees or any other party. You agree upon termination of any kind to destroy or cause to be destroyed the Intellectual Property together with all copies in any form, whether held by you or by any third party.
Except as contained in this notice, the name of LICENSOR or of any other holder of a copyright in all or part of the Intellectual Property shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Intellectual Property without prior written authorization of LICENSOR or such copyright holder. LICENSOR is and shall at all times be the sole entity that may authorize you or any third party to use certification marks, trademarks or other special designations to indicate compliance with any LICENSOR standards or specifications. This Agreement is governed by the laws of the Commonwealth of Massachusetts. The application to this Agreement of the United Nations Convention on Contracts for the International Sale of Goods is hereby expressly excluded. In the event any provision of this Agreement shall be deemed unenforceable, void or invalid, such provision shall be modified so as to make it valid and enforceable, and as so modified the entire Agreement shall remain in full force and effect. No decision, action or inaction by LICENSOR shall be construed to be a waiver of any rights or remedies available to it.
- 1. Scope
- 1.1. Future Work
- 1.1.1. Cross Service Interaction
- 1.1.2. Coverage Collections
- 1.1.3. Condense Coverage Description Information
- 1.1.4. Explore Coverages by Dimension
- 1.1.5. WCS Masking Extension
- 1.1.6. Filtering via Common Query Language (CQL)
- 1.1.7. Integration of Access and Processing Services
- 1.1.8. Cloud Optimized GeoTIFF (COG)
- 1.1.9. Caching and tiling in WCS
- 1.1.10. Asynchronous Requests Extension
- 1.1.11. Summary
- 1.1. Future Work
- 2. Conformance
- 3. Normative references
- 4. Terms and definitions
- 5. Conventions
- 6. Introduction
- 7. Cross Service Interaction
- 8. rangeType Description Enhancements
- 8.1. Overview
- 8.2. Physical Properties
- 8.3. Data Types
- 8.4. Conversion from Data Types to Physical Properties
- 8.5. Hint for RGB Generation
- 8.6. Recommended definitions
- 8.6.1.
wcseo:dataSemantics
,swe:Quantity/@definition
, andswe:uom/@code
- 8.6.2.
wcseo:dataType
- 8.6.3.
wcseo:type
inwcseo:dataType2dataSemantics
andwcseo:RGBgenerationHint
- 8.6.4.
wcseo:bandSequence
- 8.6.5.
swe:DataRecord/@definition
- 8.6.6.
swe:field/@name
vs.swe:field/swe:Quantity/swe:identifier
- 8.6.7.
swe:nilValue/@reason
- 8.6.1.
- 8.7. Examples
- 9. Coverage Collections
- 10. Condense Coverage Description Information
- 11. WCS Masking Extension
- 12. Conclusions
- Annex A: Revision History
- Annex B: Bibliography
i. Abstract
This OGC Best Practice document provides conventions and recommendations on how to utilize OGC services to provide access to Earth Observation data.
Suggested additions, changes, and comments on this draft document are welcome and encouraged. Such suggestions may be submitted by email message or by making suggested changes in an edited copy of this document.
ii. Keywords
The following are keywords to be used by search engines and document catalogues.
ogcdoc, OGC document, eo, earth observation, data access, wcs, eo-wcs
iii. Preface
This OGC Best Practice document details proposed configuration and instantiation conventions and recommendations on how to utilize OGC services for access to Earth Observation (EO) data. These proposed conventions and recommendations have been developed in the European Space Agency (ESA) funded project Evolution of EO Online Data Access Services (EVO-ODAS).
It is defined how to utilize OGC’s Web Coverage Service (WCS) with EO products including generic conventions and recommendations for data and metadata mapping and conversions which are to be used in concrete tailorings for specific missions. It further considers how to link to other services like CSW, OpenSearch, WMS, WMTS, DS-EO, and WPS.
Suggested additions, changes, and comments on this draft document are welcome and encouraged. Such suggestions may be submitted by email message to the document editor or contributors named above, by creating an issue or a pull request at the GitHub repository, or by making suggested changes in an edited copy of this document.
The OGC ® Abstract Specification does not require any changes to accommodate the technical contents of this (part of this) document.
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.
Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.
iv. Submitting organizations
The following organizations submitted this Document to the Open Geospatial Consortium (OGC):
Organization name(s)
v. Submitters
All questions regarding this submission should be directed to the editor or the submitters:
Name | Affiliation |
---|---|
Stephan Meißl <stephan.meissl@eox.at> |
|
Peter Baumann <p.baumann@jacobs-university.de> |
|
Andrea Aime <andrea.aime@geo-solutions.it> |
1. Scope
This OGC Best Practice document details configuration and instantiation conventions for access to Earth Observation (EO) data. It defines how to utilize EO-WCS with EO products including generic conventions and recommendations for data and metadata mapping and conversion which are to be used in concrete tailoring for specific missions. It further considers how to link to other services like CSW, WMS, and WPS.
1.1. Future Work
Suggested additions, changes, and comments on this draft document are welcome and encouraged. Such suggestions may be submitted by email message to the document editor or contributors named above, by creating an issue or a pull request at the GitHub repository, or by making suggested changes in an edited copy of this document.
Presently, this document is a living document until officially submitted to OGC seeking formal adoption. Below is a list of items that are currently worked on or that could be worked on in future activities.
1.1.1. Cross Service Interaction
Detailing how to structure the data offered in the various services as well as how to explicitly link between those services. The OGC services under consideration are: OpenSearch, WMS, WMTS, WCS, and DS-EO.
There is a proposal available in the: "EVO-ODAS Recommendation on building a discovery interface using OpenSearch Technical Note (EVOODAS-TN-GEO-4112 version 1.3.0 from 2017-10-24)" developed in parallel by GeoSolutions on how to address this item for linking from OpenSearch to the other services.
For the other linking mechanisms a proposal still needs to be worked on.
1.1.2. Coverage Collections
Adding support for typical EO concepts like multi-resolution products or cloud masks to OGC services including registration in those services.
We propose to carefully review forthcoming CIS 1.1 against EO-WCS 1.1 particularly how far it accomplishes the grouping concepts proposed in there.
Further we propose to review the idea to derive DatasetSeries subtypes as described in the relevant section below.
Finally the Collection and Product Registration using a HTTP REST API for programmatic collection and product registration probably based on WCS-T needs to be drafted.
Product registration has been tested in the EVO-ODAS initiative by defining
the contents of a product.zip
package and sending them to the HTTP REST API
for registration. The contents are defined as:
-
product.json
- Product metadata in GeoJSON format. -
granules.json
- Metadata linking to the actual data again in GeoJSON `format. -
thumbnail.jpg
- An optional thumbnail image. -
metadata.xml
- Optional EO-O&M formated metadata. -
owsLinks.json
- Optional links to OGC services including template tags in `JSON format. -
description.html
- Optional description in HTML format.
1.1.3. Condense Coverage Description Information
Applying performance optimizations to facilitate and enable modern web based applications.
The OpenSearch SRU (Search and Retrieval via URL) extension needs to be
investigated for suitability. Alternatively the already drafted usage of a new
parameter named view
needs to be further pursued and elaborated.
Additionally the proposal for the item Explore Coverages by Dimension right below holds some interesting concepts also for this item like the GetHistogram request.
1.1.4. Explore Coverages by Dimension
There is a proposal for compact domain inspection and histogram generation available in the: "EVO-ODAS Multidimensional WMTS domain discovery Technical Note (EVOODAS-TN-GEO-4111_WMTS version 1.0 from 2016-05-23)". This work has already been presented to OGC’s WMS SWG. We propose to pursue the adoption of this document in the WMS SWG and in parallel validate and document the usage in the EO domain in the present Best Practice document.
1.1.5. WCS Masking Extension
Proposing support for retrieving non-rectangular subsets of coverages from WCS.
This needs to be drafted.
1.1.6. Filtering via Common Query Language (CQL)
Sometimes it would be interesting to being able to filter the responses from
certain services like for example OpenSearch and WMS in the same way. This
means that in the WMS GetMap request only those products are rendered that are
also returned via an OpenSearch query. A nice way to accomplish this is
allowing to use a specific parameter called for examples cql_filter
in all
services where this functionality is needed. The value of this parameter could
hold any valid CQL query and thus when using the same query on different
services accomplishes the desired behavior.
This solution has been tested and verified to some extend in the EVO-ODAS initiative. The next step would be formal documentation that could be part of this Best Practice document.
1.1.7. Integration of Access and Processing Services
Access and processing services both need to be located near the storage facilities to improve the performance when working on large EO time series. Thus these services are often available on top of the same data. It needs to be investigated how access services can effectively utilize and interface with the processing infrastructure and algorithms for user-defined information extraction. Furthermore a standardized procedure and interface is needed to reference EO products from discovery and access services as input to processing, so that a user can execute a process based on the results of a previous product search.
An idea to investigate is to use OpenSearch queries as exchange mechanism, i.e., to specify data input for WPS or WCS processing via WCPS.
1.1.8. Cloud Optimized GeoTIFF (COG)
We recommend to review a recent proposal named Cloud Optimized GeoTIFF (COG, http://www.cogeo.org) for suitability as an alternative way to download EO data.
1.1.9. Caching and tiling in WCS
For certain use cases it is desirable to optimally support clients as well as intermediate nodes on the web in caching responses to WCS requests. Caching is an implementation detail most HTTP software has natively build in using a certain set of HTTP headers to control behavior. However, this caching is not available when using query strings as in KVP encoding or POST requests. Thus, for caching, the invocation via REST potentially using JSON encoding is of high interest.
In OGC discussions about a Web Coverage Tile Service (WCTS) have started in a dedicated working group. Most likely this service will include considerations about caching which should be evaluated and harmonized.
1.1.10. Asynchronous Requests Extension
Support for asynchronous requests for example for large downloads via GetCoverage or uploads via InsertCoverage that potentially need long processing times on the server is currently not available in WCS.
We propose to review the simple approach taken in DS-EO for suitability and develop a WCS extension to support asynchronous requests. Note that as per OAB and agreed by WPS experts, a bridging WCS-WPS Application Profile is not a suitable option.
3. Normative references
The following normative documents contain provisions that, through reference in this text, constitute provisions of this specification. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply. For undated references, the latest edition of the normative document referred to applies.
OGC 06-121r9, OGC Web Services Common Standard, version 2.0
OGC 09-146r2, OGC® Coverage Implementation Schema (renamed from OGC® GML Application Schema - Coverages), version 1.0
OGC 09-110r4, OGC® WCS 2.0 Interface Standard- Core: Corrigendum, version 2.0
OGC 10-140r2, OGC® Web Coverage Service 2.0 Interface Standard - Earth Observation Application Profile, version 1.1
OGC 11-053r1, OGC® Web Coverage Service Interface Standard - CRS Extension, version 1.0 OGC 12-039, OGC® Web Coverage Service Interface Standard - Scaling Extension, version 1.0
OGC 12-040, OGC® Web Coverage Service Interface Standard - Range Subsetting Extension, version 1.0
OGC 12-049, OGC® Web Coverage Service Interface Standard - Interpolation Extension, version 1.0
OGC 09-147r3, OGC® Web Coverage Service 2.0 Interface Standard - KVP Protocol Binding Extension - Corrigendum, version 1.0
OGC 09-149r1, OGC® Web Coverage Service 2.0 Interface Standard - XML/SOAP Protocol Binding Extension, version 1.0
OGC 12-100r1, OGC® GML Application Schema - Coverages - GeoTIFF Coverage Encoding Profile, version 1.0
OGC 14-100r2, OGC® CF-netCDF 3.0 encoding using GML Coverage Application Schema, version 2.0
OGC 12-108, OGC® GML Application Schema - Coverages JPEG2000 Coverage Encoding Extension, version 1.0
OGC 10-157r4, OGC® Earth Observation Metadata profile of Observations & Measurements, version 1.1
OGC 07-063r1, OpenGIS® Web Map Services - Profile for EO Products, version 0.3.3
OpenSearch Parameter extension, version 1.0 Draft 2, accessed 2016-43-20, http://www.opensearch.org/Specifications/OpenSearch/Extensions/Parameter/1.0/Draft_2
OGC 13-026r8, OGC® OpenSearch Extension for Earth Observation, version 1.0
OGC 13-043, OGC Download Service for Earth Observation Products Best Practice, version 1.0
4. Terms and definitions
This document uses the standard terms defined in Subclause 5.3 of [OGC 06-121r9], which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word "shall" (not "must") is the verb form used to indicate a requirement to be strictly followed to conform to this standard.
For the purposes of this document, the following additional terms and definitions apply. An arrow "→" indicates that the following term is defined in this Clause.
4.2. Dataset Series
collection of → EO Coverages
4.3. EO Coverage
Rectified Grid → Coverage or Referenceable Grid → Coverage having an → EO Metadata record and a WGS84 footprint
4.4. EO Metadata
→ EO Coverage’s metadata record
4.5. Stitched Mosaic
→ EO Coverage composed from subsets of one or more co-referenced → Datasets
4.6. EO Product
An EO Product contains one or more related → EO Product Datasets plus metadata and optionally auxiliary data like → EO Product Quicklooks.
4.7. EO Product Dataset
One or more files each containing one or more → EO Coverages.
4.8. EO Product Quicklook
A visual representation of a usually reduced → EO Product Dataset encoded in an image format. The → EO Product Dataset may combine different bands.
4.9. Lineage record
Data structure documenting an operation that has been applied to the → Coverage it is part of
4.10. refers to
contains, in its → EO Metadata element as defined in [OGC 10-157r4], the → EO Metadata element of
5. Conventions
5.1. UML notation
Unified Modeling Language (UML) static structure diagrams appearing in this specification are used as described in Subclause 5.2 of OGC Web Services Common [OGC 06-121r9].
5.2. Data dictionary tables
The UML model data dictionary is specified herein in a series of tables. The contents of the columns in these tables are described in Subclause 5.5 of [OGC 06-121r9]. The contents of these data dictionary tables are normative, including any table footnotes.
5.3. Namespace prefix conventions
The following namespaces are used in this document. The prefix abbreviations used constitute conventions used here, but are not normative. The namespaces to which the prefixes refer are normative, however.
Prefix | Namespace URI | Description |
---|---|---|
xsd |
XML Schema namespace |
|
ows |
OWS Common 2.0 |
|
gml |
GML 3.2.1 |
|
gmlcov |
Coverages Implementation Schema 1.0 |
|
wcs |
WCS 2.0 |
|
eop |
Earth Observation Metadata Profile of Observations and Measurements |
|
opt |
Optical Earth Observation Metadata Profile of Observations and Measurements (extension of eop) |
|
sar |
SAR Earth Observation Metadata Profile of Observations and Measurements (extension of eop) |
|
wcseo |
WCS Application Profile - Earth Observation 1.1 |
|
scal |
http://www.opengis.net/wcs/scaling/1.0 (schema uses http://www.opengis.net/WCS_service-extension_scaling/1.0) |
WCS Scaling Extension |
int |
http://www.opengis.net/wcs/interpolation/1.0 (schema uses http://www.opengis.net/WCS_service-extension_interpolation/1.0 |
WCS Interpolation Extension |
crs |
WCS CRS Extension |
|
gmd |
ISO 19139 Metadata |
|
gmi |
http://standards.iso.org/iso/19115/-2/gmi/1.0 or http://www.isotc211.org/2005/gmi |
ISO 19139-2 Metadata |
mdb |
ISO 19115-3 Metadata |
5.4. Multiple representations
When multiple representations of the same information are given in a specification document these are consistent. Should this not be the case then this is considered an error, and the XML Schema shall take precedence.
6. Introduction
The Earth Observation Data Access Best Practice document at hand provides a detailed look at the access to EO data from an OGC perspective.
EO data is typically available as raster data or, in OGC terminology, as coverages. Thus the main OGC service relevant for the data access task is the Web Coverage Service (WCS) and its Earth Observation Application Profile (EO-WCS). Nonetheless further OGC services like the Web Map Service (WMS) and the Web Map Tile Service (WMTS) for visualization, the Catalog Service (CSW, OpenSearch) for discovery, or the Web Processing Service (WPS) for processing need to be taken into account in order to provide a well integrated solution for data consumers.
6.1. EO-WCS
The WCS 2.0 Earth Observation Application Profile (EO-WCS) [OGC 10-140r2] has been adopted by OGC defining a profile of WCS 2.0 for use on Earth Observation data. Naturally the present document focuses on EO-WCS but makes sure not to forget the surroundings to put it into context.
EO-WCS adds some concepts relevant for the EO domain on one side and some constraints on the other to the generic WCS:
-
Specific Earth Observation coverages (EO Coverage or Dataset) which have at least a footprint on Earth as well as a temporal validity extent. Each EO Coverage has to have an EO Metadata set [OGC 10-157r4] contained in its metadata which describes the coverage on hand on a higher semantic level.
-
Heterogeneous groupings or collections of Datasets into Dataset Series. This hierarchy allows for an efficient retrieval of metadata as well as data via the newly added DescribeEOCoverageSet and GetEOCoverageSet operations respectively.
Note
|
Although named Dataset Series this concept can and should be used to group together any Datasets. An example is to group together the Datasets stemming from a multi-resolution satellite image to form an EO Product. |
Note
|
Dataset Series may also include other Dataset Series as well as Stitched Mosaics |
Note
|
Dataset Series themselves are not coverages. |
-
Homogeneous groupings or collections of spatially non-overlapping subsets of Datasets into Stitched Mosaics.
Note
|
Stitched Mosaics are accessible themselves as coverages. |
-
DescribeEOCoverageSet operation allowing to retrieve metadata from collections applying spatial and/or temporal constraints.
-
GetEOCoverageSet operation allowing to retrieve data from collections applying spatial and/or temporal constraints.
-
Constraint mandatory WCS extensions.
One of the motivations to introduce the concept of Dataset Series is to limit the size of capabilities responses. They only need to report the identifiers of Dataset Series instead of summaries for all coverages available. Metadata for individual coverages is obtained using the new DescribeEOCoverageSet operation. This operation supports basic spatial and temporal searching as well as paging and thus stepping through the available data. Figure 1 shows the sequence to use EO-WCS.
6.2. Further relevant OGC Services
Before downloading data it is typically desired or at least useful to view the data and metadata. The OGC service standardized for data viewing is the Web Map Service (WMS). For the EO domain the Web Map Services - Profile for EO Products (EO-WMS) [07-063r1] has been designed. This WMS profile allows to browse through collections using the time parameter on one layer. Provided that the same data is available from the EO-WCS Dataset Series and the EO-WMS collection layer a combined exploitation of EO-WCS and EO-WMS as shown in Figure 2 is feasible.
Of course the WMS in this scenario can easily be replaced by the Web Map Tile Service (WMTS) specifically designed to improve the performance of WMS.
Further OGC standardized services to take into account are the Catalog Service (CSW, OpenSearch) for discovery, the Download Service for Earth Observation Products Best Practice (DS-EO) [13-043] as well as the Web Processing Service (WPS).
6.3. Topics Covered
Centered around EO-WCS this Best Practice document defines conventions and makes recommendations for the following topics:
-
Cross Service Interaction - Detailing how to structure the data offered in the various services as well as how to explicitly link between those services. The OGC services under consideration are: OpenSearch, WMS, WMTS, WCS, and DS-EO.
-
rangeType Description Enhancements - Designing usage and utilization of how to describe the range values of products.
-
Collection and Product Registration - Drafting an HTTP REST API for programmatic collection and product registration.
-
Grouping of Coverages and Associated Data - Adding support for typical EO concepts like multi-resolution products or cloud masks to OGC services.
-
Condense Coverage Description Information - Applying performance optimizations to facilitate and enable modern web based applications.
-
WCS Masking Extension - Proposing support for retrieving non-rectangular subsets of coverages from WCS.
7. Cross Service Interaction
7.1. Overview
In a number of scenarios and use cases it is necessary to be able to link from one service to another, holding e.g. different views on the same data. For example a user might first be presented with an RGB view on some data via WMS before downloading the actual data, that is, full bands via WCS. The question is, how is a client supposed to construct WCS requests for the same product just seen via WMS? Currently there is no standard way defined how to provide such links.
We propose to address the cross service interaction item by giving recommendations on how to structure the data offered in the various services as well as how to explicitly link between them. These explicit link recommendations include these services: OpenSearch, WMS, WMTS, WCS, and DS-EO.
An example for a data structuring recommendation is that for a collection there should be an EO-WMS layer and an EO-WCS DatasetSeries provided both reusing the ID of the collection. Thus clients know that a product viewed via a GetMap request with TIME parameter can be downloaded via a GetEOCoverageSet request using the same TIME parameter value.
First explicit linking recommendations are given in the "EVO-ODAS
Recommendation on building a discovery interface using OpenSearch Technical
Note (EVOODAS-TN-GEO-4112 version 1.3.0 from 2017-10-24)" by GeoSolutions. The
recommendation there is to use OWC ATOM offering
elements linking to the EO
Product in the respective service. Note that it also includes recommendations
on how to structure these links in order to link to a single product. In short
the recommendation is to link to a tailored Capabilities document like e.g.,
http://u.rl?service=WMS&acceptVersions=1.3.0&request=GetCapabilities&layers=S2
.
This covers all links from OpenSearch to any other service.
In the same way recommendations will be given from (EO-)WMS, WMTS, (EO-)WCS,
and DS-EO to the respective four other services using for example
wms:DataURL
, in the layer specification of the WMS Capabilities linking to
the corresponding EO-WCS DatasetSeries.
TODO
8. rangeType Description Enhancements
8.1. Overview
The rangeType component of a coverage describes the common data type all this coverage’s range values (such as pixels) share. In programming languages, this typically consists of differentiating between signed integer, unsigned integer, float, etc.
The rangeType concept, however, goes far beyond such classical data typing; adopting OGC O&M definitions, a comprehensive semantics description can be expressed indicating the range value type (which can be a classical data type such as "non-negative integer", but can also denote application semantics such as "radiation", "SAR") given by a URL, a definition of the unit of measure of the values, null values, and several more can be expressed.
In the basic, domain-agnostic OGC Coverage Implementation Schema (CIS, formerly known as GML Application Schema, GMLCOV) only these general items are defined. EO-WCS 1.1 extends this range type description, as it is used in WCS 2, with EO-specific detail information.
The extension includes elements to specify the measured physical properties
(wcseo:dataSemantics
), the data types of stored numbers (wcseo:dataType
),
the conversion from stored numbers to physical properties
(wcseo:dataType2dataSemantics
), as well as a hint for how to generate a RGB
version (wcseo:RGBgenerationHint
).
The additional range type information is provided via the
wcseo:rangeTypeExtension
element which is either included once for the whole
range type under the swe:DataRecord
element or separately for each channel,
often referred to as band, under each swe:DataRecord/swe:field/swe:Quantity
element. It may also be included in both locations for example when there is
one common RGB generation hint but the data conversion is specific for each
band.
The new elements are introduced one by one in the following sections and extensive examples are given below.
8.2. Physical Properties
The wcseo:rangeTypeExtension
element first includes the wcseo:dataSemantics
element of type anyURI
. This element holds an URI preferably resolving to a
description of the observed physical property like
http://sweet.jpl.nasa.gov/2.3/stateSpectralBand.owl#Visible
.
This element needs to be synchronized with the definition
attribute of each
swe:Quantity
element as well as the unit of measure defined via the code
attribute of the swe:uom
element again of each swe:Quantity
element.
XML instance examples included with the OGC schemas make use of
http://www.opengis.net/def/property/OGC/0/Radiance
for the definition
attribute which doesn’t resolve to something useful as expected. Another URI
used in OGC examples is
http://sweet.jpl.nasa.gov/2.0/physRadiation.owl#Radiance
. The latest version
of this at the time of writing is
http://sweet.jpl.nasa.gov/2.3/propEnergyFlux.owl#Radiance
.
It is suspected that the ESA funded projects RARE, SMAAD, OBEOS, and/or PRODTREES define URIs to describe physical properties as well. However, a web research didn’t bring up anything useful in this direction. Thus, for the time being, the examples given use the SWEET ontologies defined by the NASA Jet Propulsion Laboratory (http://sweet.jpl.nasa.gov).
An example for a unit of measure code is W.m-2.sr-1
as defined by
http://sweet.jpl.nasa.gov/2.3/reprSciUnits.owl#wattPerMeterSquaredPerSteradian
for radiance as used above.
SWE Common mandates the usage of units as defined by http://aurora.regenstrief.org/UCUM. However, this server is not accessible anymore and seems to be moved to http://unitsofmeasure.org/ucum.html.
Another physical property example is spectral radiance with URI
http://sweet.jpl.nasa.gov/2.3/propEnergyFlux.owl#SpectralRadiance
and unit of
measure code W.m-2.sr-1.nm-1
as defined by
http://sweet.jpl.nasa.gov/2.3/reprSciUnits.owl#wattPerMeterSquaredPerSteradianPerWavelength
.
8.3. Data Types
The wcseo:rangeTypeExtension
element further includes the wcseo:dataType
element, again of type anyURI
. This element again holds an URI preferably
resolving to a description of the data type. Examples of such URIs are
http://www.opengis.net/def/dataType/OGC/1.1/nonNegativeInteger
,
http://www.opengis.net/def/dataType/OGC/0/unsignedInt
, or
http://www.opengis.net/def/property/netcdf/1.0/unsignedShort
.
The data type is also implicitly provided via the actual coverage encoding.
However, to describe it explicitly in the wcseo:rangeTypeExtension
element
allows clients to retrieve it also in coverage descriptions and without need to
understand and parse the actual coverage encoding format.
8.4. Conversion from Data Types to Physical Properties
In order to be able to convert the stored numbers to the value of the actual
measured physical property the wcseo:dataType2dataSemantics
element is added
to the wcseo:rangeTypeExtension
. It describes the conversion via two real
number intervals and a type.
wcseo:intervalFrom
gives the interval of values stored in the coverage,
wcseo:intervalTo
specifies the interval the stored values are converted to,
and wcseo:type
defines which conversion method to use. Both intervals are
given via two real numbers and the type via anyURI.
The example below describes a linear transformation, as typically used for optical data, from \$[1,4095\$] to \$[390.0000,780.0000\$] i.e. for a value \$x\$ between \$1\$ and \$4095\$ the actual measured value \$y\$ is calculated as: \$y = 390 + (x-1) * (780-390) / (4095-1)\$
<wcseo:dataType2dataSemantics>
<wcseo:intervalFrom>1 4095</wcseo:intervalFrom>
<wcseo:intervalTo>390.0000 780.0000</wcseo:intervalTo>
<wcseo:type>http://sweet.jpl.nasa.gov/2.3/reprMathFunction.owl#Linear</wcseo:type>
</wcseo:dataType2dataSemantics>
Another example, given below, describes the inverse to a logarithmic transformation as for example sometimes used for radar data. The transformation of stored values \$x\$ in the interval \$[1,65535\$] to observed values \$y\$ in the interval \$[2,1000000000\$] is given by \$y = 2 * e^(((x-1)*(ln(1000000000)-ln(2)))/(65535-1))\$.
<wcseo:dataType2dataSemantics>
<wcseo:intervalFrom>1 65535</wcseo:intervalFrom>
<wcseo:intervalTo>2 1000000000</wcseo:intervalTo>
<wcseo:type>http://sweet.jpl.nasa.gov/2.3/reprMathFunction.owl#ExponentialFunction</wcseo:type>
</wcseo:dataType2dataSemantics>
8.5. Hint for RGB Generation
The last element in the wcseo:rangeTypeExtension
element is the
wcseo:RGBgenerationHint
element. It is meant to provide a hint for clients
wanting to visualize the data. It includes the elements wcseo:bandSequence
,
wcseo:intervalFrom
, wcseo:intervalTo
, and wcseo:type
. The first is a list
of three band names or band arithmetic instructions delimited by spaces used
for the three bands to generate the RGB version. The names used shall be equal
to name
attributes of the respective swe:field
element. The other three
elements are comparable to the ones used in the data conversion above.
The example below describes the RGB generation from a single band product by reusing the single band three times and logarithmically stretching the interval \$[100,10000000\$] to \$[1,255\$] i.e. value \$x\$ is converted to \$y\$ using \$y = ((ln(x)-ln(100))*(255-1))/(ln(10000000)-ln(100))+1\$.
<wcseo:RGBgenerationHint>
<wcseo:bandSequence>gray gray gray</wcseo:bandSequence>
<wcseo:intervalFrom>100 10000000</wcseo:intervalFrom>
<wcseo:intervalTo>1 255</wcseo:intervalTo>
<wcseo:type>http://sweet.jpl.nasa.gov/2.3/reprMathFunction.owl#Logarithmic</wcseo:type>
</wcseo:RGBgenerationHint>
8.6. Recommended definitions
This section details our recommendations for the most commonly used data as well as for data not covered here. Of course data providers are free to choose any definitions, it’s just highly recommended to use resolvable URIs providing meaningful descriptions ideally machine as well as human readable.
8.6.1. wcseo:dataSemantics
, swe:Quantity/@definition
, and swe:uom/@code
The non-exhaustive list below provides recommendations for the values of the
three items wcseo:dataSemantics
, definition
attribute of swe:Quantity
,
and code
attribute of swe:Quantity/swe:uom
for the most common use cases.
-
Panchromatic
-
wcseo:dataSemantics
-
definition
-
code
-
W.m-2.sr-1.nm-1
-
-
-
RGB
-
SAR
-
wcseo:dataSemantics
-
definition
-
code
-
dB
-
-
-
Further URIs
-
wcseo:dataSemantics
-
Most concepts in
http://sweet.jpl.nasa.gov/2.3/stateSpectralBand.owl
-
-
definition
-
code
-
W.m-2.sr-1
-
W.m-2
-
-
8.6.2. wcseo:dataType
The wcseo:dataType
needs to match the data type actually used in the coverage
encoding like GeoTIFF. The non-exhaustive list below provides recommendations
for URIs to use. Further definitions can be retrieved using the base URIs from
the examples given below.
Other possible but not recommended values are provided in the list below.
8.6.3. wcseo:type
in wcseo:dataType2dataSemantics
and wcseo:RGBgenerationHint
Recommendations for possible values for the wcseo:type
element used to define
data conversions are provided below.
8.6.4. wcseo:bandSequence
The wcseo:bandSequence
element used in the wcseo:RGBgenerationHint
is
defined as type NameTriple
which is a space delimited list of three elements
of type anyURI
. Typically these three elements each reference a name
attribute of a swe:field
element. An additional option is to define three
arithmetic expression like \$"band1"*1/3+"band2"*2/3\$. Note that the
arithmetic expressions themselves need to be URL-encoded and particularly must
not include spaces. A valid example would be band1%2F3%2Bband2%2A2%2F3
band1%2A2%2F3%2Bband2%2F3 %28band1%2Bband3%29%2F2
.
8.6.5. swe:DataRecord/@definition
The non-exhaustive list below provides recommendations for the value of the
definition` attribute of swe:DataRecord
.
-
http://www.opengis.net/def/property/OGC-EO/0/opt/SpectralMode/PANCHROMATIC
-
http://www.opengis.net/def/property/OGC-EO/0/opt/SpectralMode/COLOR
-
http://www.opengis.net/def/property/OGC-EO/0/opt/SpectralMode/MULTISPECTRAL
-
http://www.opengis.net/def/property/OGC-EO/0/sar/PolarizationMode/HH
-
http://sweet.jpl.nasa.gov/2.3/stateSpectralBand.owl#Monochromatic
-
http://sweet.jpl.nasa.gov/2.3/stateSpectralBand.owl#Polychromatic
The list below shows other possible but not recommended URIs.
8.6.6. swe:field/@name
vs. swe:field/swe:Quantity/swe:identifier
The name
attribute of swe:field
is defined as type NCName
. This mainly
means that it must not include characters like :
(colon), @
, $
, %
, &
,
/
, +
, ,
, ;
, or any whitespace characters. If further must not start
with a number, minus, or dot.
The range subsetting extension of WCS [OGC 12-040] uses this name
attribute
in its RangeComponent
element to select bands for retrieval.
Coverages, however, may use not NCName
compliant IDs for their bands. It is,
for example, quite common to identify variables within a netCDF file with
strings including blanks or colons.
The swe:field
element includes in its swe:Quantity
element a
swe:identifier
element which is of type anyURI and can potentially hold any
complex ID given it is URL-encoded.
For coverages using non NCName
IDs for their bands it is recommended to
provide the full IDs, potentially URL-encoded, in the swe:identifier
element.
It is further recommended to use the respective first word (NCNAME
type
substring i.e. starting from it’s first character up to and excluding the first
character which is not allowed in an NCName
) of the IDs for the name
attributes.
For example an ID of gray band
should use gray
for the name
attribute and
gray%20band
for the swe:identifier
element.
8.7. Examples
The following provides an example gmlcov:rangeType
element including
additional range type information for RGB generation on swe:DataRecord
level
as well as data conversion information on swe:Quantity
level.
<gmlcov:rangeType>
<swe:DataRecord definition="http://www.opengis.net/def/property/OGC-EO/0/opt/SpectralMode/PANCHROMATIC">
<swe:extension>
<wcseo:rangeTypeExtension>
<wcseo:RGBgenerationHint>
<wcseo:bandSequence>gray gray gray</wcseo:bandSequence>
<wcseo:intervalFrom>1 4095</wcseo:intervalFrom>
<wcseo:intervalTo>1 255</wcseo:intervalTo>
<wcseo:type>http://sweet.jpl.nasa.gov/2.3/reprMathFunction.owl#Logarithmic</wcseo:type>
</wcseo:RGBgenerationHint>
</wcseo:rangeTypeExtension>
</swe:extension>
<swe:label>Gray Channel/Band</swe:label>
<swe:field name="gray">
<swe:Quantity definition="http://sweet.jpl.nasa.gov/2.3/propEnergyFlux.owl#SpectralRadiance">
<swe:extension>
<wcseo:rangeTypeExtension>
<wcseo:dataSemantics>http://sweet.jpl.nasa.gov/2.3/stateSpectralBand.owl#Visible</wcseo:dataSemantics>
<wcseo:dataType>http://www.opengis.net/def/dataType/OGC/0/unsignedShort</wcseo:dataType>
<wcseo:dataType2dataSemantics>
<wcseo:intervalFrom>1 4095</wcseo:intervalFrom>
<wcseo:intervalTo>390.0000 780.0000</wcseo:intervalTo>
<wcseo:type>http://sweet.jpl.nasa.gov/2.3/reprMathFunction.owl#Linear</wcseo:type>
</wcseo:dataType2dataSemantics>
</wcseo:rangeTypeExtension>
</swe:extension>
<swe:identifier>gray</swe:identifier>
<swe:label>Gray Channel/Band</swe:label>
<swe:description>Gray Channel/Band</swe:description>
<swe:nilValues>
<swe:NilValues>
<swe:nilValue reason="http://www.opengis.net/def/nil/OGC/0/unknown">0</swe:nilValue>
</swe:NilValues>
</swe:nilValues>
<swe:uom code="W.m-2.sr-1.nm-1"/>
<swe:constraint>
<swe:AllowedValues>
<swe:interval>0 4095</swe:interval>
<swe:significantFigures>4</swe:significantFigures>
</swe:AllowedValues>
</swe:constraint>
</swe:Quantity>
</swe:field>
</swe:DataRecord>
</gmlcov:rangeType>
The following is an example of a multispectral range type.
<gmlcov:rangeType>
<swe:DataRecord definition="http://www.opengis.net/def/property/OGC-EO/0/opt/SpectralMode/MULTISPECTRAL">
<swe:extension>
<wcseo:rangeTypeExtension>
<wcseo:RGBgenerationHint>
<wcseo:bandSequence>red green blue</wcseo:bandSequence>
<wcseo:intervalFrom>1 65535</wcseo:intervalFrom>
<wcseo:intervalTo>1 255</wcseo:intervalTo>
<wcseo:type>http://sweet.jpl.nasa.gov/2.3/reprMathFunction.owl#Logarithmic</wcseo:type>
</wcseo:RGBgenerationHint>
</wcseo:rangeTypeExtension>
</swe:extension>
<swe:label>Multispectral product</swe:label>
<swe:field name="blue">
<swe:Quantity definition="http://sweet.jpl.nasa.gov/2.3/propEnergyFlux.owl#SpectralRadiance">
<swe:extension>
<wcseo:rangeTypeExtension>
<wcseo:dataSemantics>http://sweet.jpl.nasa.gov/2.3/stateSpectralBand.owl#Blue</wcseo:dataSemantics>
<wcseo:dataType>http://www.opengis.net/def/dataType/OGC/0/unsignedShort</wcseo:dataType>
<wcseo:dataType2dataSemantics>
<wcseo:intervalFrom>1 65535</wcseo:intervalFrom>
<wcseo:intervalTo>455.0 492.0</wcseo:intervalTo>
<wcseo:type>http://sweet.jpl.nasa.gov/2.3/reprMathFunction.owl#Linear</wcseo:type>
</wcseo:dataType2dataSemantics>
</wcseo:rangeTypeExtension>
</swe:extension>
<swe:identifier>blue</swe:identifier>
<swe:label>Blue Channel/Band</swe:label>
<swe:description>Blue Channel/Band</swe:description>
<swe:nilValues>
<swe:NilValues>
<swe:nilValue reason="http://www.opengis.net/def/nil/OGC/0/unknown">0</swe:nilValue>
</swe:NilValues>
</swe:nilValues>
<swe:uom code="W.m-2.sr-1.nm-1"/>
<swe:constraint>
<swe:AllowedValues>
<swe:interval>0 65535</swe:interval>
<swe:significantFigures>5</swe:significantFigures>
</swe:AllowedValues>
</swe:constraint>
</swe:Quantity>
</swe:field>
<swe:field name="green">
<swe:Quantity definition="http://sweet.jpl.nasa.gov/2.3/propEnergyFlux.owl#SpectralRadiance">
<swe:extension>
<wcseo:rangeTypeExtension>
<wcseo:dataSemantics>http://sweet.jpl.nasa.gov/2.3/stateSpectralBand.owl#Green</wcseo:dataSemantics>
<wcseo:dataType>http://www.opengis.net/def/dataType/OGC/0/unsignedShort</wcseo:dataType>
<wcseo:dataType2dataSemantics>
<wcseo:intervalFrom>1 65535</wcseo:intervalFrom>
<wcseo:intervalTo>492.0 557.0</wcseo:intervalTo>
<wcseo:type>http://sweet.jpl.nasa.gov/2.3/reprMathFunction.owl#Linear</wcseo:type>
</wcseo:dataType2dataSemantics>
</wcseo:rangeTypeExtension>
</swe:extension>
<swe:identifier>green</swe:identifier>
<swe:label>Green Channel/Band</swe:label>
<swe:description>Green Channel/Band</swe:description>
<swe:nilValues>
<swe:NilValues>
<swe:nilValue reason="http://www.opengis.net/def/nil/OGC/0/unknown">0</swe:nilValue>
</swe:NilValues>
</swe:nilValues>
<swe:uom code="W.m-2.sr-1.nm-1"/>
<swe:constraint>
<swe:AllowedValues>
<swe:interval>0 65535</swe:interval>
<swe:significantFigures>5</swe:significantFigures>
</swe:AllowedValues>
</swe:constraint>
</swe:Quantity>
</swe:field>
<swe:field name="yellow">
<swe:Quantity definition="http://sweet.jpl.nasa.gov/2.3/propEnergyFlux.owl#SpectralRadiance">
<swe:extension>
<wcseo:rangeTypeExtension>
<wcseo:dataSemantics>http://sweet.jpl.nasa.gov/2.3/stateSpectralBand.owl#Yellow</wcseo:dataSemantics>
<wcseo:dataType>http://www.opengis.net/def/dataType/OGC/0/unsignedShort</wcseo:dataType>
<wcseo:dataType2dataSemantics>
<wcseo:intervalFrom>1 65535</wcseo:intervalFrom>
<wcseo:intervalTo>557.0 597.0</wcseo:intervalTo>
<wcseo:type>http://sweet.jpl.nasa.gov/2.3/reprMathFunction.owl#Linear</wcseo:type>
</wcseo:dataType2dataSemantics>
</wcseo:rangeTypeExtension>
</swe:extension>
<swe:identifier>yellow</swe:identifier>
<swe:label>Yellow Channel/Band</swe:label>
<swe:description>Yellow Channel/Band</swe:description>
<swe:nilValues>
<swe:NilValues>
<swe:nilValue reason="http://www.opengis.net/def/nil/OGC/0/unknown">0</swe:nilValue>
</swe:NilValues>
</swe:nilValues>
<swe:uom code="W.m-2.sr-1.nm-1"/>
<swe:constraint>
<swe:AllowedValues>
<swe:interval>0 65535</swe:interval>
<swe:significantFigures>5</swe:significantFigures>
</swe:AllowedValues>
</swe:constraint>
</swe:Quantity>
</swe:field>
<swe:field name="orange">
<swe:Quantity definition="http://sweet.jpl.nasa.gov/2.3/propEnergyFlux.owl#SpectralRadiance">
<swe:extension>
<wcseo:rangeTypeExtension>
<wcseo:dataSemantics>http://sweet.jpl.nasa.gov/2.3/stateSpectralBand.owl#Orange</wcseo:dataSemantics>
<wcseo:dataType>http://www.opengis.net/def/dataType/OGC/0/unsignedShort</wcseo:dataType>
<wcseo:dataType2dataSemantics>
<wcseo:intervalFrom>1 65535</wcseo:intervalFrom>
<wcseo:intervalTo>597.0 622.0</wcseo:intervalTo>
<wcseo:type>http://sweet.jpl.nasa.gov/2.3/reprMathFunction.owl#Linear</wcseo:type>
</wcseo:dataType2dataSemantics>
</wcseo:rangeTypeExtension>
</swe:extension>
<swe:identifier>orange</swe:identifier>
<swe:label>Orange Channel/Band</swe:label>
<swe:description>Orange Channel/Band</swe:description>
<swe:nilValues>
<swe:NilValues>
<swe:nilValue reason="http://www.opengis.net/def/nil/OGC/0/unknown">0</swe:nilValue>
</swe:NilValues>
</swe:nilValues>
<swe:uom code="W.m-2.sr-1.nm-1"/>
<swe:constraint>
<swe:AllowedValues>
<swe:interval>0 65535</swe:interval>
<swe:significantFigures>5</swe:significantFigures>
</swe:AllowedValues>
</swe:constraint>
</swe:Quantity>
</swe:field>
<swe:field name="red">
<swe:Quantity definition="http://sweet.jpl.nasa.gov/2.3/propEnergyFlux.owl#SpectralRadiance">
<swe:extension>
<wcseo:rangeTypeExtension>
<wcseo:dataSemantics>http://sweet.jpl.nasa.gov/2.3/stateSpectralBand.owl#Red</wcseo:dataSemantics>
<wcseo:dataType>http://www.opengis.net/def/dataType/OGC/0/unsignedShort</wcseo:dataType>
<wcseo:dataType2dataSemantics>
<wcseo:intervalFrom>1 65535</wcseo:intervalFrom>
<wcseo:intervalTo>622.0 780.0</wcseo:intervalTo>
<wcseo:type>http://sweet.jpl.nasa.gov/2.3/reprMathFunction.owl#Linear</wcseo:type>
</wcseo:dataType2dataSemantics>
</wcseo:rangeTypeExtension>
</swe:extension>
<swe:identifier>red</swe:identifier>
<swe:label>Red Channel/Band</swe:label>
<swe:description>Red Channel/Band</swe:description>
<swe:nilValues>
<swe:NilValues>
<swe:nilValue reason="http://www.opengis.net/def/nil/OGC/0/unknown">0</swe:nilValue>
</swe:NilValues>
</swe:nilValues>
<swe:uom code="W.m-2.sr-1.nm-1"/>
<swe:constraint>
<swe:AllowedValues>
<swe:interval>0 65535</swe:interval>
<swe:significantFigures>5</swe:significantFigures>
</swe:AllowedValues>
</swe:constraint>
</swe:Quantity>
</swe:field>
</swe:DataRecord>
</gmlcov:rangeType>
9. Coverage Collections
9.1. Motivation
WCS originally was perceived to give access to single coverages taken from a flat set of coverage offerings on the server.
This approach was based on the classical subdivision into metadata services (i.e., catalogs) and data services, connected through some loose coupling (which effectively was never standardized beyond the recommendation to use URLs).
With the progress of requirements and technology it is more and more considered important to merge data and metadata perspectives with the vision of a common integrated information space.
For WCS, this means in particular to further structure a server’s offering of coverages along various criteria.
Early on EO-WCS has provided a lead in this by introducing both uniform and non-uniform coverage groupings together with dedicated search functionality which is able to perform a focused search within coverage subsets.
With OGC Coverage Implementation Schema (CIS) 1.1 comes massively enhanced support for structuring coverages. Therefore, a harmonization task has to be accomplished to relate both concepts, which may well lead to an extension of functionality for fully exploiting all benefits. One standardization opportunity might be to generalize EO groupings, phase in CIS 1.1 concepts, and establish a general WCS grouping extension.
A separate issue is how far recursion should be allowed: can a coverage grouping be part of another coverage grouping, with unlimited nesting? While the generality may be appealing it might pose severe extra complexity on implementations.
In the following subsections, we discuss EO-relevant grouping concepts, based on CIS and EO-WCS.
First, we address the special case of grouping coverages that share some critical common properties. Next, we generalize this to arbitrary groupings of coverages. Finally, we discuss registration issues.
9.2. Uniform Coverage Grouping
9.2.1. Overview
Uniform Coverage Groupings represent sets of coverages which are homogeneous enough that they can collectively appear as a single coverage from a WCS perspective - in particular, such items are amenable to GetCoverage requests. Aside from their positioning in space/time through the domain set there is no other particular order defined on such coverage sets.
Concretely, the requirements on the coverages contained in a Uniform Coverage Grouping are as follows (as a direct consequential of the definition of coverage):
-
all coverages contained shall have the same coverage type (i.e., combinations of Rectified and Referenceable Grid, or MultiPoint Coverages, are prohibited);
-
all coverages contained shall have the same range type (whereby it needs to be clarified when two range types are equal - for example, band names might be not constitutive while quantity, unit of measure, and nil values likely are);
-
all coverages contained shall have the same resolution;
-
all coverages contained shall have the same CRS in their domain set (note that this is not technically necessary for the boundedBy element which gives an informal, not necessarily minimal bounding box for a quick location determination);
-
for each direct position (i.e., pixel) in the spatial domain of the Uniform Coverage Grouping there shall be exactly one range value - in other words, there shall be no "holes" and no duplicate pixel values.
In the context of EO-WCS, the coverage subtype StitchedMosaic
implements the
Uniform Coverage Grouping.
9.2.2. A Concept for Uniform Coverage Groupings
TODO Idea: Derive DatasetSeries subtype where rangeType is fixed for all included coverages (maybe using schematron?). Make sure that this subtype is substitutable (substitutionGroup?) and instances still validate against EO-WCS 1.1 schemas.
9.2.3. Coverage Groupings in CIS 1.1 versus EO-WCS 1.1
CIS 1.1 offers a conformance class, coverage-partitioning
, which allows
splitting a coverage into pieces - in other words, a coverage can be composed
from sub-coverages. This nesting of coverages actually is recursive, allowing
to establish hierarchically nested coverages.
As the new partitioning functionality of CIS 1.1 still defines a - partitioned - coverage the same homogeneity criteria must hold as for "atomic" coverages: they must have a common range type and domain set CRS, and common range components ("bands", "variables") must not overlap. Note that the latter constraint allows that different sub-coverages can overlap in their domain set, but only when contributing to different range components; this way, bands stored in single files, for example, can be assembled into multi-band coverages.
EO-WCS, in comparison, allows coverages to overlap in a grouping, both in DatasetSeries as well as StitchedMosaics. In the latter, StitchedMosaics, the extra concept of a "contributing footprint" captures the overlap by indicating which pixel contributes to the coverage - effectively, the contributing footprint acts like a mask blanking out parts of a coverage, thereby achieving a unique pixel for each position while retaining overlap information. This - more involved - concept is not directly supported by the CIS 1.1 partitioning.
Obviously, there is a strong resemblance of concepts between CIS 1.1 and EO- WCS 1.1. We therefore propose to carefully review forthcoming CIS 1.1 and how far it accomplishes the grouping concepts proposed in this section.
Further, it should be noted that CIS 1.1 foresees a general object about which no further normative constraints are made. Collections of coverages could be derived from such objects if deemed feasible.
9.2.4. Modeling of Grouping Data and Operations
To capture as much of the semantics of such groupings - and hence ensure integrity at the highest possible level - schematron can be used. The following consistency constraints seem addressable:
-
require the same coverage type, range type, CRS on all items contained in the grouping;
-
require the same resolution (this information, though, is directly accessible only in CIS 1.1; in GMLCOV/CIS 1.0 it can only be computed through means beyond schematron); The final constraint - non-overlapping sub-coverages and no "holes" in super-coverage - can only be solved algorithmically, not through schematron - in particular, in presence of "contributing footprint" polygons as per EO-WCS.
In terms of operations, a Uniform Coverage Grouping needs to allow a GetCoverage request. The result might be a "consolidated" flat coverage reassembled from the sub-coverages, or a collection retaining those original or cropped sub-coverages selected by the GetCoverage subsetting request. Further, subset extraction is meaningful for obtaining particular sub- coverages; in EO-WCS, this is accomplished through the DescribeEOCoverageSet request type.
Note that CIS 1.1 allows any suitable container format (such as zip, SAFE, etc.), thereby making delivery of "packages" representing Uniform Coverage Groupings flexible and user-oriented.
9.3. General Grouping of Coverages
9.3.1. Concept
Generalizing the uniform grouping from above, coverages can be aggregated into some topical information collection without any constraints of the elements grouped, and without the need of them to form a single super-coverage.
For example, EO products are typically stored in single files, either using a special binary EO format like NetCDF or ENVISAT N1, a special EO container format like SAFE, e.g. Sentinel-2, or DIMAP, or a general container format like TAR or ZIP. Sometimes EO products are stored as multiple files, e.g., sets of Landsat-8 files.
Modeling such grouped data as a coverage and allow GetCoverage requests would
conceptually break the coverage definition and would also overburden WCS,
rendering it impractical. Thus we propose to follow and extend the approach
already established in EO-WCS and enhance the concept of DatasetSeries
to
incorporate the additional requirements that have come up to grasp more
application semantics:
-
constrain participating coverages in their types; for example, a collection representing a product may consist of several hyperspectral images forming a timeseries, plus one binary mask; this can be expressed, for example, via schematron;
-
restrict the range set, e.g., to particular bands; again, schematron can be used for this;
-
Further, the OpenSearch EO Extension imposes a restriction in that it supports only two levels of grouping. Translated into the DatasetSeries modeling this means that a DatasetSeries cannot contain a DatasetSeries containing DatasetSeries itself. This can again be expressed through Schematron.
9.3.2. Encoding and Grouping of Associated Data
We now address the encoding of multiple coverages, potentially representing an EO Product, in a package format like TAR or ZIP. Given the new operation GetEOCoverageSet the only point missing is the inclusion of metadata on package level.
Basically the EOMetadata element has been amended to be in the
substitutionGroup
of ows:AbstractMetaData
and the choice is extended by
references to ISO 19139 MD_Metadata
, which can be substituted by ISO 19139-2
MI_Metadata
, and ISO 19115-3 MD_Metadata
. To recap, the already available
options are EO-O&M, or EOP as it is referred to sometimes, or by reference as
seen in the example below. A complete
example
is provided with the EO-WCS standard.
These choices leave the option to use the concept of Dataset Series for offering collections but also for EO Products. Although named Dataset Series technically speaking it is a heterogeneous grouping of coverages and/or Dataset Series and can thus be used for any other concept like an EO Product containing multiple coverages with different resolutions as well.
The example below shows a complete DatasetSeries
element including a
reference to further metadata.
<?xml version="1.0" encoding="UTF-8"?>
<wcseo:DatasetSeries xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:wcs="http://www.opengis.net/wcs/2.0" xmlns:wcseo="http://www.opengis.net/wcs/wcseo/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://www.opengis.net/wcs/wcseo/1.1 http://schemas.opengis.net/wcs/wcseo/1.1/wcsEOAll.xsd">
<wcseo:DatasetSeriesId>someDatasetSeries1</wcseo:DatasetSeriesId>
<eop:Footprint gml:id="footprint_someDatasetSeries1">
<eop:multiExtentOf>
<gml:MultiSurface gml:id="multisurface_someDatasetSeries1" srsName="EPSG:4326">
<gml:surfaceMembers>
<gml:Polygon gml:id="polygon_someDatasetSeries1">
<gml:exterior>
<gml:LinearRing>
<gml:posList>43.516667 2.1025 43.381667 2.861667 42.862778 2.65 42.996389 1.896944 43.516667 2.1025</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMembers>
</gml:MultiSurface>
</eop:multiExtentOf>
</eop:Footprint>
<gml:TimePeriod gml:id="someDatasetSeries1_timeperiod">
<gml:beginPosition>2008-03-13T00:00:00.000</gml:beginPosition>
<gml:endPosition>2008-03-13T23:59:59.999</gml:endPosition>
</gml:TimePeriod>
<ows:Metadata>
<wcseo:EOMetadata>
<ows:Reference xlink:href="http://www.someCatalogue.org/eop-metadatafrom-someDatasetSeries1" xlink:role="http://standards.iso.org/iso/19115/-3/mdb/1.0" xlink:title="ISO 19115-3 Metadata" />
</wcseo:EOMetadata>
</ows:Metadata>
<wcseo:rectifiedDataset>
<wcs:CoverageId>someEOCoverage1</wcs:CoverageId>
</wcseo:rectifiedDataset>
</wcseo:DatasetSeries>
Of course the mechanism of using Reference
elements in Metadata
elements
can also be used for associated data.
We propose to further investigate if a GetEOCoverageRequest together with a
mediaType
of multipart/related
is suitable to be used for data access to
whole EO Products. In a first step this will be verified using general
container formats as written above. The next step then is to investigate the
suitability of this approach also for special EO container formats like SAFE
and special binary EO formats like NetCDF or ENVISAT N1.
The first part of the multipart response would look like the example below but
additionally include Reference
elements to the associated data inside
Metadata
elements of the DatasetSeries
element. Of course the second part
of the multipart response needs to include all the referenced files.
<?xml version="1.0" encoding="UTF-8"?>
<wcseo:EOCoverageSet numberMatched="3" numberReturned="3" xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:gmlcov="http://www.opengis.net/ mlcov/1.0" xmlns:swe="http://www.opengis.net/swe/2.0" xmlns:wcs="http://www.opengis.net/wcs/2.0" xmlns:wcseo="http://www.opengis.net/wcs/wcseo/1.1" xmlns:eop="http://www.opengis.net/eop/2.1" xmlns:om="http://www.opengis.net/om/2.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wcs/wcseo/1.1 http://schemas.opengis.net/wcs/wcseo/1.1/wcsEOAll.xsd">
<wcseo:RectifiedDataset gml:id="someEOCoverage1">
<gml:boundedBy>
...
</gml:boundedBy>
<gml:domainSet>
...
</gml:domainSet>
<gml:rangeSet>
<gml:File>
<gml:rangeParameters xlink:arcrole="fileReference" xlink:href="cid:coverage.meta4;someEOCoverage1.tif" xlink:role="http://www.opengis.net/spec/GMLCOV_geotiff-coverages/1.0/conf/geotiff-coverage" />
<gml:fileReference>cid:coverage.meta4;someEOCoverage1.tif</gml:fileReference>
<gml:fileStructure />
<gml:mimeType>image/tiff</gml:mimeType>
</gml:File>
</gml:rangeSet>
<gmlcov:rangeType>
...
</gmlcov:rangeType>
<gmlcov:metadata>
<gmlcov:Extension>
<wcseo:EOMetadata>
<eop:EarthObservation gml:id="eop_someEOCoverage1">
...
</eop:EarthObservation>
<wcseo:lineage>
<wcseo:referenceGetEOCoverageSet>
<ows:Reference xlink:href="http://www.someWCS.org?SERVICE=WCS&VERSION=2.0.1&REQUEST=GetEOCoverageSet&EOID=someDatasetSeries1&PACKAGEFORMAT=application/metalink4+xml&MEDIATYPE=multipart/related" />
</wcseo:referenceGetEOCoverageSet>
<gml:timePosition>2016-05-17T12:25:40Z</gml:timePosition>
</wcseo:lineage>
</wcseo:EOMetadata>
</gmlcov:Extension>
</gmlcov:metadata>
</wcseo:RectifiedDataset>
<wcseo:RectifiedDataset gml:id="someEOCoverage2">
<gml:boundedBy>
...
</gml:boundedBy>
<gml:domainSet>
...
</gml:domainSet>
<gml:rangeSet>
<gml:File>
<gml:rangeParameters xlink:arcrole="fileReference" xlink:href="cid:coverage.meta4;someEOCoverage2.tif" xlink:role="http://www.opengis.net/spec/GMLCOV_geotiff-coverages/1.0/conf/geotiff-coverage" />
<gml:fileReference>cid:coverage.meta4;someEOCoverage2.tif</gml:fileReference>
<gml:fileStructure />
<gml:mimeType>image/tiff</gml:mimeType>
</gml:File>
</gml:rangeSet>
<gmlcov:rangeType>
...
</gmlcov:rangeType>
<gmlcov:metadata>
<gmlcov:Extension>
<wcseo:EOMetadata>
<eop:EarthObservation gml:id="eop_someEOCoverage2">
...
</eop:EarthObservation>
<wcseo:lineage>
<wcseo:referenceGetEOCoverageSet>
<ows:Reference xlink:href="http://www.someWCS.org?SERVICE=WCS&VERSION=2.0.1&REQUEST=GetEOCoverageSet&EOID=someDatasetSeries1&PACKAGEFORMAT=application/metalink4+xml&MEDIATYPE=multipart/related" />
</wcseo:referenceGetEOCoverageSet>
<gml:timePosition>2016-05-17T12:25:40Z</gml:timePosition>
</wcseo:lineage>
</wcseo:EOMetadata>
</gmlcov:Extension>
</gmlcov:metadata>
</wcseo:RectifiedDataset>
<wcseo:DatasetSeries>
<wcseo:DatasetSeriesId>someDatasetSeries1</wcseo:DatasetSeriesId>
<eop:Footprint gml:id="footprint_someDatasetSeries1">
...
</eop:Footprint>
<gml:TimePeriod gml:id="someDatasetSeries1_timeperiod">
...
</gml:TimePeriod>
<ows:Metadata>
<wcseo:EOMetadata>
<ows:Reference xlink:href="http://www.someCatalogue.org/eop-metadatafrom-someDatasetSeries1" xlink:role="http://standards.iso.org/iso/19115/-3/mdb/1.0" xlink:title="ISO 19115-3 Metadata" />
<wcseo:lineage>
<wcseo:referenceGetEOCoverageSet>
<ows:Reference xlink:href="http://www.someWCS.org?SERVICE=WCS&VERSION=2.0.1&REQUEST=GetEOCoverageSet&EOID=someDatasetSeries1&PACKAGEFORMAT=application/metalink4+xml&MEDIATYPE=multipart/related"/>
</wcseo:referenceGetEOCoverageSet>
<gml:timePosition>2016-05-17T12:25:40Z</gml:timePosition>
</wcseo:lineage>
</wcseo:EOMetadata>
</ows:Metadata>
<wcseo:rectifiedDataset>
<wcs:CoverageId>someEOCoverage1</wcs:CoverageId>
</wcseo:rectifiedDataset>
<wcseo:rectifiedDataset>
<wcs:CoverageId>someEOCoverage2</wcs:CoverageId>
</wcseo:rectifiedDataset>
</wcseo:DatasetSeries>
</wcseo:EOCoverageSet>
An additional consideration is to harmonize this proposal with EO-O&M as adopted by EO-WCS. EO-O&M is designed to define a catalog record for one EO product including links to various raster or vector features like measurements, browses, masks, etc.
9.4. Collection and Product Registration
So far, access to coverages and groupings has been discussed. However, with WCS-T Web-based maintenance of coverage offerings is possible, including insertion, update, and deletion of coverages. This functionality might get extended with maintenance operations on coverage collections.
Essentially, this would include creation and removal of collections, inclusion of coverages into an existing collection as well as excluding selected coverages, and maybe more.
Relevant existing approaches should be considered appropriately, such as the GeoServer REST API 2.0.
TODO
10. Condense Coverage Description Information
10.1. Overview
OpenSearch is the designated EVO-ODAS endorsed search service. Thus we propose to extend OpenSearch in a way to allow clients to specify the verbosity of the answer.
Below we draft the usage of a new parameter named view
. Alternatively the
suitability of the OpenSearch SRU (Search and Retrieval via URL) extension
should be investigated.
Several allowed values are defined in that proposal ranging from full
for
everything to geotime
for a very limited view only including id, name, bbox,
start, and end.
Additionally, there is the idea of adding histogram like functionality i.e., requesting summary information for defined buckets like months.
It should be noted that there exists an alternative approach to searching which is based on XPath enabling traversal and subsetting of a server’s XML information hierarchy.
Although XPath looks like a promising approach there are some difficulties particularly from an implementation point of view. In general, an XML document can only be subsetted using XPath once it has been generated. This approach wouldn’t scale well on server implementations. Of course particular queries can be computed on the fly but to allow generic XPath queries is quite challenging.
Another issue is, that XPath returns subsets of XML documents without maintaining overlying hierarchy. While it is simple to retrieve a list of coverage IDs for certain search criteria it is difficult if not impossible to retrieve for the same list of coverages tailored coverage descriptions only containing ID, phenomenon time, and footprint.
Further challenges arise when the query is supposed to contain time or spatial subsetting.
OpenSearch and XPath are not competing, but complementary approaches: OpenSearch empowers users to do human-centric search through keywords. XPath, conversely, enables fine-grain drilling into the server’s information structure and, hence, is suitable in particular for machine-to-machine communication.
Both search types, therefore, are important for versatile coverage services. In EVO-ODAS, the OpenSearch avenue will be elaborated.
TODO
10.2. OpenSearch view
parameter
10.2.1. Objective
This proposal adds support for different levels of verbosity in OpenSearch responses. Clients mainly need a complete and detailed view on the result set but for example to show data availability on a time slider only a limited view is needed. This limited view provides a great opportunity for performance optimization, in response generation time on the server, in response size and thus transfer time, and in response parsing time on the client.
The proposal adds a parameter named view
to the OpenSearch URL template using
the OpenSearch Parameter extension. It further defines several mandatory and
optional options for predefined values for the new parameter including the
definition of the content of response. Additionally it leaves room to add
custom options as needed.
This shows an example of an Url
element using the view
parameter:
<Url xmlns:param="http://a9.com/-/spec/opensearch/extensions/parameters/1.0/" xmlns:eo="http://a9.com/-/opensearch/extensions/eo/1.0/" type="application/atom+xml" rel="collection" template="http://example.com/atom?q={searchTerms}&view={eo:view}"> <param:Parameter name="view" value="{eo:view}" title="Verbosity of the response. Default: full" pattern="full|brief|geotime" minimum="0"> <param:Option value="full" label="Complete and detailed view."/> <param:Option value="brief" label="Brief view to get a quick impression."/> <param:Option value="geotime" label="View to show data availability on a time slider."/> </param:Parameter> </Url>
10.2.2. view
Parameter
The new view
parameter reuses the namespace of the OGC® OpenSearch Extension
for Earth Observation [OGC 13-026r8]. It is used as view={eo:view}
in the
template attribute of Url
elements.
The following mandatory and optional option values are defined:
-
full
- mandatory - Complete and detailed view. -
brief
- mandatory - Brief view to get a quick impression. -
geotime
- optional - View to show data availability on a time slider. -
TODO
Note
|
Not all options have to necessarily be made available with each format.
The geotime option for example might be available with JSON or CSV formatting
but not with ATOM.
|
geotime
Using this option returns the needed metadata to show data availability on a time slider. The needed metadata are identifier, name, bounding box or footprint in EPSG:4326, start time, and end time.
This is a response example in CSV format:
"identifier","name","bbox","starttime","endtime" "1","Satellite image","(40,10,50,20)","2016-04-20T00:00:00Z","2016-04-20T23:59:59Z"
11. WCS Masking Extension
11.1. Overview
We propose to extend the GetCoverage request with parameters to request a masking via a mask coverage or polygons e.g. given as GeoJSON or shapefile. The coverage of polygons can be given by reference or, if small enough, included directly in the request in case of polygons as WKT.
The response shall use a defined NoData value for areas outside of the mask.
This will be described first in the EO Data Access Best Practice at hand. Later on this might be promoted to an actual WCS extension.
TODO
12. Conclusions
This section summarizes intended use and benefits of EO-WCS 1.1.
Among others, this might mention that EO-WCS 1.0 has inspired coverage extensions, and it can be expected that EO-WCS 1.1 work will have a similar impact.
TODO
Annex A: Revision History
Date | Release | Editor | Primary clauses modified | Description |
---|---|---|---|---|
TBD |
0.0.1 |
Stephan Meißl |
All |
Draft proposal from ESA project EVO-ODAS |
Annex B: Bibliography
[1] OGC 09-153, WCS 2.0 Overview: Core and Extensions, version 1.0.0
[2] ISO 8601:2004(E) Data elements and interchange formats - Information interchange - Representation of dates and time
[3] IETF RFC 2616, Hypertext Transfer Protocol — HTTP/1.1. IETF, 1999
[4] www.epsg.org
[5] W3C Note 11, SOAP Messages with Attachments. W3C Note 11, 2000
[6] XML Schema Part 2: Datatypes Second Edition, W3C Recommendation, 2004
[7] OpenSearch Specification, 1.1, Draft 5
[8] OGC 09-025r2, OpenGIS Web Feature Service 2.0 Interface Standard - With Corrigendum, version 2.0.2