Open Geospatial Consortium

Publication Date: TBD
Approval Date: TBD
Submission Date: 2016-08-31
Reference number of this Document: OGC 10-140r2
External reference for this OGC® document: http://www.opengis.net/doc/IS/WCS-application-profile-earth-observation/1.1
URL for this OGC® document: https://eox-a.github.io/eo-wcs/
PDF version: https://eox-a.github.io/eo-wcs/index.pdf
Version: 1.1draft
Category: OGC® Interface Standard
Editor: Peter Baumann, Stephan Meissl, Jinsongdi Yu

## OGC® Web Coverage Service 2.0 Interface Standard - Earth Observation Application Profile

Copyright © 2014, 2016 Open Geospatial Consortium.
To obtain additional rights of use, visit http://www.opengeospatial.org/legal/

Warning

This document is an OGC Member approved international standard. This document is available on a royalty free, non-discriminatory basis. 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 Implementation Standard
Document subtype: Interface
Document stage: Draft update of Approved 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. None of the Intellectual Property or underlying information or technology may be downloaded or otherwise exported or reexported in violation of U.S. export laws and regulations. In addition, you are responsible for complying with any local laws in your jurisdiction which may impact your right to import, export or use the Intellectual Property, and you represent that you have complied with any regulations or registration procedures required by applicable law to make this license enforceable

## Abstract

The OGC Web Coverage Service (WCS) Application Profile - Earth Observation (EO- WCS), defines a profile of WCS 2.0 [OGC 09-110r4] for use on 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.

## Keywords

ogcdoc, wcs, profile, eo, earth observation, dataset, dataset series, stitched mosaic

## 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.

## Submitting organizations

The following organizations have submitted this Interface Specification to the Open GeoSpatial Consortium, Inc.:

- Jacobs University Bremen

- EOX IT Services GmbH

- G.I.M. Geographic Information Management nv/sa

- European Space Agency (ESA)

- Spot Image

Additionally, rasdaman GmbH has made substantial contributions.

## Document Contributor Contact Points

Name | Organization
--- | ---
Peter Baumann | Jacobs University Bremen, rasdaman GmbH
Jinsongdi Yu | Jacobs University Bremen
Stephan Meissl <stephan.meissl@eox.at> | EOX IT Services GmbH
Christian Schiller | EOX IT Services GmbH

## Changes to the OGC ® Abstract Specification

The OGC ® Abstract Specification does not require any changes to accommodate the technical contents of this (part of this) document.

## Future Work

Among the topics for future development are the following items:

- Specify usage and content of `EOWCS::Lineage` in more detail.

## Foreword

This WCS Application Profile for Earth Observation is an OGC Interface Standard which relies on WCS 2.0 (the Core [OGC 09-110r4] plus selected extensions), the Coverages Implementation Schema (renamed from GML Application Schema - Coverages) [OGC 09-146r2], the Earth Observation Metadata Profile of Observations and Measurements [OGC 10-157r4], and GML 3.2.1 [OGC 07-036].

This document includes three annexes; the first two annexes are normative.

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.

## Introduction

The OGC Web Coverage Service (WCS) Application Profile - Earth Observation (EO- WCS), defines a profile of WCS 2.0 [OGC 09-110r4] for use on Earth Observation data. An Application Profile bundles several specifications and possibly adds additional requirements on an implementation. Extra requirements can be additions (for example, Dataset Series are introduced by this specification) or constraints (for example, coverages offered are required to include EO metadata).

EO-WCS provides the following specification elements:

- Definition of specific Earth Observation coverages (EO Coverages) which have a latitude/longitude or projected x/y spatial extent and a temporal validity extent. EO Coverages are derived from Referenceable Grid Coverages and Rectified Grid Coverages as defined in the Coverage Implementation Schema (renamed from GML Application Schema - Coverages) [OGC 09-146r2]. Each EO Coverage has an EO metadata set [OGC 10-157r4] contained in its metadata which describes the coverage on hand on a higher semantic level.

- Definition of a hierarchy which allows to group EO Coverages suitably for an efficient retrieval:

  - Datasets as plain EO Coverages (and, hence, accessible as coverages);

  - Stitched Mosaics as homogeneous collections of spatially non-overlapping subsets of Datasets, accessible themselves as coverages;

  - Dataset Series as collections of Stitched Mosaics, Datasets, and/or Dataset Series; Dataset Series themselves are not coverages.

- Bundling of several mandatory and optional WCS extensions for EO-WCS implementations.

# OGC® Web Coverage Service 2.0 Interface Standard - Earth Observation Application Profile

## 1. Scope

This OGC WCS Application Profile - Earth Observation Interface Standard - henceforth abbreviated as: WCS Earth Observation Application Profile (EO-WCS) - defines data structures and operations which together allow retrieval of Earth Observation coverages offered by a WCS 2.0 server.

## 2. Conformance

This document establishes the following requirements and conformance classes:

- eowcs, of URI http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/req/eowcs, defining EO-WCS on conceptual level in Clauses 6, 7, and 8; the corresponding conformance class is eowcs, with URI http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs.

- eowcs_geteocoverageset, of URI http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/req/eowcs_geteocoverageset, defining the GetEOCoverageSet request of EO-WCS in Clause 7 where stated, particularly subclause 7.6; the corresponding conformance class is eowcs_geteocoverageset, with URI http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs_geteocoverageset.

- eowcs_get-kvp, of URI http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/req/eowcs_get-kvp, defining the GET-KVP protocol binding of EO-WCS in Subclause 9.2; the corresponding conformance class is eowcs_get-kvp, with URI http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs_get-kvp.

- eowcs_soap, of URI http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/req/eowcs_soap, defining the SOAP protocol binding of EO-WCS on conceptual level in Subclause 9.3; the corresponding conformance class is eowcs_soap, with URI http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs_soap.

Standardization target of all requirements and conformance classes are EO-WCS implementations (currently: servers).

Requirements and conformance test URIs defined in this document are relative to http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/.

Annex A lists the conformance tests which shall be exercised on any software artifact claiming to implement EO-WCS.

## 3. Normative references

This OGC WCS Application Profile - Earth Observation specification consists of the present document and an XML Schema. The complete specification is identified by OGC URI http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1, the document has OGC URI http://www.opengis.net/doc/IS/WCS_application-profile_earth-observation/1.1.

The complete specification is available for download from http://www.opengeospatial.org/standards/wcs; additionally, the XML Schema is posted online at http://schemas.opengis.net/wcs/wcseo/1.1 as part of the OGC schema repository. In the event of a discrepancy between bundled and schema repository versions of the XML Schema files, the schema repository shall be considered authoritative.

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
Conformance classes used: gml-coverage, gml, multipart, special-format

OGC 09-110r4, OGC® WCS 2.0 Interface Standard- Core: Corrigendum, version 2.0
Conformance classes used: core

OGC 11-053r1, OGC® Web Coverage Service Interface Standard - CRS Extension, version 1.0
Conformance classes used: crs, crs-gridded-coverage

OGC 12-039, OGC® Web Coverage Service Interface Standard - Scaling Extension, version 1.0
Conformance classes used: scaling

OGC 12-040, OGC® Web Coverage Service Interface Standard - Range Subsetting Extension, version 1.0
Conformance classes used: record-subsetting

OGC 12-049, OGC® Web Coverage Service Interface Standard - Interpolation Extension, version 1.0
Conformance classes used: interpolation

OGC 09-147r3, OGC® Web Coverage Service 2.0 Interface Standard - KVP Protocol Binding Extension - Corrigendum, version 1.0
Conformance classes used: get-kvp

OGC 09-149r1, OGC® Web Coverage Service 2.0 Interface Standard - XML/SOAP Protocol Binding Extension, version 1.0
Conformance classes used: soap

OGC 12-100r1, OGC® GML Application Schema - Coverages - GeoTIFF Coverage Encoding Profile, version 1.0
Conformance classes used: geotiff-coverage

OGC 14-100r2, OGC® CF-netCDF 3.0 encoding using GML Coverage Application Schema, version 2.0
Conformance classes used: CF-netCDF-1.6 GML encoding, CF-netCDF-1.6 data format, CF-netCDF-1.6 multipart data encoding

OGC 12-108, OGC® GML Application Schema - Coverages JPEG2000 Coverage Encoding Extension, version 1.0
Conformance classes used: jpeg2000-coverage

OGC 10-157r4, OGC® Earth Observation Metadata profile of Observations & Measurements, version 1.1
Conformance classes used: eop, sar, opt

## 4. Terms and definitions

For the purposes of this document, the terms and definitions given in the above references apply. In addition, the following terms and definitions apply. An arrow "→" indicates that the following term is defined in this Clause.

### 4.1. Coverage

digital representation of a spatio-temporally varying phenomenon as defined in

### 4.2. Dataset

→ EO Coverage

| A Dataset usually represents observations obtained by satellite instruments.

### 4.3. Dataset Series

collection of → EO Coverages

### 4.4. EO Coverage

Rectified Grid → Coverage or Referenceable Grid → Coverage having an → EO Metadata record and a WGS84 bounding box

### 4.5. EO Metadata

→ EO Coverage’s metadata record

### 4.6. Stitched Mosaic

→ EO Coverage composed from subsets of one or more co-referenced → Datasets

### 4.7. EO Product

An EO Product contains one or more related → EO Product Datasets plus metadata and optionally auxiliary data like → EO Product Quicklooks.

### 4.8. EO Product Dataset

One or more files each containing one or more → EO Coverages.

### 4.9. 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.10. Lineage record

Data structure documenting an operation that has been applied to the → coverage it is part of

### 4.11. 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.

Table 1. Namespace mappings
Prefix | Namespace URI | Description
--- | --- | ---
xsd | http://www.w3.org/2001/XMLSchema | XML Schema namespace
ows | http://www.opengis.net/ows/2.0 | OWS Common 2.0
gml | http://www.opengis.net/gml/3.2 | GML 3.2.1
gmlcov | http://www.opengis.net/gmlcov/1.0 | Coverages Implementation Schema 1.0
wcs | http://www.opengis.net/wcs/2.0 | WCS 2.0
eop | http://www.opengis.net/eop/2.1 | Earth Observation Metadata Profile of Observations and Measurements
opt | http://www.opengis.net/opt/2.1 | Optical Earth Observation Metadata Profile of Observations and Measurements (extension of eop)
sar | http://www.opengis.net/sar/2.1 | SAR Earth Observation Metadata Profile of Observations and Measurements (extension of eop)
wcseo | http://www.opengis.net/wcs/wcseo/1.1 | 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 | http://www.opengis.net/wcs/crs/1.0 | WCS CRS Extension
gmd | http://www.isotc211.org/2005/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 | http://standards.iso.org/iso/19115/-3/mdb/1.0 | 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. EO data model

### 6.1. Overview

This Clause 6, together with Clauses 7 and 8, establishes the EO-WCS core requirements class, eowcs as well as the eowcs_geteocoverageset one where stated, particularly subclause 7.6.

The data model of this EO-WCS centers around the data structure of an Earth Observation coverage (EO Coverage), which is a coverage extended with EO Metadata [OGC 10-157r4] and bound to a location on the Earth. EO Coverages are a subtype of either `GMLCOV::RectifiedGridCoverage` or `GMLCOV::ReferenceableGridCoverage`.

Based on this EO Coverage concept (cf. Subclause 6.3), three main data elements are defined:

- A Dataset is an EO Coverage, which can represent, for example, a hyperspectral 2D satellite scene or a 3D atmospheric model; cf. Subclause 6.4. A Dataset can be a Rectified Dataset or a Referenceable Dataset, depending on the type of EO Coverage it is derived from.

- A Stitched Mosaic is a collection of EO Coverages referring to co-referenced Datasets; cf. Subclause 6.5. A Stitched Mosaic can be a Rectified Stitched Mosaic or a Referenceable Stitched Mosaic, depending on the type of EO Coverage it is derived from. A Stitched Mosaic can be interpreted (i.e. requested) as a single coverage.

- A Dataset Series is a collection of coverages and/or Dataset Series; cf. Subclause 6.6. A Dataset Series can refer to any number of Datasets, Stitched Mosaics, and Dataset Series. A Dataset Series is not a coverage itself.

| Annex B provides Use Cases to motivate the definition of these data elements.

| 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.

Figure 1 informally symbolizes how the concepts of Dataset, Stitched Mosaic, and Dataset Series relate to each other spatio-temporally:

- A - a Dataset with a particular validity in time;

- B - a Stitched Mosaic; all its Datasets have a spatial extent contained in the Stitched Mosaic’s spatial extent and a timespan contained in the Stitched Mosaic’s time interval. The subsets contributing to the Stitched Mosaic do not overlap in space, but there may be empty (nil) areas.

- C - the overall Dataset Series combining Datasets and Stitched Mosaics.

Figure 1. Conceptual view of a Dataset Series with Stitched Mosaic and Dataset

Figure 2 contains the UML diagram defining classes (types) and their correlations in the EO-WCS.

### 6.2. EO Metadata

Every EO Coverage contains EO Metadata, consisting of an EarthObservation record as defined in the OGC Earth Observation Metadata Profile of Observations and Measurements [OGC 10-157r4] and a lineage describing the history of operations leading to the coverage on hand.

Requirement 1 /req/eowcs/eo-metadata-structure

> A `EOWCS::EOMetadata` instance shall conform to Table 2, Figure 2, Figure 3, and the XML Schema being part of this standard.

Table 2. Components of `EOWCS::EOMetadata` structure
Name | Definition | Data type | Multiplicity
--- | --- | --- | ---
earthObservation | EO metadata record for this coverage object | `EOP::EarthObservation` | one (mandatory)
lineage | History record describing an operation that has been applied to this object | `EOWCS::Lineage` | zero or more (optional)

Figure 2. UML Model of WCS EO Application Profile Schema

| Throughout this standard, `eop:` and `EOP::` can be substituted by `opt:` and `OPT::` or `sar:` and `SAR::`, respectively, as in [OGC 10-157r4] `opt` and `sar` are in the substitution group of `eop`.

Figure 3. UML Lineage class diagram

| The lineage records are supposed to describe the history of processing steps that has led to the coverage on hand. As at the time of this writing there is no canonical format for such histories available in OGC, for the purpose of this specification no assumption is made about the contents of a lineage record, except that GetCoverage appends its request verbatim as an additional record (see Requirement 55 /req/eowcs/getCoverage-response-lineage-in-eo-metadata).

The footprint of an EO Coverage, which contains one or more bounding polygons to describe the region of valid data more accurately than the EO Coverage’s bounding box, is mandatory as opposed to [OGC 10-157r4].

Requirement 2 /req/eowcs/footprint-in-eo-metadata

> The `EOWCS::EOMetadata` element of `EOWCS::ReferenceableEOCoverage` and `EOWCS::RectifiedEOCoverage` instances shall contain an `eop:EarthObservation/om:featureOfInterest/eop:Footprint` element.

| As per [OGC 10-157r4], the footprint is always given in WGS84.

### 6.3. EO Coverage

#### 6.3.1. Overview

An EO Coverage is a coverage as defined in the Coverages Implementation Schema (renamed from GML Application Schema - Coverages) [OGC 09-146r2]. EO Coverages appear in two variants:

- Rectified EO Coverages are derived from Rectified Grid Coverage as defined in [OGC 09-146r2];

- Referenceable EO Coverages are derived from Referenceable Grid Coverage as defined in [OGC 09-146r2].

Requirement 3 /req/eowcs/eo-coverage-structure

> `EOWCS::ReferenceableEOCoverage` and `EOWCS::RectifiedEOCoverage` instances shall conform to Figure 2, Figure 3, and the XML Schema being part of this standard.

| An EO Coverage can have any number of dimensions as long as it adheres to the requirements below. Particularly it needs a footprint bound to the Earth and a temporal validity.

#### 6.3.2. EO Metadata

An EO Coverage has an EO Metadata record associated.

Requirement 4 /req/eowcs/eo-metadata-in-eo-coverage

> `EOWCS::ReferenceableEOCoverage` and `EOWCS::RectifiedEOCoverage` instances shall contain one metadata element of type `EOWCS::EOMetadata`.

| Besides this specific metadata element there may be further metadata elements.

| According to the rules of GML, a xlink:href URI to an accessible element of type `EOWCS::EOMetadata` can be provided instead of the element itself in any place of the XML Schema where such a metadata record appears.

The EO Metadata record associated with an EO Coverage contains a back reference to the coverage.

Requirement 5 /req/eowcs/eop-identifier-in-eo-metadata

> The `EOWCS::EOMetadata` element of `EOWCS::ReferenceableEOCoverage` and `EOWCS::RectifiedEOCoverage` instances shall contain an element `eop:EarthObservation/eop:metadataProperty/eop:EarthObservationMetaData/eop:identifier` whose 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) is identical to the EO Coverage identifier.

| Normally, this word (i.e. NCName) acting as coverage identifier will be the only contents of the `eop:identifier` string and thus both elements will be equal.

#### 6.3.3. Spatio-temporal extent

The EO Coverage’s extent of valid data is given by its EO Metadata footprint, which refines the coverage’s envelope.

Requirement 6 /req/eowcs/footprint-inside-boundedBy

> In `EOWCS::ReferenceableEOCoverage` and `EOWCS::RectifiedEOCoverage` instances, all polygons listed in `eop:EarthObservation/om:featureOfInterest/eop:Footprint` element shall be geometrically contained in the bounding box of the `gml:boundedBy` element of the `gml:Envelope`.

| By definition, the footprint is expressed in WGS84.

An EO Coverage has a time period of validity associated.

Requirement 7 /req/eowcs/phenomenonTime-in-eo-metadata

> The `EOWCS::EOMetadata` element of a `EOWCS::ReferenceableEOCoverage` or `EOWCS::RectifiedEOCoverage` instance shall contain elements `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:beginPosition` and `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:endPosition` where `beginPosition ≤ endPosition`.

| This typically is the time period where image acquisition has taken place.

Requirement 8 /req/eowcs/phenomenonTime-iso8601

> For any given EO Coverage, its temporal validity values shall be expressed in ISO 8601 [2].

#### 6.3.4. Range type

The range type of an EO Coverage is extended to include further useful information for example to know how to convert stored numbers to physical properties.

Requirement 9 /req/eowcs/rangeTypeExtension

> If additional range type information is made available then the `gmlcov:rangeType` element of `EOWCS::ReferenceableEOCoverage` and `EOWCS::RectifiedEOCoverage` instances shall contain `wcseo:rangeTypeExtension` elements either under the `swe:DataRecord/swe:extension` or each `swe:DataRecord/swe:field/swe:Quantity/swe:extension` element or both.

Requirement 10 /req/eowcs/rangeType-uom

> In `EOWCS::ReferenceableEOCoverage` and `EOWCS::RectifiedEOCoverage` instances, the `code` attribute of the `swe:uom` element of each `swe:Quantity` element in the `gmlcov:rangeType` element shall hold the unit of the measured physical property.

| The data type is provided explicitly in the `wcseo:rangeTypeExtension` element or implicitly via the actual coverage encoding.

Requirement 11 /req/eowcs/rangeType-name

> In `EOWCS::ReferenceableEOCoverage` and `EOWCS::RectifiedEOCoverage` instances, the `swe:identifier` element of each `swe:Quantity` element under each `swe:field` element shall hold the URL-encoded identifier of the respective field (also referred to as band or channel) and the `name` attribute of each `swe:field` element shall hold the 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 identifier of the respective field.

| Typically the two values are identical. This requirement addresses cases where the identifier includes characters not allowed in `NCName` like `:`, `@`, `$`, `%`, `&`, `/`, `+`, `,`, `;`, or any whitespace characters or where it starts with a number, minus, or dot. For example an ID of `gray band` should use `gray` for the `name` attribute and `gray%20band` for the `swe:identifier` element.

Example: 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%20band</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>

#### 6.3.5. Range set

Cells outside the footprint hold only nil values.

Requirement 12 /req/eowcs/range-set-of-eo-coverage

> In `EOWCS::ReferenceableEOCoverage` and `EOWCS::RectifiedEOCoverage` instances, all cells whose locations are outside the EO Metadata footprint when both are evaluated in WGS84, shall contain nil values as defined in the bounding EO Coverage’s range type.

### 6.4. Dataset

A Dataset is an EO Coverage as symbolized in Figure 4. A Dataset is either a Referenceable Dataset or a Rectified Dataset, derived from `EOWCS::ReferenceableEOCoverage` or `EOWCS::RectifiedEOCoverage`, respectively.

| Typically, a Dataset represents a (single- or multi-band) satellite/aerial image scene.

Requirement 13 /req/eowcs/dataset-structure

> A `EOWCS::ReferenceableDataset` and a `EOWCS::RectifiedDataset` shall conform to Figure 2, Figure 3, and the XML Schema being part of this standard.

Figure 4. Conceptual view of a Dataset: in referenced (left) and unreferenced coordinates (right)

| This definition includes the "field-of-View" of a sensor, or "cut", according to sensor specific data specification at the resolution of the sensor (also referred to as Level-0 or Level-1 data).

### 6.5. Stitched Mosaic

#### 6.5.1. Overview

A Stitched Mosaic is an identifiable, queryable, referenced EO Coverage as symbolized in Figure 5. A Stitched Mosaic is either a Referenceable Stitched Mosaic or a Rectified Stitched Mosaic, derived from `EOWCS::ReferenceableEOCoverage` or `EOWCS::RectifiedEOCoverage`, respectively.

Stitched Mosaics refer to one or more Datasets. All cells within a Stitched Mosaic which are not located inside any `contributingFootprint` of any of the contained Datasets carry nil values.

Figure 5. Conceptual view of a Stitched Mosaic: composed from Datasets (Stitched Mosaic bounding box dashed)
Requirement 14 /req/eowcs/referenceableStitchedMosaic-structure

> `EOWCS::ReferenceableStitchedMosaic` instances shall conform to Figure 2, Figure 3, Table 3, Table 5, and the XML Schema being part of this standard.

Table 3. Components of `EOWCS::ReferenceableStitchedMosaic` structure
Name | Definition | Data type | Multiplicity
--- | --- | --- | ---
dataset | Reference to a Referenceable Dataset referred to by the Stitched Mosaic on hand | `EOWCS::DatasetReference` | one or more (mandatory)

Requirement 15 /req/eowcs/rectifiedStitchedMosaic-structure

> `EOWCS::RectifiedStitchedMosaic` instances shall conform to Figure 2, Figure 3, Table 4, Table 5, and the XML Schema being part of this standard.

Table 4. Components of `EOWCS::RectifiedStitchedMosaic` structure
Name | Definition | Data type | Multiplicity
--- | --- | --- | ---
dataset | Reference to a Rectified Dataset referred to by the Stitched Mosaic on hand | `EOWCS::DatasetReference` | one or more (mandatory)

Table 5. Components of `EOWCS::DatasetReference` structure
Name | Definition | Data type | Multiplicity
--- | --- | --- | ---
datasetId | Dataset referred to by the Stitched Mosaic on hand | `WCS::CoverageId` | one (mandatory)
contributingFootprint | Horizontal bounding polygon enclosing data areas of the Dataset contributing to the Stitched Mosaic on hand | `EOP::Footprint` | zero or one (optional)

The Dataset references of an EO Coverage shall be consistent with the coverage’s EO Metadata references.

Requirement 16 /req/eowcs/composedOf-in-stitched-mosaic

> In `EOWCS::ReferenceableStitchedMosaic` and `EOWCS::RectifiedStitchedMosaic` instances with at least one `eop:EarthObservation/eop:metaDataProperty/eop:Earth ObservationMetaData/eop:composedOf`, the set of these elements shall be equal to the set of `dataset` identifiers of the Stitched Mosaic.

#### 6.5.2. Spatio-temporal extent

A Stitched Mosaic is defined through a collection of spatially non-overlapping subsets of Datasets it refers to.

Requirement 17 /req/eowcs/contributingFootprint-inside-footprint

> For all Stitched Mosaics sm referring to some Datasets d with an associated `contributingFootprint`, this `contributingFootprint` shall be geographically contained in the footprint of d.

Requirement 18 /req/eowcs/contributingFootprint-pairwise-disjoint

> For all Stitched Mosaics sm referring to Datasets d1 and d2, with an associated `contributingFootprint`, the `contributingFootprint`s of the d1 and d2 references shall be pair-wise disjoint.

Requirement 19 /req/eowcs/contributingFootprint-union-of-footprints

> The footprint of a Stitched Mosaic shall be given by the union of the `contributingFootprint`s of the Datasets this Stitched Mosaic refers to.

Requirement 20 /req/eowcs/dataset-domain-set-in-stitched-mosaic-domain-set

> For all Datasets d referred to by some Stitched Mosaics sm, all cells of d as defined by the domain set of d shall be contained in the set of cells of sm as defined by the domain set of sm.

Datasets referred to by a Stitched Mosaic shall have aligned cell locations:

- In case of Rectified EO Coverages, the grids of Datasets of a Stitched Mosaics shall have the same resolution.

  Requirement 21 /req/eowcs/datasets-in-rectifiedStitcheMosaic-same-offsetVector

  > All Datasets referred to by a Rectified Stitched Mosaic shall have identical values in the `gml:offsetVector` elements of their domain sets.

  Requirement 22 /req/eowcs/rectifiedStitchedMosaic-offsetVector

  > In a Rectified Stitched Mosaic instance, the value of the `gml:offsetVector` elements of the domain set shall be given by the corresponding values of the Rectified Datasets the Rectified Stitched Mosaic refers to.

- In case of Referenceable EO Coverages, Datasets of Stitched Mosaics shall have aligned cell locations in overlapping areas.

  Requirement 23 /req/eowcs/referenceableStitchedMosaic-domain-set

  > For any pair d1 and d2 of Datasets referred to by a given Stitched Mosaic, the set of point locations in the geographic overlap of the d1 and d2 domain set shall be identical.

The temporal validity of Stitched Mosaics is defined by the temporal validities of the Datasets the Stitched Mosaic refers to.

Requirement 24 /req/eowcs/temporal-validity-stitched-mosaic

> For any given Stitched Mosaic, its temporal validity given by its `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:beginPosition` and `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:endPosition` elements in `wcseo:EOMetadata` shall be defined as the minimal time interval containing the temporal validities of all Datasets the Stitched Mosaic refers to.

#### 6.5.3. Range type

Stitched Mosaics and their Datasets share the same range type.

Requirement 25 /req/eowcs/datasets-in-stitched-mosaic-same-range-type

> For all Datasets d some Stitched Mosaic sm refers to the following shall hold: The range type of d is identical to the range type of sm.

#### 6.5.4. Range set

The content of a Stitched Mosaic is given by the Datasets it refers to; cells of a Stitched Mosaic with domain coordinates outside of any embedded Dataset’s contributingFootprint carry nil values (cf. Figure 6).

Requirement 26 /req/eowcs/nil-values-in-stitched-mosaic

> If the domain set of a Stitched Mosaic contains locations which are not inside any `contributingFootprint` of any Dataset the Stitched Mosaic refers to then the nil value set of that Stitched Mosaic shall not be empty.

Requirement 27 /req/eowcs/range-values-of-stitched-mosaic

> For a Stitched Mosaic sm its range values of cells with location p, expressed in any of the CRSs supported by sm, shall be given as follows:
> - if p is located within the `contributingFootprint` of some Dataset d referred to by sm then it is the range value of d at p;
> - if p is not located within the `contributingFootprint` of any Dataset d referred to by sm then it is one of the range values contained in the nil value set of sm.

### 6.6. Dataset Series

A Dataset Series is an identifiable, queryable collection of EO Coverages and Dataset Series.

| 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.

| A Dataset referred to by a Stitched Mosaic referred to by a Dataset Series is not per se referred to by that Dataset Series. However, it is allowed that such a Dataset is also referred to by the enclosing Dataset Series.

Figure 6. Conceptual view of a Dataset Series referring to Datasets and Stitched Mosaics (Dataset Series domain boundary dashed)
Requirement 28 /req/eowcs/datasetSeries-structure

> A `EOWCS::DatasetSeries` shall conform to Figure 2, Figure 3, Table 6, and the XML Schema being part of this standard.

Table 6. Components of `EOWCS::DatasetSeries` structure
Name | Definition | Data type | Multiplicity
--- | --- | --- | ---
datasetSeriesId | Identifier of the Dataset Series on hand | `NCName` | one (mandatory)
footprint | Horizontal bounding polygon enclosing valid data areas of the Dataset Series | `EOP::Footprint` | one (mandatory)
timePeriod | Temporal period of validity of all data in the Dataset Series | `GML::TimePeriod` | one (mandatory)
metadata | EO Metadata of the Dataset Series on hand | `ows:Metadata` | zero or more (optional)
referenceableStitchedMosaic | Referenceable Stitched Mosaic to which the Dataset Series on hand refers | `WCS::CoverageId` | zero or more (optional)
rectifiedStitchedMosaic | Rectified Stitched Mosaic to which the Dataset Series on hand refers | `WCS::CoverageId` | zero or more (optional)
referenceableDataset | Referenceable Dataset to which the Dataset Series on hand refers | `WCS::CoverageId` | zero or more (optional)
rectifiedDataset | Rectified Dataset to which the Dataset Series on hand refers | `WCS::CoverageId` | zero or more (optional)
datasetSeries | Dataset Series to which the Dataset Series on hand refers | `EOWCS::datasetSeriesId` | zero or more (optional)

| A Dataset Series and a Stitched Mosaic contained therein may both refer to the same Dataset.

The spatial extent of a Dataset Series shall enclose the spatial extents of all Stitched Mosaics, Datasets, and Dataset Series the Dataset Series refers to.

Requirement 29 /req/eowcs/footprint-in-datasetSeries

> The `footprint` of a Dataset Series instance shall enclose the union of the footprints of all Stitched Mosaics, Datasets, and Dataset Series the Dataset Series refers to, expressed in WGS84.

| As opposed to Stitched Mosaics, Dataset Series do not require disjointness of the EO Coverages they refer to.

The temporal validity of a Dataset Series is defined by the union of the temporal validities of all Stitched Mosaics, Datasets, and Dataset Series the Dataset Series refers to.

Requirement 30 /req/eowcs/timePeriod-in-datasetSeries

> For any given Dataset Series, the `timePeriod` element shall enclose the temporal validities of all Stitched Mosaics, Datasets, and Dataset Series the Dataset Series refers to, expressed in ISO 8601 [2].

A Dataset Series has an EO Metadata record associated.

Requirement 31 /req/eowcs/metadata-in-datasetSeries

> A Dataset Series instance shall contain one metadata element of type `EOWCS::EOMetadata`.

| A Dataset Series may contain multiple metadata elements holding the metadata in different formats. Explicitly supported metadata elements are `eop:EarthObservation`, `gmd:MD_Metadata`, `gmi:MI_Metadata`, `mdb:MD_Metadata`, or `ows:Reference` or any element in the substitutionGroup of any of these.

A Dataset Series shall not refer to any Dataset Series that refers to it either directly or via other Dataset Series i.e. there shall be no circular references.

Requirement 32 /req/eowcs/nocircularreference-of-datasetSeries

> A Dataset Series shall only refer to Dataset Series that do not refer to the Dataset Series at hand either directly or via other Dataset Series.

Example: The following XML fragment shows a DatasetSeries instance.

    <?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/XMLSchema-instance" 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-metadata-from-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>

## 7. EO service model

### 7.1. Overview

This Clause defines request types and their responses for operations on EO Coverages. EO Coverages can be offered by a WCS server alongside with any other type of coverages. Behavior of the service on non-EO Coverages remains unchanged.EO data model

### 7.2. GetCapabilities operation

#### 7.2.1. GetCapabilities request

The GetCapabilities request is extended over WCS Core [OGC 09-110r4] as follows:

- In the `sections` request parameter, values "DatasetSeriesSummary" and "CoverageSummary" are allowed in addition to those defined in OWS Common [06-121r9].

Requirement 33 /req/eowcs/getCapabilities-request-sections

> If a GetCapabilities request contains an `ows:Sections` element then this element shall contain `ows:Section` elements with the values defined in OWS Common, or "DatasetSeriesSummary", or "CoverageSummary".
> Dependency: [OGC 06-121r9] clause 7.3.3

#### 7.2.2. GetCapabilities response

The GetCapabilities response is extended over WCS Core [OGC 09-110r4] as follows:

- There is an additional `DatasetSeriesSummary` section reporting identifiers of Dataset Series offered by the service on hand.

- There is an optional constraint `CountDefault` specifying the maximum number of `CoverageDescription` and `DatasetSeriesDescription` elements reported in a `DescribeEOCoverageSet` response.

- For the eowcs_geteocoverageset conformance class there is an additional `<wcseo:wcseoMetadata` element inside the `wcs:Extension` element of the `wcs:ServiceMetadata` element to specify default and supported package formats for the GetEOCoverageSet operation.

| An EO-WCS server may choose to not report, in the `CoverageSummary` section of a GetCapabilities response, the identifiers of Stitched Mosaic coverages referred to by some Dataset Series and the identifiers of Dataset coverages referred to by some Stitched Mosaic or Dataset Series.

In a GetCapabilities response, a server announces availability of this EO-WCS like an extension.

Requirement 34 /req/eowcs/getCapabilities-response-conformance-class-in-profile

> A WCS service implementing this extension shall include the following URI in a `Profile` element in the `ServiceIdentification` in a GetCapabilities response: `http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs`

Requirement 35 /req/eowcs_geteocoverageset/getCapabilities-response-conformance-class-in-profile

> A WCS service implementing the eowcs_geteocoverageset conformance class of this extension shall include the following URI in a `Profile` element in the `ServiceIdentification` in a GetCapabilities response: `http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs_geteocoverageset`

Requirement 36 /req/eowcs/getCapabilities-response-structure

> The response to a successful GetCapabilities request shall consist of a data structure as defined in Figure 7, Table 7, and the XML Schema being part of this standard.
> Dependency: [OGC 09-110r4] Clause 8 (http://www.opengis.net/doc/IS/wcs-core-2.0.1/clause/8)

Figure 7. GetCapabilities response UML class diagram

Table 7. Components of `EOWCS::DatasetSeriesSummary` structure
Name | Definition | Data type | Multiplicity
--- | --- | --- | ---
DatasetSeriesId | Identifier of a Dataset Series offered by this service | `NCName` | one (mandatory)
wgs84BoundingBox | Spatial extent of the Dataset Series | `OWS Common::WGS84BoundingBox` | one (mandatory)
TimePeriod | Time interval of validity of the Dataset Series | `GML:TimePeriod` | one (mandatory)
metadata | Reference to more metadata about this Dataset Series | `OWS Common::Metadata` | zero or one (optional)

Requirement 37 /req/eowcs/getCapabilities-response-datasetSeriesSummary

> In the response to a successful GetCapabilities request containing a `EOWCS::DatasetSeriesSummary` section, each Dataset Series identifier listed shall refer to a Dataset Series offered by the server.

Requirement 38 /req/eowcs/getCapabilities-response-datasetSeriesSummary-no-duplicates

> A response to a successful GetCapabilities request containing a `EOWCS::DatasetSeriesSummary` section shall not contain any duplicate Dataset Series identifier.

Requirement 39 /req/eowcs/getCapabilities-response-coverageSummary

> In the response to a successful GetCapabilities request containing an EO Coverage in a `WCS::CoverageSummary` section, each coverage identifier listed as EO Coverage shall refer to an EO Coverage offered by the server.

The response shall respect the `sections` request parameter.

Requirement 40 /req/eowcs/getCapabilities-response-coverageSummary-section

> If a GetCapabilities request contains a `sections` parameter then a successful response shall contain `wcs:CoverageSummary` elements if and only if the section parameter list contains one of the values "CoverageSummary", "Contents", or "All".

Requirement 41 /req/eowcs/getCapabilities-response-datasetSeriesSummary-section

> If a GetCapabilities request contains a `sections` parameter then a successful response shall contain `wcseo:DatasetSeriesSummary` elements if and only if the section parameter list contains one of the values "DatasetSeriesSummary", "Contents", or "All".

The coverage subtype shall indicate the specific type of the coverage returned, in case of an EO Coverage.

Requirement 42 /req/eowcs/getCapabilities-response-coverageSubtype

> In the response to a successful GetCapabilities request, each EO Coverage listed shall contain in its `WCS::CoverageSubtype` element the value given in Table 8 corresponding to its type.

Table 8. Values for `CoverageSubtype` elements of EO Coverages
Type of coverage identified by `CoverageIdentifier` | `CoverageSubtype` value
--- | ---
`EOWCS::RectifiedDataset` | `RectifiedDataset`
`EOWCS::ReferenceableDataset` | `ReferenceableDataset`
`EOWCS::RectifiedStitchedMosaic` | `RectifiedStitchedMosaic`
`EOWCS::ReferenceableStitchedMosaic` | `ReferenceableStitchedMosaic`

Requirement 43 /req/eowcs/getCapabilities-response-countDefault

> If the response to a successful GetCapabilities request contains an `ows:Constraint` element in its `ows:OperationsMetadata` element then its name attribute shall hold a value as defined in Table 9 and the XML Schema being part of this standard.

Table 9. Values for `ows:Constraint` elements
Name | Definition | Data type | Multiplicity
--- | --- | --- | ---
CountDefault | Default value for the count parameter defined for DescribeEOCoverageSet and GetEOCoverageSet requests. | `Integer` greater than or equal to zero | zero or one (optional)
ImplementsResultPaging | Indicates if the server supports the ability to page through a result set responding with `count` features at a time. | `Boolean`; either `TRUE` or `FALSE` | zero or one (optional)

| Servers are strongly encouraged to specify a value for CountDefault as means of self defense, so that a request may not clog the server.

Requirement 44 /req/eowcs/getCapabilities-response-paging-supported

> The response to a successful GetCapabilities request to an EO-WCS supporting paging shall contain `ows:Contraint` elements with name attribute values of `ImplementsResultPaging` and `CountDefault`. The `ImplementsResultPaging` constraint shall have a value of "TRUE".

Requirement 45 /req/eowcs_geteocoverageset/getCapabilities-response-wcseoMetadata

> The response to a successful GetCapabilities request to an EO-WCS supporting the eowcs_geteocoverageset conformance class shall contain a `wcseo:wcseoMetadata` element in the `wcs:Extension` element of `wcs:ServiceMetadata` including at least a `wcseo:defaultPackageFormat` element.

Requirement 46 /req/eowcs_geteocoverageset/getCapabilities-response-defaultPackageFormat

> The `wcseo:defaultPackageFormat` element delivered in the `wcseo:wcseoMetadata` element of the response to a successful GetCapabilities request shall specify the default format used for GetEOCoverageSet responses.

Requirement 47 /req/eowcs_geteocoverageset/getCapabilities-response-packageFormatSupported

> The `wcseo:packageFormatSupported` element(s) delivered in the `wcseo:wcseoMetadata` element of the response to a successful GetCapabilities request shall list one to one the MIME type identifiers of all supported packaging formats for the GetEOCoverageSet operation.

Example: The following XML excerpt shows a possible `Contents` section containing Dataset Series information:

    <wcs:Contents>
      <wcs:CoverageSummary>
        <wcs:CoverageId>someEOCoverage</wcs:CoverageId>
        <wcs:CoverageSubtype>RectifiedDataset</wcs:CoverageSubtype>
      </wcs:CoverageSummary>
      <wcs:Extension>
        <wcseo:DatasetSeriesSummary>
          <ows:WGS84BoundingBox>
            <ows:LowerCorner>-180 -90</ows:LowerCorner>
            <ows:UpperCorner>180 90</ows:UpperCorner>
            </ows:WGS84BoundingBox>
          <wcseo:DatasetSeriesId>someDatasetSeries</wcseo:DatasetSeriesId>
          <gml:TimePeriod gml:id="someDatasetSeries_timeperiod">
            <gml:beginPosition>2010-01-01T00:00:00.000</gml:beginPosition>
            <gml:endPosition>2010-12-31T23:59:59.999</gml:endPosition>
            </gml:TimePeriod>
          </wcseo:DatasetSeriesSummary>
      </wcs:Extension>
    </wcs:Contents>

Example: The following XML excerpt shows a possible `Constraint` section containing a CountDefault value:

    <ows:OperationsMetadata>
      ...
      <ows:Constraint name="CountDefault">
        <ows:NoValues />
        <ows:DefaultValue>100</ows:DefaultValue>
      </ows:Constraint>
      <ows:Constraint name="ImplementsResultPaging">
        <ows:NoValues/>
        <ows:DefaultValue>TRUE</ows:DefaultValue>
      </ows:Constraint>
    </ows:OperationsMetadata>

Example: The following XML excerpt shows a possible `wcs:ServiceMetadata` section containing valid `wcseo:packageFormatSupported` elements:

    <wcs:ServiceMetadata>
      <wcs:formatSupported>application/gml+xml</wcs:formatSupported>
      <wcs:formatSupported>image/tiff</wcs:formatSupported>
      <wcs:Extension>
        <wcseo:wcseoMetadata>
          <wcseo:defaultPackageFormat>application/metalink4+xml</wcseo:defaultPackageFormat>
          <wcseo:packageFormatSupported>application/x-gzip</wcseo:packageFormatSupported>
          <wcseo:packageFormatSupported>application/gzip</wcseo:packageFormatSupported>
          <wcseo:packageFormatSupported>application/bzip</wcseo:packageFormatSupported>
          <wcseo:packageFormatSupported>application/x-bzip</wcseo:packageFormatSupported>
          <wcseo:packageFormatSupported>application/tar</wcseo:packageFormatSupported>
          <wcseo:packageFormatSupported>application/x-tar</wcseo:packageFormatSupported>
          <wcseo:packageFormatSupported>application/zip</wcseo:packageFormatSupported>
          <wcseo:packageFormatSupported>application/metalink4+xml</wcseo:packageFormatSupported>
          <wcseo:packageFormatSupported>application/metalink+xml</wcseo:packageFormatSupported>
        </wcseo:wcseoMetadata>
      </wcs:Extension>
    </wcs:ServiceMetadata>

### 7.3. DescribeCoverage operation

#### 7.3.1. DescribeCoverage request

The DescribeCoverage request is unchanged over WCS Core [OGC 09-110r4]. In particular, identifiers of EO Coverages can be passed as input parameters.

| A DescribeCoverage request is possible on the identifiers of EO Coverages offered by the server even if these are not listed in a GetCapabilities response.

#### 7.3.2. DescribeCoverage response

In a DescribeCoverage response, EO Coverage descriptions additionally contain the EO Metadata record.

Requirement 48 /req/eowcs/describeCoverage-response-eo-metadata

> In the response to a successful DescribeCoverage request on an EO Coverage, one `EOWCS::EOMetadata` element shall be present containing the EO Metadata component of the coverage addressed.

The coverage subtype shall indicate the specific type of the coverage returned, in case of an EO Coverage.

Requirement 49 /req/eowcs/describeCoverage-response-coverageSubtype

> In the response to a successful DescribeCoverage request addressing an EO Coverage, each EO Coverage listed shall contain in its `WCS::CoverageSubtype` element the value given in Table 8 corresponding to its type.

Example: The following XML fragment shows parts of a possible DescribeCoverage response on an EO Coverage:

    <wcs:CoverageDescriptions>
      <wcs:CoverageDescription gml:id="c1">
        <gml:boundedBy>
          <gml:Envelope axisLabels="lat long" srsDimension="2" srsName="http://www.opengis.net/def/crs/EPSG/0/4326" uomLabels="deg deg">
            <gml:lowerCorner>42.862778 1.896944</gml:lowerCorner>
            <gml:upperCorner>43.516667 2.861667</gml:upperCorner>
          </gml:Envelope>
        </gml:boundedBy>
        <wcs:CoverageId>c1</wcs:CoverageId>
        <gmlcov:metadata>
          <gmlcov:Extension>
            <wcseo:EOMetadata>
              <eop:EarthObservation gml:id="eop_c1">
                <om:phenomenonTime>
                  <gml:TimePeriod gml:id="tp_c1">
                    <gml:beginPosition>2008-03-13T10:00:06.000</gml:beginPosition>
                    <gml:endPosition>2008-03-13T10:20:26.000</gml:endPosition>
                  </gml:TimePeriod>
                </om:phenomenonTime>
                <om:resultTime>
                  <gml:TimeInstant gml:id="archivingdate_c1">
                  <gmlcovl:timePosition>2001-08-13T11:02:47.999</gml:timePosition>
                  </gml:TimeInstant>
                </om:resultTime>
                <om:procedure />
                <om:observedProperty />
                <om:featureOfInterest>
                  <eop:Footprint gml:id="footprint_c1">
                    <eop:multiExtentOf>
                      <gml:MultiSurface gml:id="multisurface_c1" srsName="EPSG:4326">
                        <gml:surfaceMember>
                          <gml:Polygon gml:id="polygon_c1">
                            <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:surfaceMember>
                      </gml:MultiSurface>
                    </eop:multiExtentOf>
                    <eop:centerOf>
                      <gml:Point gml:id="c1_p" srsName="EPSG:4326">
                        <gml:pos>43.190833 2.374167</gml:pos>
                      </gml:Point>
                    </eop:centerOf>
                  </eop:Footprint>
                </om:featureOfInterest>
                <om:result />
                <eop:metaDataProperty>
                  <eop:EarthObservationMetaData>
                  <eop:identifier>c1</eop:identifier>
                  <eop:acquisitionType>NOMINAL</eop:acquisitionType>
                  <eop:status>ARCHIVED</eop:status>
                  </eop:EarthObservationMetaData>
                </eop:metaDataProperty>
              </eop:EarthObservation>
            </wcseo:EOMetadata>
          </gmlcov:Extension>
        </gmlcov:metadata>
        <gml:domainSet>
          <gml:RectifiedGrid dimension="2" gml:id="c1_grid">
            ...
          </gml:RectifiedGrid>
        </gml:domainSet>
        <gmlcov:rangeType>
          ...
        </gmlcov:rangeType>
        <wcs:ServiceParameters>
          <wcs:CoverageSubtype>RectifiedDataset</wcs:CoverageSubtype>
          <wcs:nativeFormat>image/tiff</wcs:nativeFormat>
        </wcs:ServiceParameters>
      </wcs:CoverageDescription>
    </wcs:CoverageDescriptions>

| The complete example is provided with the schema files being part of this standard.

### 7.4. GetCoverage operation

#### 7.4.1. GetCoverage request

The GetCoverage request is unchanged over WCS Core [OGC 09-110r4], except that for EO Coverages slicing is disallowed as it would leave the EO Metadata undefined.

| A GetCoverage request is possible on the identifiers of EO Coverages offered by the server even if these are not listed in a GetCapabilities response.

Requirement 50 /req/eowcs/getCoverage-request-no-slicing

> A GetCoverage request on EO Coverages shall not contain a slicing operation.

#### 7.4.2. GetCoverage response

The GetCoverage response is as defined in the WCS Core [OGC 09-110r4], however extended in two respects:

- The coverage returned contains exactly one metadata element holding the EO Metadata record (it may contain further metadata elements in addition);

- The lineage component of the EO Metadata record returned consists of the preexisting lineage sequence plus one element appended which describes the GetCoverage request on hand.

| As always, whether all these elements will be available to a client depends on the degree of support for the information items by the requested coverage encoding.

On EO Coverages, a GetCoverage request shall produce a coverage of the type corresponding to the coverage inspected.

Requirement 51 /req/eowcs/getCoverage-response-coverage-type

> The response to a successful GetCoverage request
> - on a Rectified Stitched Mosaic shall be of type RectifiedStitchedMosaic,
> - on a Rectified Dataset shall be of type RectifiedDataset,
> - on a Referenceable Stitched Mosaic shall be of type ReferenceableStitchedMosaic, and
> - on a Referenceable Dataset shall be of type ReferenceableDataset.

The EO Metadata, including the extended lineage record, shall be delivered alongside with the coverage data, adjusted according to the operations executed during GetCoverage evaluation.

Requirement 52 /req/eowcs/getCoverage-response-eo-metadata

> In the response to a successful GetCoverage request on an EO Coverage, the `EOWCS::EOMetadata` of the coverage returned shall contain the complete `EOWCS::EOMetadata` of the coverage addressed, adjusted as specified in Requirement 53 /req/eowcs/getCoverage-response-eo-metadata-in-stitched-mosaic, Requirement 54 /req/eowcs/getCoverage-response-footprint-in-eo-metadata, and Requirement 55 /req/eowcs/getCoverage-response-lineage-in-eo-metadata.

Requirement 53 /req/eowcs/getCoverage-response-eo-metadata-in-stitched-mosaic

> In the response to a successful GetCoverage request on a Stitched Mosaic, the `EOWCS::EOMetadata` of the coverage returned shall contain the original Stitched Mosaic’s references to those Datasets which have a non-empty intersection with the effective spatio-temporal request trim interval, and no other ones.

Requirement 54 /req/eowcs/getCoverage-response-footprint-in-eo-metadata

> If, in a successful GetCoverage request on an EO Coverage, trimming along spatial coordinates is specified then the footprint of the `EOWCS::EOMetadata` in the coverage returned shall be given by the intersection of the spatial request interval and the footprint of the coverage requested. Otherwise, the footprint in the result coverage shall be given by the footprint of the coverage requested.

The lineage record shall be extended by a reproducible description of the GetCoverage request originating this output.

Requirement 55 /req/eowcs/getCoverage-response-lineage-in-eo-metadata

> In the response to a successful GetCoverage request, the Lineage component shall consist of the Lineage component of the coverage requested with one record appended containing the complete, verbatim GetCoverage request leading to this response.

| This content is dependent on the protocol used by the requester. In case of a GET/KVP request, this will be the request URL with parameters. In case of an XML or SOAP request this will be an XML snippet.

Example: The following XML fragment shows parts of a possible GetCoverage response for an EO Coverage:

    <wcseo:RectifiedDataset xmlns:ows="http://www.opengis.net/ows/2.0"
    xmlns:gml="http://www.opengis.net/gml/3.2"
    xmlns:gmlcov="http://www.opengis.net/gmlcov/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/wcsEOGetCoverage.xsd" gml:id="c1">
      <gml:boundedBy>
        ...
      </gml:boundedBy>
      <gml:domainSet>
        ...
      </gml:domainSet>
      <gml:rangeSet>
        ...
      </gml:rangeSet>
      <gmlcov:rangeType>
        ...
      </gmlcov:rangeType>
      <gmlcov:metadata>
        <gmlcov:Extension>
          <wcseo:EOMetadata>
            <eop:EarthObservation gml:id="eop_c1">
              <om:phenomenonTime>
                <gml:TimePeriod gml:id="tp_c1">
                  <gml:beginPosition>2008-03-13T10:00:06.000</gml:beginPosition>
                  <gml:endPosition>2008-03-13T10:20:26.000</gml:endPosition>
                </gml:TimePeriod>
              </om:phenomenonTime>
              <om:resultTime>
                <gml:TimeInstant gml:id="archivingdate_c1">
                  <gml:timePosition>2008-03-13T11:02:47.999</gml:timePosition>
                </gml:TimeInstant>
              </om:resultTime>
              <om:procedure>
                ...
              </om:procedure>
              <om:observedProperty />
              <om:featureOfInterest>
                ...
              </om:featureOfInterest>
              <om:result>
                ...
              </om:result>
              <eop:metaDataProperty>
                ...
              /eop:metaDataProperty>
            </eop:EarthObservation>
            <wcseo:lineage>
              <!-- GetCoverage request via KVP -->
              <wcseo:referenceGetCoverage>
                <ows:Reference xlink:href="http://www.someWCS.org?SERVICE=WCS&amp;VERSION=2.0.1&amp;REQUEST=GetCoverage&amp;COVERAGEID=c1&amp;FORMAT=application/gml+xml&amp;MEDIATYPE=multipart/related" />
              </wcseo:referenceGetCoverage>
              <gml:timePosition>2011-02-04T15:45:52Z</gml:timePosition>
            </wcseo:lineage>
            <wcseo:lineage>
              <!-- GetCoverage request via POST -->
              <wcseo:referenceGetCoverage>
                <ows:ServiceReference xlink:href="http://www.someWCS.org">
                  <ows:RequestMessage>
                    <wcs:GetCoverage xmlns:wcs="http://www.opengis.net/wcs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wcs/2.0 http://schemas.opengis.net/wcs/2.0/wcsAll.xsd" service="WCS" version="2.0.1">
                      <wcs:CoverageId>c1</wcs:CoverageId>
                      <wcs:format>application/gml+xml</wcs:format>
                      <wcs:mediaType>multipart/related</wcs:mediaType>
                    </wcs:GetCoverage>
                    </ows:RequestMessage>
                  </ows:ServiceReference>
                </wcseo:referenceGetCoverage>
              <gml:timePosition>2011-02-04T15:45:52Z</gml:timePosition>
            </wcseo:lineage>
          </wcseo:EOMetadata>
        </gmlcov:Extension>
      </gmlcov:metadata>
    </wcseo:RectifiedDataset>

### 7.5. DescribeEOCoverageSet operation

#### 7.5.1. Overview

A DescribeEOCoverageSet request submits one or more Dataset Series, Stitched Mosaic, or Dataset identifiers together with a spatio-temporal subsetting criterion ("bounding box"). The spatial constraint is expressed in WGS84 [4], the temporal constraint in ISO 8601 [2].

The response to a successful request on a Dataset Series consists of a (possibly empty) set of descriptions of Datasets and Stitched Mosaics and a (possibly empty) set of descriptions of Dataset Series. The response to a successful request on a Stitched Mosaic consists of a (possibly empty) set of descriptions of Datasets. In any case, the result items are those ones which are (i) referred to directly or via Dataset Series by the object submitted and (ii) matched by the bounding box. The type of matching - `contains` or `overlaps` - is specified in the request.

#### 7.5.2. DescribeEOCoverageSet request

Requirement 56 /req/eowcs/describeEOCoverageSet-request-structure

> A DescribeEOCoverageSet request shall consist of a structure as defined in Figure 8, Table 10 and the XML Schema being part of this standard.

Figure 8. DescribeEOCoverageSet request UML diagram

Table 10. Components of `DescribeEOCoverageSet` operation request
Name | Definition | Data type | Multiplicity
--- | --- | --- | ---
`request` | Request name | `String` , fixed to "DescribeEOCoverageSet" | one (mandatory)
`eoId` | Identifier of Dataset Series, Stitched Mosaic, or Dataset to be evaluated | `NCName` | one or more (mandatory)
`containment` | Intersection mode for evaluation of object bounding box against request parameters | `String` | zero or one (optional)
`count` | Maximum number of `CoverageDescription` and `DatasetSeriesDescription` elements to be included in the response | `Integer` greater than zero | zero or one (optional)
`startIndex` | Index number within the result set from which the server shall begin presenting results in the response (the index number of the first search result is 0) | `Integer` greater than or equal to zero. Default `0` | zero or one (optional)
`sections` | Unordered list of zero or more names of the XML elements that shall be returned | `String` | zero or one (optional)
`dimensionTrim` | trim specification, as per WCS Core [OGC 09-110r4] Subclause 8.4.1 | `WCS::DimensionTrim` | zero or more (optional)

The DescribeEOCoverageSet request type contains two sections (cf. [OGC 06-121r9] Clause 7.3.3) whose appearance in the response can be controlled by the client through the optional `sections` parameter.

Requirement 57 /req/eowcs/describeEOCoverageSet-request-sections

> If a DescribeEOCoverageSet request contains an `ows: Sections` element then this element shall contain one of the values "CoverageDescriptions", "DatasetSeriesDescriptions", or "All".
> Dependency: [OGC 06-121r9] clause 7.3.3

| This use of the sections parameter is similar to its use in GetCapabilities as defined in OWS Common [OGC 06-121r9].

Requirement 58 /req/eowcs/describeEOCoverageSet-request-eoId

> Each `eoId` parameter value in a DescribeEOCoverageSet request shall be equal to the identifier of a Dataset, a Stitched Mosaic, or a Dataset Series offered by the server addressed.

| A DescribeEOCoverageSet request is possible on the identifiers of objects offered by the server even if these are not listed in a GetCapabilities response.

Requirement 59 /req/eowcs/describeEOCoverageSet-request-containment

> If a DescribeEOCoverageSet request contains a `containment` parameter then this parameter shall have one of the values "contains" or "overlaps".

Requirement 60 /req/eowcs/describeEOCoverageSet-request-dimensions

> If a DescribeEOCoverageSet request contains `dimensionTrim` elements with `dimension` parameters then each such `dimension` parameter shall have one of the values "lat", "long", or "phenomenonTime". Each of these values shall appear at most once in a given request.

Requirement 61 /req/eowcs/describeEOCoverageSet-request-crs

> A DescribeEOCoverageSet request shall use WGS84 [4] as spatial and ISO 8601 [2] as temporal CRS for the coordinates in trim requests.

| Trim coordinates are not required to lie within the boundaries of the EO Coverage inquired.

Example: The following XML instance shows a possible DescribeEOCoverageSet operation request:

    <wcseo:DescribeEOCoverageSet xmlns:wcseo="http://www.opengis.net/wcs/wcseo/1.1" xmlns:wcs="http://www.opengis.net/wcs/2.0" 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" service="WCS" version="2.0.1" count="100" startIndex="0">
      <wcseo:eoId>DS1</wcseo:eoId>
      <wcseo:containment>overlaps</wcseo:containment>
      <wcseo:sections>
        <wcseo:section>All</wcseo:section>
      </wcseo:sections>
      <wcs:DimensionTrim>
        <wcs:Dimension>long</wcs:Dimension>
        <wcs:TrimLow>16</wcs:TrimLow>
        <wcs:TrimHigh>18</wcs:TrimHigh>
      </wcs:DimensionTrim>
      <wcs:DimensionTrim>
        <wcs:Dimension>lat</wcs:Dimension>
        <wcs:TrimLow>40</wcs:TrimLow>
        <wcs:TrimHigh>42</wcs:TrimHigh>
      </wcs:DimensionTrim>
      <wcs:DimensionTrim>
        <wcs:Dimension>phenomenonTime</wcs:Dimension>
        <wcs:TrimLow>2008-03-13T10:10:00Z</wcs:TrimLow>
        <wcs:TrimHigh>2008-03-13T10:11:00Z</wcs:TrimHigh>
      </wcs:DimensionTrim>
    </wcseo:DescribeEOCoverageSet>

#### 7.5.3. DescribeEOCoverageSet response

The response to a successful DescribeEOCoverageSet request consists of a (possibly empty) set of EO Coverage descriptions and a (possibly empty) set of Dataset Series descriptions (cf. Figure 9).

Requirement 62 /req/eowcs/describeEOCoverageSet-response-structure

> The response to a successful DescribeEOCoverageSet request shall consist of a `EOWCS::EOCoverageSetDescription` structure as defined in Table 11, Figure 9 and the XML Schema being part of this standard.
> Dependency: [OGC 09-110r4] Subclause 8.3.2 (http://www.opengis.net/doc/IS/WCS/2.0/clause/8)

Table 11. Components of `EOCoverageSetDescription` structure
Name | Definition | Data type | Multiplicity
--- | --- | --- | ---
`datasetSeriesDescriptions` | Unordered sequence of DatasetSeries descriptions | `DatasetSeriesDescriptions` | zero or one (optional)
`coverageDescriptions` | Unordered sequence of coverage descriptions | `WCS::CoverageDescriptions` | zero or one (optional)

Figure 9. DescribeEOCoverageSet response UML diagram
Requirement 63 /req/eowcs/describeEOCoverageSet-response-eo-metadata

> Each `WCS::CoverageDescription` listed in the response to a successful DescribeEOCoverageSet request shall contain one `EOWCS::EOMetadata` element containing the EO Metadata component of the EO Coverage to be described.

The response shall respect the `sections` request parameter.

Requirement 64 /req/eowcs/describeEOCoverageSet-response-section-coverageDescriptions

> If a DescribeEOCoverageSet request contains a `sections` parameter then a successful response shall contain a `wcs:CoverageDescriptions` element if and only if the section parameter list contains one of the values "CoverageDescriptions" or "All".

Requirement 65 /req/eowcs/describeEOCoverageSet-response-section-datasetSeriesDescriptions

> If a DescribeEOCoverageSet request contains a `sections` parameter then a successful response shall contain a `wcseo:DatasetSeriesDescriptions` element if and only if the section parameter list contains one of the values "DatasetSeriesDescriptions" or "All".

Such a response contains only EO Coverages directly referred to by the object(s) addressed in the request or via referred Dataset Series.

Requirement 66 /req/eowcs/describeEOCoverageSet-response-eoId

> In the response to a successful DescribeEOCoverageSet request containing a `wcs:CoverageDescriptions` section, each EO Coverage referred to by one of the objects identified in the `eoId` request parameter shall appear at most once.

Requirement 67 /req/eowcs/describeEOCoverageSet-response-referred

> The response to a successful DescribeEOCoverageSet request containing a `wcs:CoverageDescriptions` section shall contain the descriptions of exactly those EO Coverages referred to directly or indirectly via Dataset Series by one of the objects identified in the `eoId` request parameter, without any duplicates.

| A Dataset referred to by a Dataset Series referred to by another Dataset Series is implicitly referred to by the later Dataset Series and thus always reported by a DescribeEOCoverageSet request against the later Dataset Series. However, it is allowed that such a Dataset is also referred to by the first Dataset Series but it is only reported once.

| A Dataset referred to by a Stitched Mosaic referred to by a Dataset Series is not per se referred to by that Dataset Series and thus not reported by a DescribeEOCoverageSet request against the Dataset Series. However, it is allowed that such a Dataset is also referred to by the enclosing Dataset Series.

Spatial subsetting is evaluated against the `eop:Footprint` element contained in the `EOMetadata` element of an EO Coverage.

Requirement 68 /req/eowcs/describeEOCoverageSet-response-containment

> The response to a successful DescribeEOCoverageSet request containing a `wcs:CoverageDescriptions` section shall contain only descriptions of those EO Coverages whose spatial footprint defined by its `eop:EarthObservation/om:featureOfInterest/eop:Footprint`
> - overlaps with the spatial request extent, and the request parameter `containment` is of value `overlaps` or is omitted,
> - is completely contained within the spatial request extent, and the request parameter `containment` is of value `contains`
> whereby all spatial coordinates are expressed in WGS84 [4].

Temporal subsetting is evaluated against the temporal validity of an EO Coverage.

Requirement 69 /req/eowcs/describeEOCoverageSet-response-phenomenonTime

> The response to a successful DescribeEOCoverageSet request containing a `wcs:CoverageDescriptions` section shall contain only descriptions of EO Coverages whose time interval defined by its `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:beginPosition` and `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:endPosition` elements in `wcseo:EOMetadata`
> - overlaps with the request time extent, and the request parameter `containment` is of value `overlaps` or is omitted,
> - is completely contained within the request time extent, and the request parameter `containment` is of value `contains`,
> whereby all temporal coordinates are expressed in ISO 8601 [2].

Boundary values omitted are substituted by the actual boundary value of the object inquired.

Requirement 70 /req/eowcs/describeEOCoverageSet-response-trim-omitted

> In a DescribeEOCoverageSet request, a trim specification omitted shall be interpreted as the actual boundary of the objects requested in the axis omitted.

Requirement 71 /req/eowcs/describeEOCoverageSet-response-bound-omitted

> In a DescribeEOCoverageSet request, a lower or upper bound omitted shall be interpreted as indicating the actual lower or upper bound of the objects requested in the axis omitted.

| This trim semantics is analogous to trimming in GetCoverage.

Requirement 72 /req/eowcs/describeEOCoverageSet-response-coverageSubtype

> In the response to a successful DescribeEOCoverageSet request, each EO Coverage listed shall contain in its `WCS::CoverageSubtype` element the corresponding value given in Table 8 according to its type.

Requirement 73 /req/eowcs/describeEOCoverageSet-response-count

> In the response to a successful DescribeEOCoverageSet request the sum of `CoverageDescription` and `DatasetSeriesDescription` elements shall be less or equal to the minimum of the value of the `CountDefault` element and the `count` parameter if present in the request. If none of both are present all matching elements shall be reported.

| The `count` parameter is used in the same ways as the `itemsPerPage` element in the OpenSearch Specification [7].

Requirement 74 /req/eowcs/describeEOCoverageSet-response-startIndex

> If a DescribeEOCoverageSet request contains a `wcs:startIndex` parameter then a successful response shall contain only those `CoverageDescription` and `DatasetSeriesDescription` elements whose index numbers in the result set are equal or higher than the value of the `startIndex` parameter.

| A server is assumed to apply a consistent ordering to the result set.

Requirement 75 /req/eowcs/describeEOCoverageSet-response-numberMatched

> The response to a successful DescribeEOCoverageSet request shall report in its `numberMatched` attribute the sum of all matching `CoverageDescription` and `DatasetSeriesDescription` elements.

Requirement 76 /req/eowcs/describeEOCoverageSet-response-numberReturned

> The response to a successful DescribeEOCoverageSet request shall report in its `numberReturned` attribute the sum of all `CoverageDescription` and `DatasetSeriesDescription` elements included in the response.

Requirement 77 /req/eowcs/describeEOCoverageSet-response-startIndex-attr

> The response to a successful DescribeEOCoverageSet request shall report in its `startIndex` attribute the index number of the first element in the result set of all `CoverageDescription` and `DatasetSeriesDescription` elements returned.

Requirement 78 /req/eowcs/describeEOCoverageSet-response-next

> The response to a successful DescribeEOCoverageSet request shall report in its `next` attribute the URI to retrieve the next page of results as specified by the `count` and `startIndex` parameters. The `next` attribute shall only be present if elements with a higher index in the result set than the returned ones are available.

Requirement 79 /req/eowcs/describeEOCoverageSet-response-previous

> The response to a successful DescribeEOCoverageSet request shall report in its `previous` attribute the URI to retrieve the previous page of results as specified by the `count` and `startIndex` parameters. The `previous` attribute shall only be present if elements with a lower index in the result set than the returned ones are available.

| The specific format of the next and previous URIs is implementation dependent as are the details of how or if the server caches the results of an operation in order to be able to present them to the client one subset at a time.

| The `count`, `startIndex`, `next`, and `previous` parameters used for paging are defined in the same way as in the OpenGIS Web Feature Service 2.0 Interface Standard [8].

Example: The following XML fragment shows parts of a possible `DescribeEOCoverageSet` operation response:

    <wcseo:EOCoverageSetDescription numberMatched="2" numberReturned="2" startIndex="0">
      <wcs:CoverageDescriptions>
        <wcs:CoverageDescription gml:id="c1">
          <gml:boundedBy>
            ...
          </gml:boundedBy>
          <wcs:CoverageId>c1</wcs:CoverageId>
          <gmlcov:metadata>
            <gmlcov:Extension>
              <wcseo:EOMetadata>
                <eop:EarthObservation gml:id="c1_metadata">
                  ...
                </eop:EarthObservation>
              </wcseo:EOMetadata>
            </gmlcov:Extension>
          </gmlcov:metadata>
          <gml:domainSet>
            ...
          </gml:domainSet>
          <gmlcov:rangeType>
            ...
          </gmlcov:rangeType>
          <wcs:ServiceParameters>
            <wcs:CoverageSubtype>RectifiedStitchedMosaic</wcs:CoverageSubtype>
            <wcseo:dataset>
              <wcs:CoverageId>c3</wcs:CoverageId>
            </wcseo:dataset>
          </wcs:ServiceParameters>
        </wcs:CoverageDescription>
      </wcs:CoverageDescriptions>
      <wcseo:DatasetSeriesDescriptions>
        <wcseo:DatasetSeriesDescription gml:id="ds2">
          <gml:boundedBy>
            <gml:Envelope axisLabels="lat long" srsDimension="2" srsName="http://www.opengis.net/def/crs/EPSG/0/4326" uomLabels="deg deg">
              <gml:lowerCorner>46 16</gml:lowerCorner>
              <gml:upperCorner>48 18</gml:upperCorner>
            </gml:Envelope>
          </gml:boundedBy>
          <wcseo:DatasetSeriesId>ds2</wcseo:DatasetSeriesId>
          <gml:TimePeriod gml:id="ds2_timeperiod">
            <gml:beginPosition>2010-01-01T00:00:00.000</gml:beginPosition>
            <gml:endPosition>2010-12-31T23:59:59.999</gml:endPosition>
          </gml:TimePeriod>
        </wcseo:DatasetSeriesDescription>
      </wcseo:DatasetSeriesDescriptions>
    </wcseo:EOCoverageSetDescription>

#### 7.5.4. DescribeEOCoverageSet exceptions

Table 12. Exception codes for DescribeEOCoverageSet operation
`exceptionCode` value | HTTP code | Meaning of exception code | `locator` value
--- | --- | --- | ---
`NoSuchDatasetSeriesOrCoverage` | 404 | The identifier passed does not match with any of the DatasetSeries or EO Coverages offered by this server | List of violating Dataset Series and/or EO Coverage identifiers

### 7.6. GetEOCoverageSet operation

#### 7.6.1. Overview

Just like the DescribeEOCoverageSet request a GetEOCoverageSet request submits one or more Dataset Series, Stitched Mosaic, or Dataset identifiers together with a spatio-temporal subsetting criterion ("bounding box"). By default, the spatial constraint is expressed in WGS84 [4], the temporal constraint in ISO 8601 [2].

Additionally, the GetEOCoverageSet request allows to submit simple processing like scaling, interpolation, output CRS, format, and actually applying the subsetting.

The response to a successful request on a Dataset Series consists of a (possibly empty) set of coverages of Datasets and Stitched Mosaics. The response to a successful request on a Stitched Mosaic consists of a (possibly empty) set of coverages of Datasets. In any case, the result items are those ones which are (i) referred to directly or via Dataset Series by the object submitted and (ii) matched by the bounding box. The type of matching - `contains` or `overlaps` - is specified in the request.

| Using the GetEOCoverageSet operation allows to retrieve entire or subsetted coverages in their native or any given format with limited processing like subsetting or scaling applied. To request advanced processing the GetCoverage operation may be used.

#### 7.6.2. GetEOCoverageSet request

Requirement 80 /req/eowcs_geteocoverageset/getEOCoverageSet-request-structure

> A GetEOCoverageSet request shall consist of a structure as defined in Figure 10, Table 13 and the XML Schema being part of this standard.

Figure 10. GetEOCoverageSet request UML diagram

Table 13. Components of `GetEOCoverageSet` operation request
Name | Definition | Data type | Multiplicity
--- | --- | --- | ---
`request` | Request name | `String` , fixed to "GetEOCoverageSet" | one (mandatory)
`eoId` | Identifier of Dataset Series, Stitched Mosaic, or Dataset to be evaluated | `NCName` | one or more (mandatory)
`containment` | Intersection mode for evaluation of object bounding box against request parameters | `String` | zero or one (optional)
`count` | Maximum number of `WCS::Coverage` elements to be included in the response | `Integer` greater than zero | zero or one (optional)
`startIndex` | Index number within the result set from which the server shall begin presenting results in the response (the index number of the first search result is 0) | `Integer` greater than or equal to zero. Default `0` | zero or one (optional)
`dimensionTrim` | trim specification, as per WCS Core [OGC 09-110r4] Subclause 8.4.1 | `WCS::DimensionTrim` | zero or more (optional)
`packageFormat` | MIME type identifier of the format in which the coverages returned are to be packaged e.g., `application/x-gzip` | `anyURI` | zero or one (optional)
`mediaType` | If present, enforces a multipart encoding | `anyURI`, fixed to "`multipart/related`" | zero or one (optional)
`format` | MIME type identifier of the format in which the coverages returned are to be encoded | `anyURI` | zero or one (optional)
`applySubset` | Determining if the given subset should be applied to the coverages returned | `boolean` | zero or one (optional)
`Scaling` | Scaling to be applied to coverages returned | `scal:Scaling` | zero or one (optional)
`Interpolation` | Interpolation method to be applied on all axes during GetEOCoverageSet result preparation | `int:Interpolation` | zero or one (optional)
`subsettingCrs` | CRS Identifier indicating the CRS in which the request subsetting coordinates are expressed | `crs:subsettingCrs` | zero or one (optional)
`outputCrs` | CRS Identifier indicating the CRS of the result coverages | `crs:outputCrs` | zero or one (optional)

Requirement 81 /req/eowcs_geteocoverageset/getEOCoverageSet-request-eoId

> Each `eoId` parameter value in a GetEOCoverageSet request shall be equal to the identifier of a Dataset, a Stitched Mosaic, or a Dataset Series offered by the server addressed.

| A GetEOCoverageSet request is possible on the identifiers of objects offered by the server even if these are not listed in a GetCapabilities response.

Requirement 82 /req/eowcs_geteocoverageset/getEOCoverageSet-request-containment

> If a GetEOCoverageSet request contains a `containment` parameter then this parameter shall have one of the values "contains" or "overlaps".

The subsetting is interpreted similar to the DescribeEOCoverageSet operation. In addition alternative subsetting is allowed using the `subsettingCrs` parameter as defined by the WCS CRS Extension [OGC 11-053r1].

Requirement 83 /req/eowcs_geteocoverageset/getEOCoverageSet-request-dimensions

> If a GetEOCoverageSet request contains `dimensionTrim` elements with `dimension` parameters and no `subsettingCrs` element then each such `dimension` parameter shall have one of the values "lat", "long", or "phenomenonTime". Each of these values shall appear at most once in a given request.

Requirement 84 /req/eowcs_geteocoverageset/getEOCoverageSet-request-crs

> A GetEOCoverageSet request shall use WGS84 [4] as spatial and ISO 8601 [2] as temporal CRS for the coordinates in trim requests if no `subsettingCrs` element is present.

| Trim coordinates are not required to lie within the boundaries of the EO Coverage inquired.

The package encoding format in which the coverages are returned is specified by the combination of the `packageFormat` and `mediaType` parameters. Admissible values (i.e, package formats supported) are those listed in the server’s Capabilities document. The default is the also reported in the server’s Capabilities document.

Requirement 85 /req/eowcs_geteocoverageset/getEOCoverageSet-acceptable-packageFormat

> If a GetCoverage request contains a `packageFormat` parameter then this parameter shall contain a MIME type identifier occurring in some `wcseo:packageFormatSupported` element of the response to a successful GetCapabilities request to this server.

Requirement 86 /req/eowcs_geteocoverageset/getEOCoverageSet-acceptable-mediaType

> If a GetCoverage request contains a `mediaType` parameter then this parameter shall contain a MIME type identifier of fixed value "`multipart/related`".

The encoding format in which the coverages themselves are returned is specified by the `format` parameter. Admissible values (i.e, formats supported) are those listed in the server’s Capabilities document. Note that only one format applicable for all coverages to be returned can be specified. Default is the coverage’s Native Format of each coverage to be returned.

Requirement 87 /req/eowcs_geteocoverageset/getEOCoverageSet-acceptable-format

> If a GetCoverage request contains a `format` parameter then this parameter shall contain a MIME type identifier occurring in some `wcs:formatSupported` element of the response to a successful GetCapabilities request to this server.

A general scaling and interpolation can be requested that is equally applied to all coverages returned.

Requirement 88 /req/eowcs_geteocoverageset/getEOCoverageSet-acceptable-scaling

> If a GetCoverage request contains a `Scaling` parameter then this parameter shall follow the specification given in the WCS Scaling Extension [OGC 12-039].

Requirement 89 /req/eowcs_geteocoverageset/getEOCoverageSet-acceptable-interpolation

> If a GetCoverage request contains a `Interpolation` parameter then this parameter shall follow the specification given in the WCS Interpolation Extension [OGC 12-049].

A general output CRS as well as CRS for subsetting can be requested that is equally applied to all coverages returned.

Requirement 90 /req/eowcs_geteocoverageset/getEOCoverageSet-acceptable-crss

> If a GetCoverage request contains a `subsettingCrs` and/or `outputCrs` parameter then this parameter(s) shall follow the specification given in the WCS CRS Extension [OGC 11-053r1].

Example: The following XML instance shows a possible GetEOCoverageSet operation request:

    <?xml version="1.0" encoding="UTF-8"?>
    <wcseo:GetEOCoverageSet xmlns:wcseo="http://www.opengis.net/wcs/wcseo/1.1" xmlns:wcs="http://www.opengis.net/wcs/2.0" xmlns:int="http://www.opengis.net/wcs/interpolation/1.0" xmlns:scal="http://www.opengis.net/wcs/scaling/1.0" xmlns:crs="http://www.opengis.net/wcs/crs/1.0" 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" service="WCS" version="2.0.1" count="100" startIndex="0">
      <wcseo:eoId>someDatasetSeries1</wcseo:eoId>
      <wcseo:containment>OVERLAPS</wcseo:containment>
      <wcs:DimensionTrim>
        <wcs:Dimension>long</wcs:Dimension>
        <wcs:TrimLow>16</wcs:TrimLow>
        <wcs:TrimHigh>18</wcs:TrimHigh>
      </wcs:DimensionTrim>
      <wcs:DimensionTrim>
        <wcs:Dimension>lat</wcs:Dimension>
        <wcs:TrimLow>40</wcs:TrimLow>
        <wcs:TrimHigh>42</wcs:TrimHigh>
      </wcs:DimensionTrim>
      <wcs:DimensionTrim>
        <wcs:Dimension>phenomenonTime</wcs:Dimension>
        <wcs:TrimLow>2008-03-13T10:10:00Z</wcs:TrimLow>
        <wcs:TrimHigh>2008-03-13T10:11:00Z</wcs:TrimHigh>
      </wcs:DimensionTrim>
      <wcseo:packageFormat>application/x-gzip</wcseo:packageFormat>
      <wcseo:mediaType>multipart/related</wcseo:mediaType>
      <wcseo:format>image/tiff</wcseo:format>
      <wcseo:applySubset>true</wcseo:applySubset>
      <int:Interpolation>
        <int:globalInterpolation>http://www.opengis.net/def/interpolation/OGC/1/nearest-neighbor</int:globalInterpolation>
      </int:Interpolation>
      <scal:Scaling>
        <scal:ScaleByFactor>
          <scal:scaleFactor>2.0</scal:scaleFactor>
        </scal:ScaleByFactor>
      </scal:Scaling>
      <wcscrs:subsettingCrs>http://www.opengis.net/def/crs/EPSG/0/4326</wcscrs:subsettingCrs>
      <wcscrs:outputCrs>http://www.opengis.net/def/crs/EPSG/0/4326</wcscrs:outputCrs>
    </wcseo:GetEOCoverageSet>

#### 7.6.3. GetEOCoverageSet response

The response to a successful GetEOCoverageSet request consists of a (possibly empty) packaged set of EO Coverages. Each individual coverage itself is structured the same way as resulting from a GetCoverage request.

Requirement 91 /req/eowcs_geteocoverageset/getEOCoverageSet-packageFormat

> The contents of the response to a successful GetEOCoverageSet request shall be encoded as specified by the `packageFormat` parameter, if this parameter is present in the request, and in the service’s default package format as reported in the `wcseo:defaultPackageFormat` element of the Capabilities if this parameter is not present.

Requirement 92 /req/eowcs_geteocoverageset/getEOCoverageSet-multipart

> The response to a successful GetEOCoverageSet request containing a `mediaType` parameter with value `multipart/related` shall follow the definitions of conformance class multipart of the OGC® Coverage Implementation Schema [OGC 09-146r2].
> Dependency: http://www.opengis.net/spec/GMLCOV/1.0/conf/multipart

Requirement 93 /req/eowcs_geteocoverageset/getEOCoverageSet-mediaType

> The response to a successful GetEOCoverageSet request containing a `mediaType` parameter with value `multipart/related` shall consist of a `wcseo:EOCoverageSet` structure as defined in the XML Schema being part of this standard in its first part. The second part of the multipart response shall be encoded as specified by [/req/eowcs_geteocoverageset /getEOCoverageSet-packageFormat].

Requirement 94 /req/eowcs_geteocoverageset/getEOCoverageSet-cid

> The first part of the response to a successful GetEOCoverageSet request containing a `mediaType` parameter with value `multipart/related` shall reference individual coverages inside the package in the second part of the multipart response by appending the filename after a `;` character to the `cid`.

| The usage of `cid` is defined in [OGC 09-146r2].

Requirement 95 /req/eowcs_geteocoverageset/getEOCoverageSet-format

> The EO Coverages contained in the response to a successful GetEOCoverageSet request shall be encoded as specified by the `format` parameter, if this parameter is present, and in the coverage’s Native Format if this parameter is not present.

The requirements defined for the GetCoverage response like containing EO Metadata or adding a lineage component apply to each EO Coverage included in a GetEOCoverageSet response package.

Requirement 96 /req/eowcs_geteocoverageset/getEOCoverageSet-getCoverage

> Each EO Coverage contained in the response to a successful GetEOCoverageSet request shall adhere to the requirements defined for the GetCoverage response in subclause GetCoverage response.

A GetEOCoverageSet response contains only EO Coverages directly referred to by the object(s) addressed in the request or via referred Dataset Series.

Requirement 97 /req/eowcs/getEOCoverageSet-response-eoId

> In the response to a successful GetEOCoverageSet request each EO Coverage referred to by one of the objects identified in the `eoId` request parameter shall appear at most once.

Requirement 98 /req/eowcs/getEOCoverageSet-response-referred

> The response to a successful GetEOCoverageSet request shall contain exactly those EO Coverages referred to directly or indirectly via Dataset Series by one of the objects identified in the `eoId` request parameter, without any duplicates.

| A Dataset referred to by a Dataset Series referred to by another Dataset Series is implicitly referred to by the later Dataset Series and thus always reported by a GetEOCoverageSet request against the later Dataset Series. However, it is allowed that such a Dataset is also referred to by the first Dataset Series but it is only reported once.

| A Dataset referred to by a Stitched Mosaic referred to by a Dataset Series is not per se referred to by that Dataset Series and thus not reported by a GetEOCoverageSet request against the Dataset Series. However, it is allowed that such a Dataset is also referred to by the enclosing Dataset Series.

Spatial subsetting is evaluated against the `eop:Footprint` element contained in the `EOMetadata` element of an EO Coverage.

Requirement 99 /req/eowcs/getEOCoverageSet-response-containment

> The response to a successful GetEOCoverageSet request shall contain only those EO Coverages whose spatial footprint defined by its `eop:EarthObservation/om:featureOfInterest/eop:Footprint`
> - overlaps with the spatial request extent, and the request parameter `containment` is of value `overlaps` or is omitted,
> - is completely contained within the spatial request extent, and the request parameter `containment` is of value `contains`
> whereby all spatial coordinates are expressed in WGS84 [4] if no `subsettingCrs` parameter is present.

Temporal subsetting is evaluated against the temporal validity of an EO Coverage.

Requirement 100 /req/eowcs/getEOCoverageSet-response-phenomenonTime

> The response to a successful GetEOCoverageSet request shall contain only EO Coverages whose time interval defined by its `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:beginPosition` and `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:endPosition` elements in `wcseo:EOMetadata`
> - overlaps with the request time extent, and the request parameter `containment` is of value `overlaps` or is omitted,
> - is completely contained within the request time extent, and the request parameter `containment` is of value `contains`,
> whereby all temporal coordinates are expressed in ISO 8601 [2] if no `subsettingCrs` parameter is present.

Boundary values omitted are substituted by the actual boundary value of the object inquired.

Requirement 101 /req/eowcs/getEOCoverageSet-response-trim-omitted

> In a GetEOCoverageSet request, a trim specification omitted shall be interpreted as the actual boundary of the objects requested in the axis omitted.

Requirement 102 /req/eowcs/getEOCoverageSet-response-bound-omitted

> In a GetEOCoverageSet request, a lower or upper bound omitted shall be interpreted as indicating the actual lower or upper bound of the objects requested in the axis omitted.

| This trim semantics is analogous to trimming in GetCoverage.

Requirement 103 /req/eowcs/getEOCoverageSet-response-count

> In the response to a successful GetEOCoverageSet request the sum of `RectifiedDataset`, `ReferenceableDataset`, `RectifiedStitchedMosaic`, `ReferenceableStitchedMosaic`, and `DatasetSeries` elements shall be less or equal to the minimum of the value of the `CountDefault` element and the `count` parameter if present in the request. If none of both are present all matching elements shall be reported.

| The `count` parameter is used in the same ways as the `itemsPerPage` element in the OpenSearch Specification [7].

Requirement 104 /req/eowcs/getEOCoverageSet-response-startIndex

> If a GetEOCoverageSet request contains a `wcs:startIndex` parameter then a successful response shall contain only those `RectifiedDataset`, `ReferenceableDataset`, `RectifiedStitchedMosaic`, `ReferenceableStitchedMosaic`, and `DatasetSeries` elements whose index numbers in the result set are equal or higher than the value of the `startIndex` parameter.

| A server is assumed to apply a consistent ordering to the result set.

Requirement 105 /req/eowcs/getEOCoverageSet-response-numberMatched

> The response to a successful GetEOCoverageSet request shall report in its `numberMatched` attribute the sum of all matching `RectifiedDataset`, `ReferenceableDataset`, `RectifiedStitchedMosaic`, `ReferenceableStitchedMosaic`, and `DatasetSeries` elements.

Requirement 106 /req/eowcs/getEOCoverageSet-response-numberReturned

> The response to a successful GetEOCoverageSet request shall report in its `numberReturned` attribute the sum of all `RectifiedDataset`, `ReferenceableDataset`, `RectifiedStitchedMosaic`, `ReferenceableStitchedMosaic`, and `DatasetSeries` elements included in the response.

Requirement 107 /req/eowcs/getEOCoverageSet-response-startIndex-attr

> The response to a successful GetEOCoverageSet request shall report in its `startIndex` attribute the index number of the first element in the result set of all `RectifiedDataset`, `ReferenceableDataset`, `RectifiedStitchedMosaic`, `ReferenceableStitchedMosaic`, and `DatasetSeries` elements returned.

Requirement 108 /req/eowcs/getEOCoverageSet-response-next

> The response to a successful GetEOCoverageSet request shall report in its `next` attribute the URI to retrieve the next page of results as specified by the `count` and `startIndex` parameters. The `next` attribute shall only be present if elements with a higher index in the result set than the returned ones are available.

Requirement 109 /req/eowcs/getEOCoverageSet-response-previous

> The response to a successful GetEOCoverageSet request shall report in its `previous` attribute the URI to retrieve the previous page of results as specified by the `count` and `startIndex` parameters. The `previous` attribute shall only be present if elements with a lower index in the result set than the returned ones are available.

| The specific format of the next and previous URIs is implementation dependent as are the details of how or if the server caches the results of an operation in order to be able to present them to the client one subset at a time.

| The `count`, `startIndex`, `next`, and `previous` parameters used for paging are defined in the same way as in the OpenGIS Web Feature Service 2.0 Interface Standard [8].

The spatial subsetting requested may be applied to the EO Coverages to be returned. Default is to respond with entire coverages.

Requirement 110 /req/eowcs/getEOCoverageSet-response-applySubset

> Each EO Coverage contained in the response to a successful GetEOCoverageSet request containing an `applySubset` parameter with value `true` shall be subsetted as specified by the crs-gridded-coverage conformance class of the WCS CRS Extension [OGC 11-053r1].

A requested general scaling and interpolation is equally applied to all coverages returned.

Requirement 111 /req/eowcs_geteocoverageset/getEOCoverageSet-scaling

> If a GetCoverage request contains a `Scaling` parameter then this parameter shall be applied individually to each EO Coverage to be returned as specified by the WCS Scaling Extension [OGC 12-039].

Requirement 112 /req/eowcs_geteocoverageset/getEOCoverageSet-interpolation

> If a GetCoverage request contains a `Interpolation` parameter then this parameter shall be applied individually to each EO Coverage to be returned as specified by the WCS Interpolation Extension [OGC 12-049].

A requested general output CRS as well as CRS for subsetting is equally applied to all coverages returned.

Requirement 113 /req/eowcs_geteocoverageset/getEOCoverageSet-crss

> If a GetCoverage request contains a `subsettingCrs` and/or `outputCrs` parameter then this parameter(s) shall be applied individually to each EO Coverage to be returned as specified by the WCS CRS Extension [OGC 11-053r1].

Example: The following XML fragment shows parts of the first part of a possible `GetEOCoverageSet` operation multipart response:

    <?xml version="1.0" encoding="UTF-8"?>
    <wcseo:EOCoverageSet numberMatched="3" numberReturned="3" startIndex="0" xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:gmlcov="http://www.opengis.net/gmlcov/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:coverages.meta4;someEOCoverage1.tif" xlink:role="http://www.opengis.net/spec/GMLCOV_geotiff-coverages/1.0/conf/geotiff-coverage" />
            <gml:fileReference>cid:coverages.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&amp;VERSION=2.0.1&amp;REQUEST=GetEOCoverageSet&amp;EOID=someDatasetSeries1&amp;PACKAGEFORMAT=application/metalink4+xml&amp;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:coverages.meta4;someEOCoverage2.tif" xlink:role="http://www.opengis.net/spec/GMLCOV_geotiff-coverages/1.0/conf/geotiff-coverage" />
            <gml:fileReference>cid:coverages.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&amp;VERSION=2.0.1&amp;REQUEST=GetEOCoverageSet&amp;EOID=someDatasetSeries1&amp;PACKAGEFORMAT=application/metalink4+xml&amp;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-metadata-from-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&amp;VERSION=2.0.1&amp;REQUEST=GetEOCoverageSet&amp;EOID=someDatasetSeries1&amp;PACKAGEFORMAT=application/metalink4+xml&amp;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>

#### 7.6.4. GetEOCoverageSet exceptions

Table 14. Exception codes for GetEOCoverageSet operation
`exceptionCode` value | HTTP code | Meaning of exception code | `locator` value
--- | --- | --- | ---
`NoSuchDatasetSeriesOrCoverage` | 404 | The identifier passed does not match with any of the DatasetSeries or EO Coverages offered by this server | List of violating Dataset Series and/or EO Coverage identifiers

## 8. WCS extensions

### 8.1. Overview

Requirements class eowcs normatively depends on the WCS Extension specifications listed in this Clause. In other words, any implementation claiming to conform to this requirements class must also implement the specifications required in this Clause.

### 8.2. Band subsetting

Requirement 114 /req/eowcs/band-subsetting

> Implementations of this EO-WCS shall support the OGC® Web Coverage Service Interface Standard - Range Subsetting Extension [OGC 12-040].
> Dependency: http://www.opengis.net/spec/WCS_service-extension_range-subsetting/1.0/conf/record-subsetting

### 8.3. Scaling

Requirement 115 /req/eowcs/scaling

> Implementations of this EO-WCS shall support the OGC® Web Coverage Service Interface Standard - Scaling Extension [OGC 12-039].
> Dependency: http://www.opengis.net/spec/WCS_service-extension_scaling/1.0/conf/scaling

### 8.4. Interpolation

Requirement 116 /req/eowcs/interpolation

> Implementations of this EO-WCS shall support the OGC® Web Coverage Service Interface Standard - Interpolation Extension [OGC 12-049].
> Dependency: http://www.opengis.net/spec/WCS_service-extension_interpolation/1.0/conf/interpolation

### 8.5. CRSs

Requirement 117 /req/eowcs/crs

> Implementations of this EO-WCS shall support the OGC® Web Coverage Service Interface Standard - CRS Extension [OGC 11-053r1].
> Dependency: http://www.opengis.net/spec/WCS_service-extension_crs/1.0/conf/crs, http://www.opengis.net/spec/WCS_service-extension_crs/1.0/conf/crs-gridded-coverage

### 8.6. Coverage format encodings

Requirement 118 /req/eowcs/encodings

> Implementations of this EO-WCS shall support at least one of the coverage format encodings GeoTIFF [OGC 12-100r1], NetCDF [OGC 14-100r2], and JPEG2000 [OGC 12-108].
> Dependency: http://www.opengis.net/spec/GMLCOV_geotiff-coverages/1.0/conf/geotiff-coverage, http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-GML-encoding, http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-Data-format, http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-Multipart-encoding, http://www.opengis.net/spec/gmlcov_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

## 9. Protocol Bindings

### 9.1. Protocol choices

At least one of the protocols, GET/KVP and SOAP shall be supported by an implementation. This choice is represented in this specification by two separate conformance classes, eowcs_get-kvp and eowcs_soap defined in the Subclauses below.

Requirement 119 /req/eowcs/protocol-bindings

> Implementations of this EO-WCS shall support at least one of the requirements classes eowcs_get-kvp and eowcs_soap.
> Dependency: http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs_get-kvp, http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs_soap

### 9.2. GET-KVP protocol conformance class

#### 9.2.1. WCS GET/KVP encoding

Requirement 120 /req/eowcs_get-kvp/mandatory

> Implementations of this EO-WCS which support the eowcs_get-kvp requirements class shall support the WCS 2.0 protocol extension GET/KVP [OGC 09-147r3].
> Dependency: http://www.opengis.net/spec/WCS_protocol-binding_get-kvp/1.0/conf/get-kvp

Requirement 121 /req/eowcs_get-kvp/conformance-class-in-profile

> Implementations of this EO-WCS which support the eowcs_get-kvp requirements class shall include the following URI in a `Profile` element in the `ServiceIdentification` in a GetCapabilities response: http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs_get-kvp

#### 9.2.2. DescribeEOCoverageSet GET/KVP encoding

Requirement 122 /req/eowcs_get-kvp/describeEOCoverageSet-request

> The `request` parameter of a DescribeEOCoverageSet request shall be indicated as follows:
> `request=DescribeEOCoverageSet`

Requirement 123 /req/eowcs_get-kvp/describeEOCoverageSet-eoid

> The `eoId` parameter of a DescribeEOCoverageSet request shall be indicated as follows, for parameter values v1, …​, vn:
> `eoid=v1,…​,vn`

Requirement 124 /req/eowcs_get-kvp/describeEOCoverageSet-containment

> The `containment` parameter of a DescribeEOCoverageSet request shall be indicated as follows:
> `containment=overlaps`
> or
> `containment=contains`

Requirement 125 /req/eowcs_get-kvp/describeEOCoverageSet-count

> The `count` parameter of a DescribeEOCoverageSet request shall be indicated as follows, for positive integer value x:
> `count=x`

Requirement 126 /req/eowcs_get-kvp/describeEOCoverageSet-startIndex

> The `startIndex` parameter of a DescribeEOCoverageSet request shall be indicated as follows, for a non-negative integer value x:
> `startindex=x`

Requirement 127 /req/eowcs_get-kvp/describeEOCoverageSet-subset

> The `trim` parameters of a DescribeEOCoverageSet request shall be indicated through a possibly empty set of subset specifications, each one with key "`subset`" and value specification given by a `SubsetSpec` adhering to this EBNF syntax [3] and the resp. XML definitions [6]:
> `SubsetSpec: dimension ( interval )`
> `dimension: long | lat | phenomenonTime`
> `interval: low , high`
> `low: point | *`
> `high: point | *`
> `point: number | " token "` // " = ASCII 0x42

Syntax follows the HTTP standard [3]: underlined tokens represent literals which appear "as is" ("terminal symbols"), other tokens represent sub- expressions to be substituted ("non-terminals"). A vertical bar ("|"") denotes alternatives, items in brackets ("[ ]") are optional. Non-terminals `NCName`, `number`, `token`, and `anyURI` follow the resp. XML definitions [6].

| Allowed values for points are determined by the CRS used. This ranges from "2009-11-06" for time to "-41.5" and "41°5'" for lat/long whereby non-numeric values have to be enclosed in double quotes.

| As per HTTP [3], keys are case insensitive whereas values are case sensitive.

Example: The following KVP-encoded DescribeEOCoverageSet request addresses service `path` on server `www.myservice.org` at port `port` requests coverage `C0002` in the domain specified by the bounding box with longitude (-71,47) and latitude (-66,51), expressed in spatial CRS WGS84-2D and temporal CRS ISO:8601 (which are assumed to be supported for the coverage):

    http://www.myserver.org:port/path?
    service=WCS
    &version=2.0.1
    &request=DescribeEOCoverageSet
    &eoid=C0002
    &containment=overlaps
    &subset=long(-71,47)
    &subset=lat(-66,51)
    &subset=phenomenonTime("2009-11-06T23:20:52Z","2009-11-13T23:20:52Z")

#### 9.2.3. GetEOCoverageSet GET/KVP encoding

Requirement 128 /req/eowcs_get-kvp/getEOCoverageSet-request

> The `request` parameter of a GetEOCoverageSet request shall be indicated as follows:
> `request=GetEOCoverageSet`

Requirement 129 /req/eowcs_get-kvp/getEOCoverageSet-eoid

> The `eoId` parameter of a GetEOCoverageSet request shall be indicated as follows, for parameter values v1, …​, vn:
> `eoid=v1,…​,vn`

Requirement 130 /req/eowcs_get-kvp/getEOCoverageSet-containment

> The `containment` parameter of a GetEOCoverageSet request shall be indicated as follows:
> `containment=overlaps`
> or
> `containment=contains`

Requirement 131 /req/eowcs_get-kvp/getEOCoverageSet-count

> The `count` parameter of a GetEOCoverageSet request shall be indicated as follows, for positive integer value x:
> `count=x`

Requirement 132 /req/eowcs_get-kvp/getEOCoverageSet-startIndex

> The `startIndex` parameter of a GetEOCoverageSet request shall be indicated as follows, for a non-negative integer value x:
> `startindex=x`

Requirement 133 /req/eowcs_get-kvp/getEOCoverageSet-packageFormat

> The `packageFormat` parameter of a GetEOCoverageSet request shall be indicated as follows, for parameter value v1:
> `packageformat=v1`

Requirement 134 /req/eowcs_get-kvp/getEOCoverageSet-mediaType

> The `mediaType` parameter of a GetEOCoverageSet request shall be indicated as follows:
> `mediatype=multipart/related`

Requirement 135 /req/eowcs_get-kvp/getEOCoverageSet-format

> The `format` parameter of a GetEOCoverageSet request shall be indicated as follows, for parameter value v1:
> `format=v1`

Requirement 136 /req/eowcs_get-kvp/getEOCoverageSet-applySubset

> The `applySubset` parameter of a GetEOCoverageSet request shall be indicated as follows:
> `applysubset=true`
> or
> `applysubset=false`

Requirement 137 /req/eowcs_get-kvp/getEOCoverageSet-parameters

> The `Scaling`, `Interpolation`, `subsettingCrs`, and `outputCrs` parameters of a GetEOCoverageSet request shall be indicated as defined in the respective WCS extension.

Requirement 138 /req/eowcs_get-kvp/getEOCoverageSet-subset

> The `trim` parameters of a GetEOCoverageSet request shall be indicated through a possibly empty set of subset specifications, each one with key "`subset`" and value specification given by a `SubsetSpec` adhering to this EBNF syntax [3] and the resp. XML definitions [6]:
> `SubsetSpec: dimension ( interval )`
> `dimension: long | lat | phenomenonTime`
> `interval: low , high`
> `low: point | *`
> `high: point | *`
> `point: number | " token "` // " = ASCII 0x42

Syntax follows the HTTP standard [3]: underlined tokens represent literals which appear "as is" ("terminal symbols"), other tokens represent sub- expressions to be substituted ("non-terminals"). A vertical bar ("|"") denotes alternatives, items in brackets ("[ ]") are optional. Non-terminals `NCName`, `number`, `token`, and `anyURI` follow the resp. XML definitions [6].

| Allowed values for points are determined by the CRS used. This ranges from "2009-11-06" for time to "-41.5" and "41°5'" for lat/long whereby non-numeric values have to be enclosed in double quotes.

| As per HTTP [3], keys are case insensitive whereas values are case sensitive.

### 9.3. SOAP protocol conformance class

#### 9.3.1. WCS SOAP encoding

Requirement 139 /req/eowcs_soap/mandatory

> Implementations of this EO-WCS which support the eowcs_soap requirements class shall support the WCS 2.0 protocol extension SOAP [OGC 09-149r1].
> Dependency: http://www.opengis.net/spec/WCS_protocol-binding_soap/1.0/conf/soap

Requirement 140 /req/eowcs_soap/conformance-class-in-profile

> Implementations of this EO-WCS which support the eowcs_soap requirements class shall include the following URI in a `Profile` element in the `ServiceIdentification` in a GetCapabilities response: http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs_soap

#### 9.3.2. DescribeEOCoverageSet SOAP encoding

Requirement 141 /req/eowcs_soap/describeEOCoverageSet-request-structure

> A DescribeEOCoverageSet request shall contain exactly one `Body` element containing exactly one `DescribeEOCoverageSet` element.

Requirement 142 /req/eowcs_soap/describeEOCoverageSet-response-structure

> In the response to a successful DescribeEOCoverageSet request, the SOAP `Envelope` shall contain exactly one `Body` element which contains a `EOWCS::EOCoverageSetDescription` as its single element.

Example: See files `wcseo_requestDescribeEOCoverageSet.xml` and `wcseo_responseDescribeEOCoverageSet.xml` being part of this standard.

#### 9.3.3. DescribeEOCoverageSet WSDL

Requirement 143 /req/eowcs_soap/describeEOCoverageSet-wsdl

> Publication of a WCS SOAP service endpoint shall use the binding as defined in file `wsdl/wcs-soap-binding.wsdl` of the EO-WCS package.

| A sample service description relying on this binding is provided in file `example-soap-endpoint.wsdl`.

#### 9.3.4. GetEOCoverageSet SOAP encoding

Requirement 144 /req/eowcs_soap/getEOCoverageSet-request-structure

> A GetEOCoverageSet request shall contain exactly one `Body` element containing exactly one `GetEOCoverageSet` element.

Requirement 145 /req/eowcs_soap/getEOCoverageSet-response-structure

> In the response to a successful GetEOCoverageSet request, the SOAP `Envelope` shall contain exactly one `Body` element which contains a `EOWCS::EOCoverageSet` as its single element.

Example: See files `wcseo_requestGetEOCoverageSet.xml` and `wcseo_responseGetEOCoverageSet.xml` being part of this standard.

#### 9.3.5. GetEOCoverageSet WSDL

Requirement 146 /req/eowcs_soap/getEOCoverageSet-wsdl

> Publication of a WCS SOAP service endpoint shall use the binding as defined in file `wsdl/wcs-soap-binding.wsdl` of the EO-WCS package.

| A sample service description relying on this binding is provided in file `example-soap-endpoint.wsdl`.

## 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

## Annex A: (normative) Abstract test suite

A WCS implementation must satisfy the following system characteristics to be conformant with this specification.

Tests identifiers below are relative to: http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/

### A.1. Conformance Test Classes: eowcs & eowcs_geteocoverageset

The OGC URI identifier of this conformance classes are: http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs_geteocoverageset

#### A.1.1. EO Metadata

Test id: /conf/eowcs/eo-metadata-structure

Test Purpose: Requirement 1 /req/eowcs/eo-metadata-structure

Test method:

For each EO Coverage offered by the server under test:

- retrieve coverage information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- Check that the responses contain a `EOWCS::EOMetadata` corresponding to the definition and that all responses contain the same information.

Test passes if all individual tests pass.

#### A.1.2. Footprint in EO Metadata

Test id: /conf/eowcs/footprint-in-eo-metadata

Test Purpose: Requirement 2 /req/eowcs/footprint-in-eo-metadata

Test method:

For each EO Coverage offered by the server under test:

- retrieve coverage information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- Check that the responses contain an `eop:EarthObservation/om:featureOfInterest/eop:Footprint` element in the `EOWCS::EOMetadata` and that all responses contain the same information.

Test passes if all individual tests pass.

#### A.1.3. EO Coverage

Test id: /conf/eowcs/eo-coverage-structure

Test Purpose: Requirement 3 /req/eowcs/eo-coverage-structure

Test method:

For each EO Coverage offered by the server under test:

- retrieve coverage information via GetCoverage operation.

- Check that all responses consist of an XML document as defined in the places referenced.

Test passes if all individual tests pass.

#### A.1.4. EO Metadata in EO Coverage

Test id: /conf/eowcs/eo-metadata-in-eo-coverage

Test Purpose: Requirement 4 /req/eowcs/eo-metadata-in-eo-coverage

Test method:

For each EO Coverage offered by the server under test:

- retrieve coverage information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- Check that the responses contain a `EOWCS::EOMetadata` and that all responses contain the same information.

Test passes if all individual tests pass.

#### A.1.5. EOP Identifier in EO Metadata

Test id: /conf/eowcs/eop-identifier-in-eo-metadata

Test Purpose: Requirement 5 /req/eowcs/eop-identifier-in-eo-metadata

Test method:

For each EO Coverage offered by the server under test:

- retrieve coverage information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- Check that the responses contain an `eop:EarthObservation/eop:metadataProperty/eop:EarthObservationMetaData/eop:identifier` whose first word is identical to the EO Coverage identifier.

Test passes if all individual tests pass.

#### A.1.6. Footprint inside BoundedBy

Test id: /conf/eowcs/footprint-inside-boundedBy

Test Purpose: Requirement 6 /req/eowcs/footprint-inside-boundedBy

Test method:

For each EO Coverage offered by the server under test:

- retrieve coverage information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- Check that all polygons listed in `eop:EarthObservation/om:featureOfInterest/eop:Footprint` element are contained in the bounding box of the `gml:boundedBy` element of the `gml:Envelope`.

Test passes if all individual tests pass.

#### A.1.7. PhenomenonTime in EO Metadata

Test id: /conf/eowcs/phenomenonTime-in-eo-metadata

Test Purpose: Requirement 7 /req/eowcs/phenomenonTime-in-eo-metadata

Test method:

For each EO Coverage offered by the server under test:

- retrieve coverage information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- Check that the responses contain elements `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:beginPosition` and `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:endPosition` where `beginPosition ≤ endPosition`.

Test passes if all individual tests pass.

#### A.1.8. PhenomenonTime ISO9891

Test id: /conf/eowcs/phenomenonTime-iso8601

Test Purpose: Requirement 8 /req/eowcs/phenomenonTime-iso8601

Test method:

For each EO Coverage offered by the server under test:

- retrieve coverage information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- Check that the temporal validity values are expressed in ISO 8601.

Test passes if all individual tests pass.

#### A.1.9. Range type extension

Test id: /conf/eowcs/rangeTypeExtension

Test Purpose: Requirement 9 /req/eowcs/rangeTypeExtension

Test method:

TODO

#### A.1.10. Range type uom

Test id: /conf/eowcs/rangeType-uom

Test Purpose: Requirement 10 /req/eowcs/rangeType-uom

Test method:

TODO

#### A.1.11. Range type name

Test id: /conf/eowcs/rangeType-name

Test Purpose: Requirement 11 /req/eowcs/rangeType-name

Test method:

TODO

#### A.1.12. Rangeset of Coverage

Test id: /conf/eowcs/range-set-of-eo-coverage

Test Purpose: Requirement 12 /req/eowcs/range-set-of-eo-coverage

Test method:

For each EO Coverage offered by the server under test:

- retrieve coverage information via GetCoverage operation.

- Check that all cells, whose locations are outside the EO Metadata footprint when both are evaluated in WGS84, contain some nil value as defined in the bounding EO Coverage’s range type.

Test passes if all individual tests pass.

#### A.1.13. Dataset Structure

Test id: /conf/eowcs/dataset-structure

Test Purpose: Requirement 13 /req/eowcs/dataset-structure

Test method:

For each EO Dataset offered by the server under test:

- retrieve coverage information via GetCoverage operation.

- Check that all responses consist of an XML document as defined in the places referenced.

Test passes if all individual tests pass.

#### A.1.14. Referenceable Stitched Mosaic-structure

Test id: /conf/eowcs/referenceableStitchedMosaic-structure

Test Purpose: Requirement 14 /req/eowcs/referenceableStitchedMosaic-structure

Test method:

For each `EOWCS::ReferenceableStitchedMosaic` offered by the server under test:

- retrieve coverage information via GetCoverage operation.

- Check that all responses consist of an XML document of type `EOWCS::ReferenceableStitchedMosaic` as described in the references stated by the requirement.

Test passes if all individual tests pass.

#### A.1.15. Rectified Stitched Mosaic-structure

Test id: /conf/eowcs/rectifiedStitchedMosaic-structure

Test Purpose: Requirement 15 /req/eowcs/rectifiedStitchedMosaic-structure

Test method:

For each `EOWCS::RectifiedStitchedMosaic` offered by the server under test:

- retrieve coverage information via GetCoverage operation.

- Check that all responses consist of an XML document of type `EOWCS::RectifiedStitchedMosaic` as described in the references stated by the requirement.

Test passes if all individual tests pass.

#### A.1.16. Composed-of in Stitched mosaic

Test id: /conf/eowcs/composedOf-in-stitched-mosaic

Test Purpose: Requirement 16 /req/eowcs/composedOf-in-stitched-mosaic

Test method:

For each `EOWCS::RectifiedStitchedMosaic` and `EOWCS::RectifiedStitchedMosaic` offered by the server under test:

- Obtain the set of `dataset` identifiers contained in `eop:EarthObservation/eop:metaDataProperty/eop:EarthObservationMetaData/eop:composedOf` via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- Check that all responses contain the same identifier information.

- Obtain the contained set of dataset identifiers of the Stitched Mosaic. Check that all responses contain the same identifier information.

- If the `eop:composedOf` element is present then check that the contained set of `dataset` identifiers in `eop:EarthObservation/eop:metaDataProperty/eop:EarthObservationMetaData/eop:composedOf` is equal to the set of `dataset` identifiers of the Stitched Mosaic.

Test passes if all individual tests pass.

#### A.1.17. Contributing Footprint inside Footprint

Test id: /conf/eowcs/contributingFootprint-inside-footprint

Test Purpose: Requirement 17 /req/eowcs/contributingFootprint-inside-footprint

Test method:

For each Stitched Mosaic offered by the server under test:

- retrieve coverage information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- For each obtained `dataset` d:

  - obtain the contributingFootprint associated with the reference to d and check that all responses contain the same contributingFootprint information with the reference to d.

  - obtain the footprint of d coverage via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations, and check that all responses contain the same footprint information.

  - Check that the contributingFootprint associated with the reference to d is contained in the footprint of d.

Test passes if all individual tests pass.

#### A.1.18. Contributing Footprint-pairwise-disjoint

Test id: /conf/eowcs/contributingFootprint-pairwise-disjoint

Test Purpose: Requirement 18 /req/eowcs/contributingFootprint-pairwise-disjoint

Test method:

For each Stitched Mosaic offered by the server under test:

- retrieve coverage information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations. Check that all responses contain the same contributingFootprint information.

- Check that the contributingFootprints are pair-wise disjoint.

Test passes if all individual tests pass.

#### A.1.19. Contributing Footprint-union-of-footprints

Test id: /conf/eowcs/contributingFootprint-union-of-footprints

Test Purpose: Requirement 19 /req/eowcs/contributingFootprint-union-of-footprints

Test method:

For each Stitched Mosaic offered by the server under test:

- retrieve coverage information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- Check that there is a contributingFootprint for each dataset of the Stitched Mosaic.

Test passes if all individual tests pass.

#### A.1.20. Dataset Domain Set in Set in Stitched Mosaic Domain Set

Test id: /conf/eowcs/dataset-domain-set-in-stitched-mosaic-domain-set

Test Purpose: Requirement 20 /req/eowcs/dataset-domain-set-in-stitched-mosaic-domain-set

Test method:

For each Stitched Mosaic offered by the server under test:

- Obtain all cells of s as defined by domain set of s via GetCoverage operation.

- For each obtained `dataset` d:

  - Obtain all cells of d as defined by domain set of d via GetCoverage operation.

  - Check that all cells of d as defined by domain set of d are included in the set of all cells of s as defined by domain set of s.

Test passes if all individual tests pass.

#### A.1.21. Datasets in Rectified Stitched Mosaic Same Offset Vector

Test id: /conf/eowcs/datasets-in-rectifiedStitcheMosaic-same-offsetVector

Test Purpose: Requirement 21 /req/eowcs/datasets-in-rectifiedStitcheMosaic-same-offsetVector

Test method:

For each Rectified Stitched Mosaic offered by the server under test:

- For each obtained `dataset` d:

  - retrieve coverage information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

  - Check that all responses contain the same `gml:offsetVector` information in their domain sets.

- Check that all Datasets have identical values in the `gml:offsetVector` elements of their domain sets.

Test passes if all individual tests pass.

#### A.1.22. Rectified Stitched Mosaic OffsetVector

Test id: /conf/eowcs/rectifiedStitchedMosaic-offsetVector

Test Purpose: Requirement 22 /req/eowcs/rectifiedStitchedMosaic-offsetVector

Test method:

For each Rectified Stitched Mosaic offered by the server under test:

- retrieve the value of the `gml:offsetVector` elements of the domain set via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- Check that all responses contain the same `offsetVector` information.

- For each obtained `dataset` d:

  - retrieve coverage information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

  - Check that all responses contain the same `gml:offsetVector` information in their domain sets.

- Check that both the Rectified Stitched Mosaic and the Datasets the Rectified Stitched Mosaic refers to have identical values in the `gml:offsetVector` elements of their domain sets.

Test passes if all individual tests pass.

#### A.1.23. Referenceable Stitched Mosaic Domainset

Test id: /conf/eowcs/referenceableStitchedMosaic-domain-set

Test Purpose: Requirement 23 /req/eowcs/referenceableStitchedMosaic-domain-set

Test method:

For each Referenceable Stitched Mosaic offered by the server under test:

- For any pair d1 and d2 of Datasets referred to by the given Stitched Mosaic:

  - Check that the set of point locations in the geographic overlap of the d1 and d2 domain set are identical.

Test passes if all individual tests pass.

#### A.1.24. Temporal Validity Stitched Mosaic

Test id: /conf/eowcs/temporal-validity-stitched-mosaic

Test Purpose: Requirement 24 /req/eowcs/temporal-validity-stitched-mosaic

Test method:

For each Stitched Mosaic offered by the server under test:

- retrieve the time interval t of the Stitched Mosaic given by its `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:beginPosition` and `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:endPosition` elements in `wcseo:EOMetadata` via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- Check that all responses contain the same time interval information.
  For each obtained dataset d:

  - retrieve the time interval ti of `dataset` d given by its `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:beginPosition` and `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:endPosition` elements in `wcseo:EOMetadata` via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

  - Check that all responses contain the same time interval information.

- Check that t is the minimal time interval containing the temporal validities of all Datasets the Stitched Mosaic refers to.

Test passes if all individual tests pass.

#### A.1.25. Datasets in Stitched Mosaic Same Rangetype

Test id: /conf/eowcs/datasets-in-stitched-mosaic-same-range-type

Test Purpose: Requirement 25 /req/eowcs/datasets-in-stitched-mosaic-same-range-type

Test method:

For each Stitched Mosaic offered by the server under test:

- Obtain range type via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations. Check that all responses contain the same range type information s.

- For each obtained `dataset`:

  - Obtain range type via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

  - Check that all responses contain the same range type d, and check that d is identical to the range type of s.

Test passes if all individual tests pass.

#### A.1.26. Nil Values in Stitched Mosaic

Test id: /conf/eowcs/nil-values-in-stitched-mosaic

Test Purpose: Requirement 26 /req/eowcs/nil-values-in-stitched-mosaic

Test method:

For each Stitched Mosaic offered by the server under test:

- Obtain the domain set via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations.

- Check that all responses contain the same domain set information.

- Check that if the domain set contains locations which are not inside any contributingFootprint the Stitched Mosaic refers to then the nil value set of that Stitched Mosaic are not empty.

Test passes if all individual tests pass.

#### A.1.27. Range Values of Stitched Mosaic

Test id: /conf/eowcs/range-values-of-stitched-mosaic

Test Purpose: Requirement 27 /req/eowcs/range-values-of-stitched-mosaic

Test method:

For each Stitched Mosaic offered by the server under test:

- Obtain the contained cells via GetCoverage operation.

- For each obtained cell with location p check that:

  - if p is located within the contributingFootprint of some Dataset d referred to by s then it is the range value of d at p;

  - if p is not located within the contributingFootprint of any Dataset d referred to by s then it is one of the range values contained in the nil value set of s.

Test passes if all individual tests pass.

#### A.1.28. Dataset Series Structure

Test id: /conf/eowcs/datasetSeries-structure

Test Purpose: Requirement 28 /req/eowcs/datasetSeries-structure

Test method:

For each `EOWCS::DatasetSeries` offered by the server under test:

- Obtain the `EOWCS::DatasetSeries` via DescribeEOCoverageSet. Check that all responses consist of an XML document as defined in the places referenced.

Test passes if all individual tests pass.

#### A.1.29. Footprint in Dataset Series

Test id: /conf/eowcs/footprint-in-datasetSeries

Test Purpose: Requirement 29 /req/eowcs/footprint-in-datasetSeries

Test method:

For each `EOWCS::DatasetSeries` offered by the server under test:

- Obtain the `footprint` of `EOWCS::DatasetSeries` via DescribeEOCoverageSet.

- Check that the locations of the `footprint` are expressed in WGS84.

- Obtain the footprints of all Stitched Mosaics and Datasets the Dataset Series refers to.

- Check that these footprints are enclosed in the `footprint` of `EOWCS::DatasetSeries`.

Test passes if all individual tests pass.

#### A.1.30. TimePeriod in DatasetSeries

Test id: /conf/eowcs/timePeriod-in-datasetSeries

Test Purpose: Requirement 30 /req/eowcs/timePeriod-in-datasetSeries

Test method:

For each `EOWCS::DatasetSeries` offered by the server under test:

- Obtain the `timePeriod` element s of `EOWCS::DatasetSeries` via DescribeEOCoverageSet. Check that s is expressed in ISO 8601and that:

- For each Stitched Mosaics and Datasets the Dataset Series refers to:

  - retrieve the time interval d via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations. Check that all responses contain the same time interval information.

  - Check that d is enclosed by the temporal validities of s.

Test passes if all individual tests pass.

#### A.1.31. Metadata in DatasetSeries

Test id: /conf/eowcs/metadata-in-datasetSeries

Test Purpose: Requirement 31 /req/eowcs/metadata-in-datasetSeries

Test method:

TODO

#### A.1.32. No circular references of Dataset Series

Test id: /conf/eowcs/nocircularreference-of-datasetSeries

Test Purpose: Requirement 32 /req/eowcs/nocircularreference-of-datasetSeries

Test method:

For each `EOWCS::DatasetSeries` offered by the server under test:

- Obtain the `EOWCS::DatasetSeries` via DescribeEOCoverageSet. Check that all `EOWCS::DatasetSeries` it refers to do not refer to the `EOWCS::DatasetSeries` at hand.

Test passes if all individual tests pass.

#### A.1.33. GetCapabilities Request Sections

Test id: /conf/eowcs/getCapabilities-request-sections

Test Purpose: Requirement 33 /req/eowcs/getCapabilities-request-sections

Test method:

Send a valid GetCapabilities request contains a `sections` element and this element contains `section` elements with the values defined in OWS Common, or "DatasetSeriesSummary", or "CoverageSummary" to the server under test, check the result consists of an XML document of type `Capabilities` and the appropriate components, as defined in the places referenced.

#### A.1.34. GetCapabilities Response eowcs Conformance Class in Profile

Test id: /conf/eowcs/getCapabilities-response-conformance-class-in-profile

Test Purpose: Requirement 34 /req/eowcs/getCapabilities-response-conformance-class-in-profile

Test method:

Determine the list of supported extensions via a valid GetCapabilities request; check that the extension required is listed.

#### A.1.35. GetCapabilities Response eowcs_geteocoverageset Conformance Class in Profile

Test id: /conf/eowcs_geteocoverageset/getCapabilities-response-conformance-class-in-profile

Test Purpose: Requirement 35 /req/eowcs_geteocoverageset/getCapabilities-response-conformance-class-in-profile

Test method:

Determine the list of supported extensions via a valid GetCapabilities request; check that the extension required is listed.

#### A.1.36. GetCapabilities Response Structure

Test id: /conf/eowcs/getCapabilities-response-structure

Test Purpose: Requirement 36 /req/eowcs/getCapabilities-response-structure

Test method:

Send a valid GetCapabilities request to the server under test, check the result consists of an XML document of type `Capabilities` and the appropriate components, as defined in the places referenced.

#### A.1.37. GetCapabilities Response DatasetSeriesSummary

Test id: /conf/eowcs/getCapabilities-response-datasetSeriesSummary

Test Purpose: Requirement 37 /req/eowcs/getCapabilities-response-datasetSeriesSummary

Test method:

Send a valid GetCapabilities request to the service under test. If a `EOWCS::DatasetSeriesSummary` section is contained in the response then send, for each `DatasetSeriesId`, a valid DescribeEOCoverageSet request. Check that none of these requests results in an exception. Test passes if all checks are successful.

#### A.1.38. GetCapabilities Response DatasetSeriesSummary no-duplicates

Test id: /conf/eowcs/getCapabilities-response-datasetSeriesSummary-no-duplicates

Test Purpose: Requirement 38 /req/eowcs/getCapabilities-response-datasetSeriesSummary-no-duplicates

Test method:

Send a valid GetCapabilities request to the service under test. If a `EOWCS::DatasetSeriesSummary` section is contained in the response check that it does not contain any duplicate Dataset Series identifier.

#### A.1.39. GetCapabilities Response Coverage Summary

Test id: /conf/eowcs/getCapabilities-response-coverageSummary

Test Purpose: Requirement 39 /req/eowcs/getCapabilities-response-coverageSummary

Test method:

Send a valid GetCapabilities request to the service under test. If a `WCS::CoverageSummary` section is contained in the response then send, for each coverage identifier, a valid DescribeCoverage and a valid DescribeEOCoverageSet request. Check that none of these requests results in an exception. Test passes if all individual tests pass.

#### A.1.40. GetCapabilities Response Coverage Summary Section

Test id: /conf/eowcs/getCapabilities-response-coverageSummary-section

Test Purpose: Requirement 40 /req/eowcs/getCapabilities-response-coverageSummary-section

Test method:

Send valid GetCapabilities requests contains a `sections` parameter and the section parameter list contains one of the values "CoverageSummary", "Contents", or "All" to the service under test. Check that the response contains `wcs:CoverageSummary` elements.Test passes if all individual tests pass.

#### A.1.41. GetCapabilities Response DatasetSeries Summary Section

Test id: /conf/eowcs/getCapabilities-response-datasetSeriesSummary-section

Test Purpose: Requirement 41 /req/eowcs/getCapabilities-response-datasetSeriesSummary-section

Test method:

Send valid GetCapabilities requests contains a `sections` parameter and the section parameter list contains one of the values "DatasetSeriesSummary" or "All" to the service under test. Check that the response contains a `wcseo:DatasetSeriesSummary`.Test passes if all individual tests pass.

#### A.1.42. GetCapabilities Response Coverage Subtype

Test id: /conf/eowcs/getCapabilities-response-coverageSubtype

Test Purpose: Requirement 42 /req/eowcs/getCapabilities-response-coverageSubtype

Test method:

Send a valid GetCapabilities request to the server under test, check that each EO Coverage listed contains the corresponding value in its `WCS::CoverageSubtype` element.

#### A.1.43. GetCapabilities Response countDefault

Test id: /conf/eowcs/getCapabilities-response-countDefault

Test Purpose: Requirement 43 /req/eowcs/getCapabilities-response-countDefault

Test method:

Send a valid GetCapabilities request to the server under test, check that its `ows:OperationsMetadata` element contains an `ows:Constraint` element, as defined in the places referenced.

#### A.1.44. GetCapabilities Response pagingSupported

Test id: /conf/eowcs/getCapabilities-response-paging-supported

Test Purpose: Requirement 44 /req/eowcs/getCapabilities-response-paging-supported

Test method:

TODO

#### A.1.45. GetCapabilities Response wcseoMetadata

Test id: /conf/eowcs_geteocoverageset/getCapabilities-response-wcseoMetadata

Test Purpose: Requirement 45 /req/eowcs_geteocoverageset/getCapabilities-response-wcseoMetadata

Test method:

TODO

#### A.1.46. DescribeEOCoverageSet Response defaultPackageFormat

Test id: /conf/eowcs_geteocoverageset/getCapabilities-response-defaultPackageFormat

Test Purpose: Requirement 46 /req/eowcs_geteocoverageset/getCapabilities-response-defaultPackageFormat

Test method:

TODO

#### A.1.47. GetCapabilities Response packageFormatSupported

Test id: /conf/eowcs_geteocoverageset/getCapabilities-response-packageFormatSupported

Test Purpose: Requirement 47 /req/eowcs_geteocoverageset/getCapabilities-response-packageFormatSupported

Test method:

TODO

#### A.1.48. Describe Coverage Response EO Metadata

Test id: /conf/eowcs/describeCoverage-response-eo-metadata

Test Purpose: Requirement 48 /req/eowcs/describeCoverage-response-eo-metadata

Test method:

For each EO Coverage offered by the server, send a valid DescribeCoverage request to server under test. Check that the result contains an `EOMetadata` element. Test passes if all individual tests pass.

#### A.1.49. Describe Coverage Response Coverage Subtype

Test id: /conf/eowcs/describeCoverage-response-coverageSubtype

Test Purpose: Requirement 49 /req/eowcs/describeCoverage-response-coverageSubtype

Test method:

Send a valid DescribeCoverage request to the server under test, check that each EO Coverage listed contains the corresponding value in its `WCS::CoverageSubtype` element.

#### A.1.50. GetCoverage Request no Slicing

Test id: /conf/eowcs/getCoverage-request-no-slicing

Test Purpose: Requirement 50 /req/eowcs/getCoverage-request-no-slicing

Test method:

For each EO Coverage offered by the server:

- send otherwise GetCoverage requests with and without a slicing operation.

- Check whether appropriate valid results or exceptions, resp., are delivered.

Test passes if all individual tests pass.

#### A.1.51. GetCoverage Response Coverage Type

Test id: /conf/eowcs/getCoverage-response-coverage-type

Test Purpose: Requirement 51 /req/eowcs/getCoverage-response-coverage-type

Test method:

For each Rectified EO Coverage offered by the server:

- send a valid GetCoverage request to server under test.

- Check that the result is Coverage of correct type.

Test passes if all individual tests pass.

#### A.1.52. GetCoverage Response EO Metadata

Test id: /conf/eowcs/getCoverage-response-eo-metadata

Test Purpose: Requirement 52 /req/eowcs/getCoverage-response-eo-metadata

Test method:

For each EO Coverage offered by the server:

- send a valid GetCoverage request to server under test.

- Check that the responses contain a `EOWCS::EOMetadata`.

Test passes if all individual tests pass.

#### A.1.53. GetCoverage Response EO Metadata in Stitched Mosaic

Test id: /conf/eowcs/getCoverage-response-eo-metadata-in-stitched-mosaic

Test Purpose: Requirement 53 /req/eowcs/getCoverage-response-eo-metadata-in-stitched-mosaic

Test method:

For each Stitched Mosaic offered by the server:

- send a valid GetCoverage request with an effective spatio-temporal request trim interval to server under test.

- Check that the `EOWCS::EOMetadata` of the coverage returned contains the original Stitched Mosaic’s references to those Datasets which have a non-empty intersection with the effective spatio-temporal request trim interval.

Test passes if all individual tests pass.

#### A.1.54. GetCoverage Response Footprint in EO Metadata

Test id: /conf/eowcs/getCoverage-response-footprint-in-eo-metadata

Test Purpose: Requirement 54 /req/eowcs/getCoverage-response-footprint-in-eo-metadata

Test method:

For each EO Coverage offered by the server:

- Send a valid GetCoverage request with a spatial request trim interval to server under test. Check that the footprint of the `EOWCS::EOMetadata` in the coverage returned is given by the intersection of the spatial request interval and the footprint of the coverage requested.

- Send a valid GetCoverage request without a trimming interval to server under test. Check that the footprint in the result coverage is given by the footprint of the coverage requested.

Test passes if all individual tests pass.

#### A.1.55. GetCoverage Response Lineage in EO Metadata

Test id: /conf/eowcs/getCoverage-response-lineage-in-eo-metadata

Test Purpose: Requirement 55 /req/eowcs/getCoverage-response-lineage-in-eo-metadata

Test method:

For each EO Coverage offered by the server under test:

- retrieve Lineage component information via DescribeCoverage, DescribeEOCoverageSet, and GetCoverage operations. Check that all responses contain the same information.

- Send a valid GetCoverage request to server under test. Check that the Lineage component consists of the Lineage component of the coverage requested with one record appended containing the complete, verbatim GetCoverage request leading to this response.

Test passes if all individual tests pass.

#### A.1.56. DescribeEOCoverageSet Request Structure

Test id: /conf/eowcs/describeEOCoverageSet-request-structure

Test Purpose: Requirement 56 /req/eowcs/describeEOCoverageSet-request-structure

Test method:

Send DescribeEOCoverageSet requests with valid and invalid request structure.

Pass test if appropriate valid results or exceptions, resp., are delivered.

#### A.1.57. DescribeEOCoverageSet Request Sections

Test id: /conf/eowcs/describeEOCoverageSet-request-sections

Test Purpose: Requirement 57 /req/eowcs/describeEOCoverageSet-request-sections

Test method:

Send otherwise valid DescribeEOCoverageSet requests containing a `sections` element and this element containing one of the values:

- "CoverageDescription"

- "DatasetSeriesDescriptions"

- "All"

- invalid values

Pass test if appropriate valid results or exceptions, resp., are delivered.

#### A.1.58. DescribeEOCoverageSet Request eoId

Test id: /conf/eowcs/describeEOCoverageSet-request-eoId

Test Purpose: Requirement 58 /req/eowcs/describeEOCoverageSet-request-eoId

Test method:

For each Dataset, Stitched Mosaic, and Dataset Series offered by the server under test, sends a valid DescribeEOCoverageSet request to server under test. Check that the identifier of a Dataset, a Stitched Mosaic, or a Dataset Series is equal to the eoId parameter value in the request. Test passes if all individual tests pass.

#### A.1.59. DescribeEOCoverageSet Request Containment

Test id: /conf/eowcs/describeEOCoverageSet-request-containment

Test Purpose: Requirement 59 /req/eowcs/describeEOCoverageSet-request-containment

Test method:

Send otherwise valid DescribeEOCoverageSet requests contain a `containment` parameter and this parameter has one of the values:

- "contains"

- "overlaps"

- invalid values

Pass test if appropriate valid results or exceptions, resp., are delivered.

#### A.1.60. DescribeEOCoverageSet Request Dimension

Test id: /conf/eowcs/describeEOCoverageSet-request-dimensions

Test Purpose: Requirement 60 /req/eowcs/describeEOCoverageSet-request-dimensions

Test method:

Send otherwise valid DescribeEOCoverageSet requests to server under test which contain duplicate, and send requests which contain no duplicate dimension parameters. Do so for requests with single, and multiple `dimensionTrim`. Verify that, whenever at least one duplicate dimension occurs, an exception is returned and a normal response otherwise.

#### A.1.61. DescribeEOCoverageSet Request CRS

Test id: /conf/eowcs/describeEOCoverageSet-request-crs

Test Purpose: Requirement 61 /req/eowcs/describeEOCoverageSet-request-crs

Test method:

Send otherwise valid DescribeEOCoverageSet requests to server under test which contain:

- WGS84 [4] as spatial and ISO8601 [2] as temporal CRS for the coordinates in trim request

- Other CRS for the coordinates in trim requests

Pass test if appropriate valid results or exceptions, resp., are delivered.

#### A.1.62. DescribeEOCoverageSet Response Structure

Test id: /conf/eowcs/describeEOCoverageSet-response-structure

Test Purpose: Requirement 62 /req/eowcs/describeEOCoverageSet-response-structure

Test method:

Send a valid DescribeEOCoverageSet request to the server under test, check that the result consist of a `EOWCS::EOCoverageSetDescription` structure.

#### A.1.63. DescribeEOCoverageSet Response EO Metadata

Test id: /conf/eowcs/describeEOCoverageSet-response-eo-metadata

Test Purpose: Requirement 63 /req/eowcs/describeEOCoverageSet-response-eo-metadata

Test method:

Send a valid DescribeEOCoverageSet requests to server under test, check that each `WCS::CoverageDescription` listed in the response contains one `EOWCS::EOMetadata` element and this element contains the EO Metadata component of the EO Coverage to be described.

#### A.1.64. DescribeEOCoverageSet Response EO Section CoverageDescriptions

Test id: /conf/eowcs/describeEOCoverageSet-response-section-coverageDescriptions

Test Purpose: Requirement 64 /req/eowcs/describeEOCoverageSet-response-section-coverageDescriptions

Test method:

Send otherwise valid DescribeEOCoverageSet requests contain a `sections` element and this element contains one of the section parameter values:

- "CoverageDescription"

- "All"

- invalid values

Pass test if appropriate valid results or exceptions, resp., are delivered.

#### A.1.65. DescribeEOCoverageSet Response EO Section DatasetSeriesDescriptions

Test id: /conf/eowcs/describeEOCoverageSet-response-section-datasetSeriesDescriptions

Test Purpose: Requirement 65 /req/eowcs/describeEOCoverageSet-response-section-datasetSeriesDescriptions

Test method:

Send otherwise valid DescribeEOCoverageSet requests contain a `sections` element and this element contains one of the section parameter values:

- "DatasetSeriesDescriptions"

- "All"

- invalid values

Pass test if appropriate valid results or exceptions, resp., are delivered.

#### A.1.66. DescribeEOCoverageSet Response eoId

Test id: /conf/eowcs/describeEOCoverageSet-response-eoId

Test Purpose: Requirement 66 /req/eowcs/describeEOCoverageSet-response-eoId

Test method:

Send a valid DescribeEOCoverageSet request containing a `wcs:CoverageDescription` section to server under test. Check that each EO Coverage referred to by one of the objects identified in the `eoId` request parameter appears at most once.

#### A.1.67. DescribeEOCoverageSet Response Referred

Test id: /conf/eowcs/describeEOCoverageSet-response-referred

Test Purpose: Requirement 67 /req/eowcs/describeEOCoverageSet-response-referred

Test method:

For each send a valid DescribeEOCoverageSet requests to server under test, check that each `WCS::CoverageDescription` listed in the response is at least contained in one of the `EOWCS::EOMetadata` elements and that this element contains the EO Metadata component of the EO Coverage to be described.

For each `EOWCS::DatasetSeries` offered by the server under test:

- Send a valid DescribeEOCoverageSet request. Check that each `WCS::CoverageDescription` listed in the response is at least referred to by one `EOWCS::DatasetSeries` also contained in the response.

Test passes if all individual tests pass.

#### A.1.68. DescribeEOCoverageSet Response Containment

Test id: /conf/eowcs/describeEOCoverageSet-response-containment

Test Purpose: Requirement 68 /req/eowcs/describeEOCoverageSet-response-containment

Test method:

Send otherwise valid DescribeEOCoverageSet requests containing a `wcs:CoverageDescription` section and a spatial trim to server under test. Check that:

- if the request parameter `containment` is of value `overlaps` or is omitted, the response contains only descriptions of those EO Coverages whose spatial footprint defined by its `eop:EarthObservation/om:featureOfInterest/eop:Footprint` overlaps with the spatial request extent;

- if the request parameter `containment` is of value `contains`, the response contains only descriptions of those EO Coverages whose spatial footprint defined by its `eop:EarthObservation/om:featureOfInterest/eop:Footprint` is completely contained within the spatial request extent.

Pass test if both checks succeed.

#### A.1.69. DescribeEOCoverageSet Response PhenomenonTime

Test id: /conf/eowcs/describeEOCoverageSet-response-phenomenonTime

Test Purpose: Requirement 69 /req/eowcs/describeEOCoverageSet-response-phenomenonTime

Test method:

Send otherwise valid DescribeEOCoverageSet requests containing a `wcs:CoverageDescription` section and a time interval to server under test. Check that:

- if the request parameter `containment` is of value `overlaps` or is omitted, the response contains only descriptions of EO Coverages whose time interval defined by its `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:beginPosition` and `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:endPosition` elements in `wcseo:EOMetadata` overlaps with the request time extent;

- if request parameter `containment` is of value `contains`, the response contains only descriptions of EO Coverages whose time interval defined by its `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:beginPosition` and `eop:EarthObservation/om:phenomenonTime/gml:TimePeriod/gml:endPosition` elements in `wcseo:EOMetadata` is completely contained within the request time extent;

Pass test if both checks succeed.

#### A.1.70. DescribeEOCoverageSet Response Trim Omitted

Test id: /conf/eowcs/describeEOCoverageSet-response-trim-omitted

Test Purpose: Requirement 70 /req/eowcs/describeEOCoverageSet-response-trim-omitted

Test method:

Send otherwise valid DescribeEOCoverageSet requests with a trimming in actual boundary of the object and without a trimming to server under test. Check that both responses are not exceptions and equal.

#### A.1.71. DescribeEOCoverageSet Response Bound Omitted

Test id: /conf/eowcs/describeEOCoverageSet-response-bound-omitted

Test Purpose: Requirement 71 /req/eowcs/describeEOCoverageSet-response-bound-omitted

Test method:

Send otherwise valid DescribeEOCoverageSet requests with a lower or upper bound omitted to server under test. Check that the responses are the same when they are indicated in actual lower or upper bound of the objects.

#### A.1.72. DescribeEOCoverageSet Response CoverageSubtype

Test id: /conf/eowcs/describeEOCoverageSet-response-coverageSubtype

Test Purpose: Requirement 72 /req/eowcs/describeEOCoverageSet-response-coverageSubtype

Test method:

Send a valid DescribeEOCoverageSet request to server under test. Check that each Coverage listed contains the corresponding value in its `WCS::CoverageSubtype` element.

#### A.1.73. DescribeEOCoverageSet Response Count

Test id: /conf/eowcs/describeEOCoverageSet-response-count

Test Purpose: Requirement 73 /req/eowcs/describeEOCoverageSet-response-count

Test method:

Send a valid DescribeEOCoverageSet request containing a `count` parameter with a value lower than the value of the `CountDefault` element to server under test. Check that the sum of the numbers of `CoverageDescription` and `DatasetSeriesDescription` elements is less or equal to the value of the `count` parameter.

#### A.1.74. DescribeEOCoverageSet Response startIndex

Test id: /conf/eowcs/describeEOCoverageSet-response-startIndex

Test Purpose: Requirement 74 /req/eowcs/describeEOCoverageSet-response-startIndex

Test method:

TODO

#### A.1.75. DescribeEOCoverageSet Response numberMatched attribute

Test id: /conf/eowcs/describeEOCoverageSet-response-numberMatched

Test Purpose: Requirement 75 /req/eowcs/describeEOCoverageSet-response-numberMatched

Test method:

Send a valid DescribeEOCoverageSet request containing a `count` parameter with a value lower than the value of the `CountDefault` element to server under test. Check that the sum of the numbers of `CoverageDescription` and `DatasetSeriesDescription` elements is higher or equal to the value of the reported `numberMatched` parameter.

#### A.1.76. DescribeEOCoverageSet Response numberReturned attribute

Test id: /conf/eowcs/describeEOCoverageSet-response-numberReturned

Test Purpose: Requirement 76 /req/eowcs/describeEOCoverageSet-response-numberReturned

Test method:

Send a valid DescribeEOCoverageSet request containing a `count` parameter with a value lower than the value of the `CountDefault` element to server under test. Check that the sum of the numbers of `CoverageDescription` and `DatasetSeriesDescription` elements is equal to the value of the reported `numberReturned` parameter.

#### A.1.77. DescribeEOCoverageSet Response startIndex attribute

Test id: /conf/eowcs/describeEOCoverageSet-response-startIndex-attr

Test Purpose: Requirement 77 /req/eowcs/describeEOCoverageSet-response-startIndex-attr

Test method:

TODO

#### A.1.78. DescribeEOCoverageSet Response next attribute

Test id: /conf/eowcs/describeEOCoverageSet-response-next

Test Purpose: Requirement 78 /req/eowcs/describeEOCoverageSet-response-next

Test method:

TODO

#### A.1.79. DescribeEOCoverageSet Response previous attribute

Test id: /conf/eowcs/describeEOCoverageSet-response-previous

Test Purpose: Requirement 79 /req/eowcs/describeEOCoverageSet-response-previous

Test method:

TODO

#### A.1.80. GetEOCoverageSet Request Structure

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-request-structure

Test Purpose: Requirement 80 /req/eowcs_geteocoverageset/getEOCoverageSet-request-structure

Test method:

TODO

#### A.1.81. GetEOCoverageSet Request eoId

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-request-eoId

Test Purpose: Requirement 81 /req/eowcs_geteocoverageset/getEOCoverageSet-request-eoId

Test method:

TODO

#### A.1.82. GetEOCoverageSet Request Containment

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-request-containment

Test Purpose: Requirement 82 /req/eowcs_geteocoverageset/getEOCoverageSet-request-containment

Test method:

TODO

#### A.1.83. GetEOCoverageSet Request Dimensions

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-request-dimensions

Test Purpose: Requirement 83 /req/eowcs_geteocoverageset/getEOCoverageSet-request-dimensions

Test method:

TODO

#### A.1.84. GetEOCoverageSet Request CRS

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-request-crs

Test Purpose: Requirement 84 /req/eowcs_geteocoverageset/getEOCoverageSet-request-crs

Test method:

TODO

#### A.1.85. GetEOCoverageSet Request packageFormat

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-acceptable-packageFormat

Test Purpose: Requirement 85 /req/eowcs_geteocoverageset/getEOCoverageSet-acceptable-packageFormat

Test method:

TODO

#### A.1.86. GetEOCoverageSet Request mediaType

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-acceptable-mediaType

Test Purpose: Requirement 86 /req/eowcs_geteocoverageset/getEOCoverageSet-acceptable-mediaType

Test method:

TODO

#### A.1.87. GetEOCoverageSet Request Format

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-acceptable-format

Test Purpose: Requirement 87 /req/eowcs_geteocoverageset/getEOCoverageSet-acceptable-format

Test method:

TODO

#### A.1.88. GetEOCoverageSet Request Scaling

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-acceptable-scaling

Test Purpose: Requirement 88 /req/eowcs_geteocoverageset/getEOCoverageSet-acceptable-scaling

Test method:

TODO

#### A.1.89. GetEOCoverageSet Request Interpolation

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-acceptable-interpolation

Test Purpose: Requirement 89 /req/eowcs_geteocoverageset/getEOCoverageSet-acceptable-interpolation

Test method:

TODO

#### A.1.90. GetEOCoverageSet Request CRSs

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-acceptable-crss

Test Purpose: Requirement 90 /req/eowcs_geteocoverageset/getEOCoverageSet-acceptable-crss

Test method:

TODO

#### A.1.91. GetEOCoverageSet Response packageFormat

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-packageFormat

Test Purpose: Requirement 91 /req/eowcs_geteocoverageset/getEOCoverageSet-packageFormat

Test method:

TODO

#### A.1.92. GetEOCoverageSet Response multipart

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-multipart

Test Purpose: Requirement 92 /req/eowcs_geteocoverageset/getEOCoverageSet-multipart

Test method:

TODO

#### A.1.93. GetEOCoverageSet Response mediaType

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-mediaType

Test Purpose: Requirement 93 /req/eowcs_geteocoverageset/getEOCoverageSet-mediaType

Test method:

TODO

#### A.1.94. GetEOCoverageSet Response cid

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-cid

Test Purpose: Requirement 94 /req/eowcs_geteocoverageset/getEOCoverageSet-cid

Test method:

TODO

#### A.1.95. GetEOCoverageSet Response Format

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-format

Test Purpose: Requirement 95 /req/eowcs_geteocoverageset/getEOCoverageSet-format

Test method:

TODO

#### A.1.96. GetEOCoverageSet Response GetCoverage Applicable

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-getCoverage

Test Purpose: Requirement 96 /req/eowcs_geteocoverageset/getEOCoverageSet-getCoverage

Test method:

TODO

#### A.1.97. GetEOCoverageSet Response eoId

Test id: /conf/eowcs/getEOCoverageSet-response-eoId

Test Purpose: Requirement 97 /req/eowcs/getEOCoverageSet-response-eoId

Test method:

TODO

#### A.1.98. GetEOCoverageSet Response Referred

Test id: /conf/eowcs/getEOCoverageSet-response-referred

Test Purpose: Requirement 98 /req/eowcs/getEOCoverageSet-response-referred

Test method:

TODO

#### A.1.99. GetEOCoverageSet Response Containment

Test id: /conf/eowcs/getEOCoverageSet-response-containment

Test Purpose: Requirement 99 /req/eowcs/getEOCoverageSet-response-containment

Test method:

TODO

#### A.1.100. GetEOCoverageSet Response phenomenonTime

Test id: /conf/eowcs/getEOCoverageSet-response-phenomenonTime

Test Purpose: Requirement 100 /req/eowcs/getEOCoverageSet-response-phenomenonTime

Test method:

TODO

#### A.1.101. GetEOCoverageSet Response Trim Omitted

Test id: /conf/eowcs/getEOCoverageSet-response-trim-omitted

Test Purpose: Requirement 101 /req/eowcs/getEOCoverageSet-response-trim-omitted

Test method:

TODO

#### A.1.102. GetEOCoverageSet Response Bound Omitted

Test id: /conf/eowcs/getEOCoverageSet-response-bound-omitted

Test Purpose: Requirement 102 /req/eowcs/getEOCoverageSet-response-bound-omitted

Test method:

TODO

#### A.1.103. GetEOCoverageSet Response Count

Test id: /conf/eowcs/getEOCoverageSet-response-count

Test Purpose: Requirement 103 /req/eowcs/getEOCoverageSet-response-count

Test method:

TODO

#### A.1.104. GetEOCoverageSet Response startIndex

Test id: /conf/eowcs/getEOCoverageSet-response-startIndex

Test Purpose: Requirement 104 /req/eowcs/getEOCoverageSet-response-startIndex

Test method:

TODO

#### A.1.105. GetEOCoverageSet Response numberMatched attribute

Test id: /conf/eowcs/getEOCoverageSet-response-numberMatched

Test Purpose: Requirement 105 /req/eowcs/getEOCoverageSet-response-numberMatched

Test method:

TODO

#### A.1.106. GetEOCoverageSet Response numberReturned attribute

Test id: /conf/eowcs/getEOCoverageSet-response-numberReturned

Test Purpose: Requirement 106 /req/eowcs/getEOCoverageSet-response-numberReturned

Test method:

TODO

#### A.1.107. GetEOCoverageSet Response startIndex attribute

Test id: /conf/eowcs/getEOCoverageSet-response-startIndex-attr

Test Purpose: Requirement 107 /req/eowcs/getEOCoverageSet-response-startIndex-attr

Test method:

TODO

#### A.1.108. GetEOCoverageSet Response next attribute

Test id: /conf/eowcs/getEOCoverageSet-response-next

Test Purpose: Requirement 108 /req/eowcs/getEOCoverageSet-response-next

Test method:

TODO

#### A.1.109. GetEOCoverageSet Response previous attribute

Test id: /conf/eowcs/getEOCoverageSet-response-previous

Test Purpose: Requirement 109 /req/eowcs/getEOCoverageSet-response-previous

Test method:

TODO

#### A.1.110. GetEOCoverageSet Response applySubset

Test id: /conf/eowcs/getEOCoverageSet-response-applySubset

Test Purpose: Requirement 110 /req/eowcs/getEOCoverageSet-response-applySubset

Test method:

TODO

#### A.1.111. GetEOCoverageSet Response Scaling

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-scaling

Test Purpose: Requirement 111 /req/eowcs_geteocoverageset/getEOCoverageSet-scaling

Test method:

TODO

#### A.1.112. GetEOCoverageSet Response Interpolation

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-interpolation

Test Purpose: Requirement 112 /req/eowcs_geteocoverageset/getEOCoverageSet-interpolation

Test method:

TODO

#### A.1.113. GetEOCoverageSet Response CRSs

Test id: /conf/eowcs_geteocoverageset/getEOCoverageSet-crss

Test Purpose: Requirement 113 /req/eowcs_geteocoverageset/getEOCoverageSet-crss

Test method:

TODO

#### A.1.114. Band Subsetting

Test id: /conf/eowcs/band-subsetting

Test Purpose: Requirement 114 /req/eowcs/band-subsetting

Test method:

Determine the list of supported extensions via a valid GetCapabilities request; check that the extension required is listed.

#### A.1.115. Scaling

Test id: /conf/eowcs/scaling

Test Purpose: Requirement 115 /req/eowcs/scaling

Test method:

Determine the list of supported extensions via a valid GetCapabilities request; check that the extension required is listed.

#### A.1.116. Interpolation

Test id: /conf/eowcs/interpolation

Test Purpose: Requirement 116 /req/eowcs/interpolation

Test method:

Determine the list of supported extensions via a valid GetCapabilities request; check that the extension required is listed.

#### A.1.117. CRS

Test id: /conf/eowcs/crs

Test Purpose: Requirement 117 /req/eowcs/crs

Test method:

Determine the list of supported extensions via a valid GetCapabilities request; check that the extension required is listed.

#### A.1.118. Encodings

Test id: /conf/eowcs/encodings

Test Purpose: Requirement 118 /req/eowcs/encodings

Test method:

Determine the list of supported extensions via a valid GetCapabilities request; check that the extension required is listed.

#### A.1.119. Protocol-bindings

Test id: /conf/eowcs/protocol-bindings

Test Purpose: Requirement 119 /req/eowcs/protocol-bindings

Test method:

Determine the list of supported extensions via a valid GetCapabilities request; check that the extension required is listed.

### A.2. Conformance Test Class: eowcs_get-kvp

The OGC URI identifier of this conformance class is: http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs_get-kvp

#### A.2.1. eowcs_get-kvp/Mandatory

Test id: /conf/eowcs_get-kvp/mandatory

Test Purpose: Requirement 120 /req/eowcs_get-kvp/mandatory

Test method:

Determine the list of supported extensions via a valid GetCapabilities request; check that the extension required is listed.

#### A.2.2. eowcs_get-kvp/Conformance Class in Profile

Test id: /conf/eowcs_get-kvp/conformance-class-in-profile

Test Purpose: Requirement 121 /req/eowcs_get-kvp/conformance-class-in-profile

Test method:

Determine the list of supported extensions via a valid GetCapabilities request; check that the extension required is listed.

#### A.2.3. eowcs_get-kvp/describeEOCoverageSet request

Test id: /conf/eowcs_get-kvp/describeEOCoverageSet-request

Test Purpose: Requirement 122 /req/eowcs_get-kvp/describeEOCoverageSet-request

Test method:

Send a valid get-kvp DescribeEOCoverageSet request as defined. Check that the response is not an exception.

#### A.2.4. eowcs_get-kvp/describeEOCoverageSet eoid

Test id: /conf/eowcs_get-kvp/describeEOCoverageSet-eoid

Test Purpose: Requirement 123 /req/eowcs_get-kvp/describeEOCoverageSet-eoid

Test method:

Send a valid get-kvp DescribeEOCoverageSet request as defined. Check that the response is not an exception.

#### A.2.5. eowcs_get-kvp/describeEOCoverageSet containment

Test id: /conf/eowcs_get-kvp/describeEOCoverageSet-containment

Test Purpose: Requirement 124 /req/eowcs_get-kvp/describeEOCoverageSet-containment

Test method:

Send a valid get-kvp DescribeEOCoverageSet request as defined. Check that the response is not an exception.

#### A.2.6. eowcs_get-kvp/describeEOCoverageSet count

Test id: /conf/eowcs_get-kvp/describeEOCoverageSet-count

Test Purpose: Requirement 125 /req/eowcs_get-kvp/describeEOCoverageSet-count

Test method:

TODO

#### A.2.7. eowcs_get-kvp/describeEOCoverageSet startIndex

Test id: /conf/eowcs_get-kvp/describeEOCoverageSet-startIndex

Test Purpose: Requirement 126 /req/eowcs_get-kvp/describeEOCoverageSet-startIndex

Test method:

TODO

#### A.2.8. eowcs_get-kvp/describeEOCoverageSet Subset

Test id: /conf/eowcs_get-kvp/describeEOCoverageSet-subset

Test Purpose: Requirement 127 /req/eowcs_get-kvp/describeEOCoverageSet-subset

Test method:

Send a valid get-kvp DescribeEOCoverageSet request as defined. Check that the response is not an exception.

#### A.2.9. eowcs_get-kvp/getEOCoverageSet request

Test id: /conf/eowcs_get-kvp/getEOCoverageSet-request

Test Purpose: Requirement 128 /req/eowcs_get-kvp/getEOCoverageSet-request

Test method:

Send a valid get-kvp GetEOCoverageSet request as defined. Check that the response is not an exception.

#### A.2.10. eowcs_get-kvp/getEOCoverageSet eoid

Test id: /conf/eowcs_get-kvp/getEOCoverageSet-eoid

Test Purpose: Requirement 129 /req/eowcs_get-kvp/getEOCoverageSet-eoid

Test method:

Send a valid get-kvp GetEOCoverageSet request as defined. Check that the response is not an exception.

#### A.2.11. eowcs_get-kvp/getEOCoverageSet containment

Test id: /conf/eowcs_get-kvp/getEOCoverageSet-containment

Test Purpose: Requirement 130 /req/eowcs_get-kvp/getEOCoverageSet-containment

Test method:

Send a valid get-kvp GetEOCoverageSet request as defined. Check that the response is not an exception.

#### A.2.12. eowcs_get-kvp/getEOCoverageSet count

Test id: /conf/eowcs_get-kvp/getEOCoverageSet-count

Test Purpose: Requirement 131 /req/eowcs_get-kvp/getEOCoverageSet-count

Test method:

TODO

#### A.2.13. eowcs_get-kvp/getEOCoverageSet startIndex

Test id: /conf/eowcs_get-kvp/getEOCoverageSet-startIndex

Test Purpose: Requirement 132 /req/eowcs_get-kvp/getEOCoverageSet-startIndex

Test method:

TODO

#### A.2.14. eowcs_get-kvp/getEOCoverageSet packageFormat

Test id: /conf/eowcs_get-kvp/getEOCoverageSet-packageFormat

Test Purpose: Requirement 133 /req/eowcs_get-kvp/getEOCoverageSet-packageFormat

Test method:

TODO

#### A.2.15. eowcs_get-kvp/getEOCoverageSet mediaType

Test id: /conf/eowcs_get-kvp/getEOCoverageSet-mediaType

Test Purpose: Requirement 134 /req/eowcs_get-kvp/getEOCoverageSet-mediaType

Test method:

TODO

#### A.2.16. eowcs_get-kvp/getEOCoverageSet format

Test id: /conf/eowcs_get-kvp/getEOCoverageSet-format

Test Purpose: Requirement 135 /req/eowcs_get-kvp/getEOCoverageSet-format

Test method:

TODO

#### A.2.17. eowcs_get-kvp/getEOCoverageSet applySubset

Test id: /conf/eowcs_get-kvp/getEOCoverageSet-applySubset

Test Purpose: Requirement 136 /req/eowcs_get-kvp/getEOCoverageSet-applySubset

Test method:

TODO

#### A.2.18. eowcs_get-kvp/getEOCoverageSet parameters

Test id: /conf/eowcs_get-kvp/getEOCoverageSet-parameters

Test Purpose: Requirement 137 /req/eowcs_get-kvp/getEOCoverageSet-parameters

Test method:

TODO

#### A.2.19. eowcs_get-kvp/getEOCoverageSet Subset

Test id: /conf/eowcs_get-kvp/getEOCoverageSet-subset

Test Purpose: Requirement 138 /req/eowcs_get-kvp/getEOCoverageSet-subset

Test method:

Send a valid get-kvp GetEOCoverageSet request as defined. Check that the response is not an exception.

### A.3. Conformance Test Class: eowcs_soap

The OGC URI identifier of this conformance class is: http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.1/conf/eowcs_soap

#### A.3.1. eowcs_soap/Mandatory

Test id: /conf/eowcs_soap/mandatory

Test Purpose: Requirement 139 /req/eowcs_soap/mandatory

Test method:

Determine the list of supported extensions via a valid GetCapabilities request; check that the extension required is listed.

#### A.3.2. eowcs_soap/Conformance Class in Profile

Test id: /conf/eowcs_soap/conformance-class-in-profile

Test Purpose: Requirement 140 /req/eowcs_soap/conformance-class-in-profile

Test method:

Determine the list of supported extensions via a valid GetCapabilities request; check that the extension required is listed.

#### A.3.3. eowcs_soap/describeEOCoverageSet Request Structure

Test id: /conf/eowcs_soap/describeEOCoverageSet-request-structure

Test Purpose: Requirement 141 /req/eowcs_soap/describeEOCoverageSet-request-structure

Test method:

Send otherwise valid soap DescribeEOCoverageSet requests containing:

- exactly one Body element containing exactly one DescribeEOCoverageSet element;

- exactly one Body element containing more than one DescribeEOCoverageSet element;

- exactly one Body element containing no DescribeEOCoverageSet element;

- more than one Body element;

- without a Body element;

Pass test if appropriate valid results or exceptions, resp., are delivered.

#### A.3.4. eowcs_soap/describeEOCoverageSet Response Structure

Test id: /conf/eowcs_soap/describeEOCoverageSet-response-structure

Test Purpose: Requirement 142 /req/eowcs_soap/describeEOCoverageSet-response-structure

Test method:

Send a valid soap DescribeEOCoverageSet request to sever under test. Check response whether the condition is fulfilled.

#### A.3.5. eowcs_soap/describeEOCoverageSet-wsdl

Test id: /conf/eowcs_soap/describeEOCoverageSet-wsdl

Test Purpose: Requirement 143 /req/eowcs_soap/describeEOCoverageSet-wsdl

Test method:

For the service under test, retrieve the WSDL description and issue requests which make use of this service definition. Check that the service can be addressed and that queries can be retrieved properly.

#### A.3.6. eowcs_soap/getEOCoverageSet Request Structure

Test id: /conf/eowcs_soap/getEOCoverageSet-request-structure

Test Purpose: Requirement 144 /req/eowcs_soap/getEOCoverageSet-request-structure

Test method:

Send otherwise valid soap GetEOCoverageSet requests containing:

- exactly one Body element containing exactly one GetEOCoverageSet element;

- exactly one Body element containing more than one GetEOCoverageSet element;

- exactly one Body element containing no GetEOCoverageSet element;

- more than one Body element;

- without a Body element;

Pass test if appropriate valid results or exceptions, resp., are delivered.

#### A.3.7. eowcs_soap/getEOCoverageSet Response Structure

Test id: /conf/eowcs_soap/getEOCoverageSet-response-structure

Test Purpose: Requirement 145 /req/eowcs_soap/getEOCoverageSet-response-structure

Test method:

Send a valid soap GetEOCoverageSet request to sever under test. Check response whether the condition is fulfilled.

#### A.3.8. eowcs_soap/getEOCoverageSet-wsdl

Test id: /conf/eowcs_soap/getEOCoverageSet-wsdl

Test Purpose: Requirement 146 /req/eowcs_soap/getEOCoverageSet-wsdl

Test method:

For the service under test, retrieve the WSDL description and issue requests which make use of this service definition. Check that the service can be addressed and that queries can be retrieved properly.

— end of ATS —

## Annex B: (informative) Use Case examples

In the following two Use Cases are presented to illustrate possible application scenarios of EO-WCS in the domain of earth observation and remote sensing.

### B.1. Use Case 1

Provider offers, through an EO-WCS service, one Dataset Series containing Sea Surface Temperature (SST) and another Dataset Series containing Ocean Color (OC).

User wants to compare the timely development and distribution of some algal bloom in relationship to ocean currents indicated by the changes in SST. User, therefore, plans to analyze a timeseries of OC and SST imageries over a certain period of time (TOI) in the Area of Interest (AOI).

User first addresses the EO-WCS service by issuing a GetCapabilities request.The resulting response contains information about available `DatasetSeriesId`s, their spatial extent (as `WGS84BoundingBox`), as well as their temporal validity (as `beginPosition` and `endPosition`).

Based on this information, User can issue a DescribeEOCoverageSet request, using the received `DatasetSerieId` (as `eoId`) to obtain detail information on the content of the two offered DatasetSeries of interest. Since User is only interested in a limited period of time and a certain area, the DescribeEOCoverageSet request contains parameters for spatial and temporal subsetting, for example:

    subset=lat(32,47)&
    subset=long(11,33)&
    subset=phenomenonTime("2006-08-01","2006-08-22T19:22:00Z")

User will receive a response containing the `CoverageId`s of the datasets available within this spatio-temporal bounding box provided; notably, this set will be empty if no item is contained within the area and time queried.

User subsequently decides about which of the coverages identified are of interest and issues a GetCoverage request for each `CoverageId` received in the DescribeEOCoverageSet response. Again, User can select an AOI (via the subset parameter); additionally, specific bands (via range subsetting), output coverage format, output CRS, interpolation method, etc. can be selected depending on the WCS extensions implemented by the server; the Capabilities document contains pertinent information. Following download via GetCoverage, the SST and OC coverages can be analyzed and processed on User’s local workstation.

### B.2. Use Case 2

Provider offers, during harvesting seasons (e.g., March through August), three 2-monthly Stitched Mosaics for a certain area. Whenever new images are available in this area they are included in the respective (time-slot) Stitched Mosaic, possibly replacing older datasets or parts thereof. The providers applies a "least cloud cover/newest on top" approach to feed into the respective mosaics. At the end of each 2-month period the next mosaic is initiated. Stitched Mosaics enable Provider to offer the full metadata set for each dataset participating in a mosaic for any time instance, down to pixel-level accuracy.

User wants to assess crop yield for an AOI contained within the providers Stitched Mosaics. For doing so, User needs data about the same AOI for at least 2 points in time. Further, User requires the full metadata recorded (including possible lineage data) together with the actual imagery.

User addresses the EO-WCS by issuing a GetCapabilities request.The response contains the `coverageId`s for all Stitched Mosaics available.

Further information - i.e., metadata - can be obtained through a DescribeCoverage request on the `coverageId`s received. This yields bounding box, footprint, bands, as well as timestamp information (e.g., oldest and youngest image) of the datasets participating in the Stitched Mosaic. Alternatively, if User needs details about those datasets comprising a particular Stitched Mosaic, a DescribeEOCoverageSet request using the `CoverageId` as `eoId` can be issued. This results in detailed information (time, footprint, bands, etc.) about each dataset participating in the object queried.

For accessing the image data, User issues a GetCoverage request providing the identifier of the object to be retrieved. In addition to the mandatory request parameters, further optional parameters allow specifying output format, geographic subset, and further details; availability of this functionality depends on the extensions the EO-WCS implements, as indicated in its Capabilities document. The coverages retrieved finally can be analyzed and processed further in User’s local workstation environment.

## Annex C: Revision History

Date | Release | Author | Paragraph modified | Description
--- | --- | --- | --- | ---
2010-10-27 | 0.1.0 | Peter Baumann, Stephan Meissl | All | Created
2011-01-19 | 0.2.0 | Peter Baumann, Stephan Meissl | All | Various updates
2011-01-19 | 0.3.0 | Jinsongdi Yu | Annex A | Added ATS
2011-06-10 | 0.4.0 | Peter Baumann, Stephan Meissl | All | Incorporated OAB comments
2013-06-19 | 0.5.2 | Peter Baumann, Stephan Meissl | All | Thorough review and adjustments to WCS and GMLCOV corrigenda
2014-03-05 | 1.0 | Peter Baumann, Stephan Meissl, Jinsongdi Yu | Clause 9.2.2, Footer | Corrected example and copyright year in
2016-05-10 | 1.0 | Stephan Meissl | None | Made an Asciidoc copy and published it on GitHub (https://github.com/EOX-A/eo-wcs, https://eox-a.github.io/eo-wcs)
TBD | TBD | Stephan Meissl | TBD | Proposal from ESA project EVO-ODAS