From cc05aac18614b9c91f7e72b21d0d633dba243e30 Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Wed, 22 Jul 2020 00:27:47 -0400 Subject: [PATCH] README.md; standard/: Changes to reflect implications of OGC API - Common - Part 2: Geospatial data - As discussed in https://github.com/opengeospatial/ogc_api_coverages/issues/64 - Other clarifications - Also edited for completeness (e.g. Communication, Contributions) --- CONTRIBUTORS.md | 2 +- README.md | 362 +++++++++++++++--- standard/OAPI_Coverages.adoc | 4 +- standard/clause_10_HTML.adoc | 51 +-- standard/clause_11_JSON.adoc | 65 ++-- standard/clause_6_overview.adoc | 44 ++- ...re.adoc => clause_7_geodata_coverage.adoc} | 182 +++------ standard/clause_8_media_types.adoc | 56 +-- ...set.adoc => clause_9_coverage_subset.adoc} | 13 +- ...o_example.json => collection_example.json} | 0 .../examples/JSON/conformance_example.json | 16 +- .../JSON/coverage_description_example.json | 6 - ...all_example.json => coverage_example.json} | 0 .../JSON/coverage_offering_example.json | 6 - .../examples/JSON/landingPage_example.json | 3 +- standard/openapi/schemas/coverage_all.json | 23 -- standard/openapi/schemas/coverage_all.yaml | 27 -- standard/recomendations/core/REC_geojson.adoc | 6 - .../PER_additional-status-codes.adoc | 4 +- .../geodata-coverage/REC_cisjson.adoc | 6 + .../geodata-coverage/REC_cisrdf.adoc | 6 + .../geodata-coverage/REC_covjson.adoc | 6 + .../geodata-coverage/REC_geotiff.adoc | 6 + .../geodata-coverage}/REC_html.adoc | 4 +- .../geodata-coverage/REC_netcdf.adoc | 6 + .../geodata-coverage/REC_png.adoc | 6 + .../geodata-coverage}/REC_string_i18n.adoc | 4 +- .../{json => cisjson}/REQ_api-common.adoc | 6 +- .../cisjson/REQ_cisjson-conformance.adoc | 7 + .../cisjson/REQ_coverage-success.adoc | 8 + .../cisjson/REQ_domainset-success.adoc | 8 + .../cisjson/REQ_metadata-success.adoc | 8 + .../cisjson/REQ_rangeset-success.adoc | 8 + .../cisjson/REQ_rangetype-success.adoc | 8 + .../{core => common-core}/REQ_api-common.adoc | 2 +- .../REQ_http-response.adoc | 0 .../common-core/REQ_paged-response.adoc | 16 + .../core/REQ_core_conformance.adoc | 9 - .../requirements/core/REQ_cov-all-op.adoc | 8 - .../core/REQ_cov-all-success.adoc | 9 - .../core/REQ_cov-bbox-parameter.adoc | 8 - .../core/REQ_cov-datetime-parameter.adoc | 8 - .../requirements/core/REQ_cov-desc-op.adoc | 8 - .../core/REQ_cov-desc-success.adoc | 10 - standard/requirements/core/REQ_cov-ds-op.adoc | 8 - .../requirements/core/REQ_cov-ds-success.adoc | 9 - standard/requirements/core/REQ_cov-md-op.adoc | 8 - .../requirements/core/REQ_cov-md-success.adoc | 9 - .../core/REQ_cov-media-type-default.adoc | 9 - .../core/REQ_cov-offer-success.adoc | 9 - standard/requirements/core/REQ_cov-rs-op.adoc | 8 - .../requirements/core/REQ_cov-rs-success.adoc | 9 - standard/requirements/core/REQ_cov-rt-op.adoc | 8 - .../requirements/core/REQ_cov-rt-success.adoc | 9 - .../REQ_cov-bbox-definition.adoc | 8 + .../coverage-bbox/REQ_cov-bbox-success.adoc | 6 + .../REQ_cov-bbox_conformance.adoc | 8 + .../REQ_coverage-datetime-parameter.adoc | 8 + .../REQ_cov-subset-definition.adoc | 8 +- .../REQ_cov-subset-success.adoc | 6 +- .../REQ_cov-subset_conformance.adoc | 8 + .../REQ_coverage-op.adoc} | 4 +- .../REQ_coverage-success.adoc | 11 + .../geodata-coverage/REQ_domainset-op.adoc | 8 + .../REQ_domainset-success.adoc | 9 + .../REQ_geodata_coverage-conformance.adoc | 9 + .../geodata-coverage/REQ_metadata-op.adoc | 9 + .../REQ_metadata-success.adoc | 9 + .../REQ_paged-response.adoc} | 7 +- .../geodata-coverage/REQ_rangeset-op.adoc | 9 + .../REQ_rangeset-success.adoc | 9 + .../geodata-coverage/REQ_rangetype-op.adoc | 8 + .../REQ_rangetype-success.adoc | 9 + .../REQ_bbox-parameter.adoc | 8 + .../REQ_datetime-parameter.adoc | 8 + .../REQ_limit-parameter.adoc} | 6 +- .../html/REQ_cov-all-success.adoc | 9 - .../html/REQ_cov-desc-success.adoc | 10 - .../requirements/html/REQ_cov-ds-success.adoc | 9 - .../requirements/html/REQ_cov-md-success.adoc | 9 - .../html/REQ_cov-offer-success.adoc | 9 - .../requirements/html/REQ_cov-rs-success.adoc | 9 - .../requirements/html/REQ_cov-rt-success.adoc | 9 - .../html/REQ_coverage-success.adoc | 9 + .../html/REQ_domainset-success.adoc | 9 + .../html/REQ_metadata-success.adoc | 9 + .../html/REQ_rangeset-success.adoc | 9 + .../html/REQ_rangetype-success.adoc | 9 + .../json/REQ_cov-all-success.adoc | 8 - .../json/REQ_cov-desc-success.adoc | 9 - .../requirements/json/REQ_cov-ds-success.adoc | 8 - .../requirements/json/REQ_cov-md-success.adoc | 8 - .../json/REQ_cov-offer-success.adoc | 8 - .../requirements/json/REQ_cov-rs-success.adoc | 8 - .../requirements/json/REQ_cov-rt-success.adoc | 8 - .../json/REQ_json-conformance.adoc | 7 - .../requirements_class_cisjson.adoc | 12 + ...oc => requirements_class_common_core.adoc} | 4 +- ... => requirements_class_coverage_bbox.adoc} | 4 +- .../requirements_class_coverage_subset.adoc | 9 + .../requirements_class_geodata_coverage.adoc | 9 + ...quirements_class_geodata_filteredList.adoc | 9 + .../requirements/requirements_class_json.adoc | 13 - 103 files changed, 853 insertions(+), 686 deletions(-) rename standard/{clause_7_core.adoc => clause_7_geodata_coverage.adoc} (78%) rename standard/{clause_9_subset.adoc => clause_9_coverage_subset.adoc} (57%) rename standard/examples/JSON/{collection_info_example.json => collection_example.json} (100%) delete mode 100644 standard/examples/JSON/coverage_description_example.json rename standard/examples/JSON/{coverage_all_example.json => coverage_example.json} (100%) delete mode 100644 standard/examples/JSON/coverage_offering_example.json delete mode 100644 standard/openapi/schemas/coverage_all.json delete mode 100644 standard/openapi/schemas/coverage_all.yaml delete mode 100644 standard/recomendations/core/REC_geojson.adoc rename standard/{recomendations/core => recommendations/geodata-coverage}/PER_additional-status-codes.adoc (59%) create mode 100644 standard/recommendations/geodata-coverage/REC_cisjson.adoc create mode 100644 standard/recommendations/geodata-coverage/REC_cisrdf.adoc create mode 100644 standard/recommendations/geodata-coverage/REC_covjson.adoc create mode 100644 standard/recommendations/geodata-coverage/REC_geotiff.adoc rename standard/{recomendations/core => recommendations/geodata-coverage}/REC_html.adoc (68%) create mode 100644 standard/recommendations/geodata-coverage/REC_netcdf.adoc create mode 100644 standard/recommendations/geodata-coverage/REC_png.adoc rename standard/{recomendations/core => recommendations/geodata-coverage}/REC_string_i18n.adoc (66%) rename standard/requirements/{json => cisjson}/REQ_api-common.adoc (56%) create mode 100644 standard/requirements/cisjson/REQ_cisjson-conformance.adoc create mode 100644 standard/requirements/cisjson/REQ_coverage-success.adoc create mode 100644 standard/requirements/cisjson/REQ_domainset-success.adoc create mode 100644 standard/requirements/cisjson/REQ_metadata-success.adoc create mode 100644 standard/requirements/cisjson/REQ_rangeset-success.adoc create mode 100644 standard/requirements/cisjson/REQ_rangetype-success.adoc rename standard/requirements/{core => common-core}/REQ_api-common.adoc (83%) rename standard/requirements/{core => common-core}/REQ_http-response.adoc (100%) create mode 100644 standard/requirements/common-core/REQ_paged-response.adoc delete mode 100644 standard/requirements/core/REQ_core_conformance.adoc delete mode 100644 standard/requirements/core/REQ_cov-all-op.adoc delete mode 100644 standard/requirements/core/REQ_cov-all-success.adoc delete mode 100644 standard/requirements/core/REQ_cov-bbox-parameter.adoc delete mode 100644 standard/requirements/core/REQ_cov-datetime-parameter.adoc delete mode 100644 standard/requirements/core/REQ_cov-desc-op.adoc delete mode 100644 standard/requirements/core/REQ_cov-desc-success.adoc delete mode 100644 standard/requirements/core/REQ_cov-ds-op.adoc delete mode 100644 standard/requirements/core/REQ_cov-ds-success.adoc delete mode 100644 standard/requirements/core/REQ_cov-md-op.adoc delete mode 100644 standard/requirements/core/REQ_cov-md-success.adoc delete mode 100644 standard/requirements/core/REQ_cov-media-type-default.adoc delete mode 100644 standard/requirements/core/REQ_cov-offer-success.adoc delete mode 100644 standard/requirements/core/REQ_cov-rs-op.adoc delete mode 100644 standard/requirements/core/REQ_cov-rs-success.adoc delete mode 100644 standard/requirements/core/REQ_cov-rt-op.adoc delete mode 100644 standard/requirements/core/REQ_cov-rt-success.adoc create mode 100644 standard/requirements/coverage-bbox/REQ_cov-bbox-definition.adoc create mode 100644 standard/requirements/coverage-bbox/REQ_cov-bbox-success.adoc create mode 100644 standard/requirements/coverage-bbox/REQ_cov-bbox_conformance.adoc create mode 100644 standard/requirements/coverage-dateTime/REQ_coverage-datetime-parameter.adoc rename standard/requirements/{subset => coverage-subset}/REQ_cov-subset-definition.adoc (89%) rename standard/requirements/{subset => coverage-subset}/REQ_cov-subset-success.adoc (82%) create mode 100644 standard/requirements/coverage-subset/REQ_cov-subset_conformance.adoc rename standard/requirements/{core/REQ_cov-offer-op.adoc => geodata-coverage/REQ_coverage-op.adoc} (76%) create mode 100644 standard/requirements/geodata-coverage/REQ_coverage-success.adoc create mode 100644 standard/requirements/geodata-coverage/REQ_domainset-op.adoc create mode 100644 standard/requirements/geodata-coverage/REQ_domainset-success.adoc create mode 100644 standard/requirements/geodata-coverage/REQ_geodata_coverage-conformance.adoc create mode 100644 standard/requirements/geodata-coverage/REQ_metadata-op.adoc create mode 100644 standard/requirements/geodata-coverage/REQ_metadata-success.adoc rename standard/requirements/{core/REQ_cov-paged-response.adoc => geodata-coverage/REQ_paged-response.adoc} (53%) create mode 100644 standard/requirements/geodata-coverage/REQ_rangeset-op.adoc create mode 100644 standard/requirements/geodata-coverage/REQ_rangeset-success.adoc create mode 100644 standard/requirements/geodata-coverage/REQ_rangetype-op.adoc create mode 100644 standard/requirements/geodata-coverage/REQ_rangetype-success.adoc create mode 100644 standard/requirements/geodata-filteredList/REQ_bbox-parameter.adoc create mode 100644 standard/requirements/geodata-filteredList/REQ_datetime-parameter.adoc rename standard/requirements/{core/REQ_cov-limit-parameter.adoc => geodata-filteredList/REQ_limit-parameter.adoc} (71%) delete mode 100644 standard/requirements/html/REQ_cov-all-success.adoc delete mode 100644 standard/requirements/html/REQ_cov-desc-success.adoc delete mode 100644 standard/requirements/html/REQ_cov-ds-success.adoc delete mode 100644 standard/requirements/html/REQ_cov-md-success.adoc delete mode 100644 standard/requirements/html/REQ_cov-offer-success.adoc delete mode 100644 standard/requirements/html/REQ_cov-rs-success.adoc delete mode 100644 standard/requirements/html/REQ_cov-rt-success.adoc create mode 100644 standard/requirements/html/REQ_coverage-success.adoc create mode 100644 standard/requirements/html/REQ_domainset-success.adoc create mode 100644 standard/requirements/html/REQ_metadata-success.adoc create mode 100644 standard/requirements/html/REQ_rangeset-success.adoc create mode 100644 standard/requirements/html/REQ_rangetype-success.adoc delete mode 100644 standard/requirements/json/REQ_cov-all-success.adoc delete mode 100644 standard/requirements/json/REQ_cov-desc-success.adoc delete mode 100644 standard/requirements/json/REQ_cov-ds-success.adoc delete mode 100644 standard/requirements/json/REQ_cov-md-success.adoc delete mode 100644 standard/requirements/json/REQ_cov-offer-success.adoc delete mode 100644 standard/requirements/json/REQ_cov-rs-success.adoc delete mode 100644 standard/requirements/json/REQ_cov-rt-success.adoc delete mode 100644 standard/requirements/json/REQ_json-conformance.adoc create mode 100644 standard/requirements/requirements_class_cisjson.adoc rename standard/requirements/{requirements_class_core.adoc => requirements_class_common_core.adoc} (56%) rename standard/requirements/{requirements_class_subset.adoc => requirements_class_coverage_bbox.adoc} (70%) create mode 100644 standard/requirements/requirements_class_coverage_subset.adoc create mode 100644 standard/requirements/requirements_class_geodata_coverage.adoc create mode 100644 standard/requirements/requirements_class_geodata_filteredList.adoc delete mode 100644 standard/requirements/requirements_class_json.adoc diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 76db012..ace430e 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1,3 +1,3 @@ * Chuck Heazel [@cmheazel](https://github.com/cmheazel) * Stephan Meissl [@Schpidi](https://github.com/Schpidi) - +* Jerome Jacovella-St-Louis [@jerstlouis](https://github.com/jerstlouis) diff --git a/README.md b/README.md index e5c94ff..2da8709 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@ # OGC API - Coverages This GitHub repository contains [OGC](http://opengeospatial.org)'s -standard for querying geospatial information on the web, "OGC API - Coverages". +standard for accessing geospatial data resources on the web as a coverage, "OGC API - Coverages". OGC API standards define modular API building blocks to spatially enable Web APIs in a consistent way. [OpenAPI](http://openapis.org) is used to define the -reusable API building blocks with responses in JSON and HTML. +reusable API building blocks with responses available in different representations, +such as JSON and HTML, as well as more domain specific formats (e.g. CIS RDF, netCDF, GeoTIFF). The OGC API family of standards is organized by resource type. OGC API - Coverages specifies the fundamental API building blocks for interacting with @@ -24,65 +25,320 @@ a [nightly build](http://docs.opengeospatial.org/DRAFTS/19-087.html). ## Overview -This [OGC API - Coverages](https://github.com/opengeospatial/ogc_api_coverages) specification establishes how to access coverages as defined by the [Coverage Implementation Schema (CIS) 1.1](http://docs.opengeospatial.org/is/09-146r6/09-146r6.html) through [OpenAPI](https://www.openapis.org/). +This [OGC API - Coverages](https://github.com/opengeospatial/ogc_api_coverages) specification establishes how to access coverages as defined by the [Coverage Implementation Schema (CIS) 1.1](http://docs.opengeospatial.org/is/09-146r6/09-146r6.html) . +It integrates with the OGC API family of standards through [OGC API - Common](https://github.com/opengeospatial/oapi_common) by: +- being accessible from an API landing page for a particular dataset, +- enabling the API to be described and documented using [OpenAPI](https://www.openapis.org/), +- defining conformance classes specific to coverages, +- providing access to an OGC API *collection* of geospatial data (as defined in OGC API - Common - Part 2: Geospatial Data), as a coverage. -OGC API - Coverages provides access to collections of geospatial data as coverages. +### Common resources -``` -GET /collections -``` +#### Landing page (Common Part 1: Core) -Lists the collections of data or coverages on the server that can be queried, -and each describes basic information about the geospatial data collection, -like its id and description, as well as the spatial and temporal extents of all -the data contained. +Resource path: `{datasetAPI}/` -``` -GET /collections?bbox=160.6,-55.95,-170,-25.89 -``` +Relation type: `ogc:common:dataset` -Lists the collections intersecting with the New Zealand economic zone (any -time, any elevation, etc.). The CRS in which the `bbox` parameters are -expressed is WGS84, defined in OGC API - Common and likely in a future OGC -API - Catalog. +HTTP methods: `GET` -``` -GET /collections/{coverageid} -``` +Recommended encodings: HTML, JSON -Returns the description of a specific collection including links to available -sub-paths like /coverage, /tiles, or /map as defined in OGC API - Common. +A landing page for the dataset being distributed. +The landing page at minimum should feature links to: +- the description of the API, +- the declaration of conformance classes, +- the list of coverages available. -``` -GET /collections/{coverageid}/coverage -``` +#### Conformance declaration (Common Part 1: Core) -Returns a general description of the coverage represented by `coverageid` -containing the coverage's envelope (the full domainset might be huge and -thus is omitted here), rangetype, and service metadata like the coverage's -native format +Resource path: `{datasetAPI}/conformance` +Relation type: `conformance` + +HTTP methods: `GET` + +Recommended encodings: HTML, JSON + +The declaration of conformance classes supported by that API. + +#### API description / documentation (Common Part 1: Core) + +Resource path: `{datasetAPI}/api` NOTE: the path is not fixed, this resource may reside elsewhere + +Relation type: `service-desc`, `service-doc` + +HTTP methods: `GET` + +Recommended encodings: JSON (OpenAPI), HTML + +A description, and optionally documentation for the API. +To conform to the OpenAPI conformance class of OGC API - Common, an OpenAPI representation of the API description must be available. + +#### List of available collections (Common Part 2: Geospatial Data) + +Resource path: `{datasetAPI}/collections` + +Relation type: `data` + +HTTP methods: `GET` + +Recommended encodings: JSON, HTML + +Lists all collections of data available for this dataset API, some of which may support being accessed as a coverage. +A `collections` property is defined as a list of individual collection resources, +where each element describes basic information about that specific collection. +The content for each collection is also available individually at `{datasetAPI}/collections/{collectionId}`, and described in the next section. +Additionally, a `links` property can be included (e.g. linking back to the dataset landing page). + +##### Query parameters (optional conformance classes) + +**`BBOX`** + +A bounding box, expressed in WGS84 (westLong,southLat,eastLong,northLat) or WGS84h (westLong,southLat,minHeight,eastLong,northLat,maxHeight) CRS, +by which to filter out all collections whose spatial extent does not intersect with the bounding box. + +Example: `?bbox=160.6,-55.95,-170,-25.89` + +Lists the collections intersecting with the New Zealand economic zone (any time, any elevation, etc.). + +#### Collection description resource (Common Part 2: Geospatial Data) + +Resource path: `{datasetAPI}/collections/{collectionId}` + +Relation type: `ogc:common:collection` + +HTTP methods: `GET` + +Recommended encodings: JSON, HTML + +Each collection resource describes basic information about the geospatial data collection, including: +- an identifier (`id`), +- a human readable `title`, +- a more detailed `description`, +- an `extent`, which can include a spatial extent expressed in WGS84, as well as a temporal extent. For a coverage this represents its envelope, and may cover additional dimensions. +- a list of `crs` in which the data is available, +- an (optional) `storageCRS`, representing the native CRS of the data (as defined in OGC API - Common - Part 3: CRS), +- `links` to resources specific to the collection, such as for retrieving it as a coverage, as tiles or as a map. +See the description of coverage resources below for the relation types to use to link to those resources. + +TODO: Additional properties should be defined in OGC API - Common - Part 2: Geospatial Data: +- A way to determine the native representation (e.g. for link to the coverage data), either as a property of a link, or a property of a collection. +- The available resolution of the data + +### Coverage resources (Coverages: Part 1: Core) + +#### Coverage description resource + +Resource path: `{datasetAPI}/collections/{coverageId}` + +NOTE: `{collectionId}` is replaced here by `{coverageId}` as extensions specific to coverages are described + +Relation type: `ogc:common:collection` + +HTTP methods: `GET` + +Recommended encodings: JSON, HTML + +If a collection is accessible as a coverage, this resource inherits all the properties defined by Common: Part 2, +but the OGC API - Coverages Part 1: Core standard further extends it with the following properties: + +- a `RangeType` describing the data values semantics (their components and data type), +- a `DomainSet` describing the domain set (the detailed n-dimensional space covered by the data). + +In a JSON representation of this resource, both `RangeType` and `DomainSet` properties are encoded as [CIS JSON](https://docs.opengeospatial.org/is/09-146r6/09-146r6.html#46). + +Both of these properties are required for conforming to coverage access for that collection, +unless they are defined as separate resources and linked using the associated relation type within the `links` property. +A good reason to define them as separate resources would be if they are complex and consist of a sizable amount of data. + +In addition, as described above the `extent` property must be a full description of the coverage's envelope according to the CIS model, including any extra dimensions +which do not map to either the `spatial` or `temporal` properties described by Common - Part 2. + +See the [range type](#rangeTypeExample) and [domain set](#domainSetExample) resources below for examples encoding them as CIS JSON. + +#### The coverage (including all of its components) + +Resource path: `{datasetAPI}/collections/{coverageId}/coverage` + +NOTE: though this path should exist, a client should not rely on it as additional representations for this resource may reside elsewhere, e.g. /coverage.tiff or /coverage?f=tiff + +Relation type: `ogc:coverage:coverage` + +HTTP methods: `GET` + +Recommended encodings: CIS JSON, HTML, CIS RDF, CoverageJSON, netCDF, GeoTIFF, PNG + +NOTE: The media type `application/json` is reserved for [CIS JSON](https://docs.opengeospatial.org/is/09-146r6/09-146r6.html#46). +Alternative JSON encodings such as CoverageJSON must be differentiated by using an alternative media type. + +Returns the coverage, including all components as defined by the CIS model (domain set, range type, range set and metadata), to the extent that they are supported +by the selected representation. A specific representation is selected either via HTTP headers Accept-content, or separate link URLs with different media types. + +##### Query parameters (optional conformance classes) + +**`SUBSET`** + +Allows to retrieve only a subset of the coverage, with well-defined ranges for named axes. + +Example: `?subset=Lat(40,50)&subset=Long(10,20)` + +Retrieve the subset of the coverage between 40 and 50 degrees North, 10 and 20 degrees East, for a coverage whose domain set defines axes named `Lat` and `Long`. + +**`BBOX`** (OGC API - Common - Part 2: Geospatial Data) + +A bounding box, expressed in WGS84 (westLong,southLat,eastLong,northLat) or WGS84h (westLong,southLat,minHeight,eastLong,northLat,maxHeight) CRS, allowing to retrieve +only a subset of the coverage, with this Common bounding box sub-setting mechanism. + +Example: `?bbox=10,40,20,50` + +Retrieve the subset of the coverage between 40 and 50 degrees North, 10 and 20 degrees East, regardless of how the domain set is defined. + +#### Range set (optional) + +Resource path: `{datasetAPI}/collections/{coverageId}/coverage/rangeset` + +NOTE: this path is not fixed and not required + +Relation type: `ogc:coverage:rangeset` + +HTTP methods: `GET` + +Recommended encodings: CIS JSON, CIS RDF, CoverageJSON, PNG + +NOTE: The media type `application/json` is reserved for [CIS JSON](https://docs.opengeospatial.org/is/09-146r6/09-146r6.html#46). +Alternative JSON encodings such as CoverageJSON must be differentiated by using an alternative media type. + +If provided, returns only the range set of the coverage (i.e. the data values), for representations that support describing the values by themselves +without any accompanying description or extra information. + +TODO: How could one optionally describe the actual range of the values that one can possibly encounter within the coverage, assuming this is known and not the full extent of the data type? + +TODO: How could one map the full range of a type with a linear transformation to such an arbitrary range, given that the raw values themselves could not directly map to a defined unit? +(e.g. as is done in the [GeoPackage tile gridded coverage extension](http://docs.opengeospatial.org/is/17-066r1/17-066r1.html); use cases: populating a GeoPackage from a Coverages API, or serving coverage data from a GeoPackage) + +Example CIS JSON rangeSet encoding: + +```json +{ + "type" : "RangeSetType", + "dataBlock" : { + "type" : "VDataBlockType", + "values" : [1,2,3,4,5,6,7,8,9] + } +} ``` -GET /collections/{coverageid}/coverage/domainset -GET /collections/{coverageid}/coverage/rangetype -GET /collections/{coverageid}/coverage/metadata -GET /collections/{coverageid}/coverage/rangeset -GET /collections/{coverageid}/coverage/description -GET /collections/{coverageid}/coverage/all -``` -These are the coverage paths returning the respective component as described -by CIS. `/description` returns domainset, rangetype, and metadata (but not the -rangeset) whereas `/all` returns all four components. +#### Range type (optional as a separate resource) + +Resource path: `{datasetAPI}/collections/{coverageId}/coverage/rangetype` + +NOTE: this path is not fixed and may not exist + +Relation type: `ogc:coverage:rangetype` + +HTTP methods: `GET` +Recommended encodings: CIS JSON (required), CIS RDF + +NOTE: The media type `application/json` is reserved for [CIS JSON](https://docs.opengeospatial.org/is/09-146r6/09-146r6.html#46). +Alternative JSON encodings such as CoverageJSON must be differentiated by using an alternative media type. + +If provided, returns only the range type of the coverage, i.e. the data values semantics (their components and data type). +A CIS JSON encoding of this resource is required, but may be embedded within the Coverage description resource as the value of the `RangeType` property. +A reason to make it a separate resource is if the range type is very complex and consists of a sizable amount of data. + + +Example CIS JSON range type encoding: + +```json +{ + "type" : "DataRecordType", + "field" : [ + { + "type" : "QuantityType", + "definition" : "ogcType:unsignedInt", + "uom" : { + "type" : "UnitReference", + "code" : "10^0" + } + } + ] +} ``` -GET /collections/{coverageid}/coverage/rangeset?subset=Lat(40,50)&subset=Long(10,20) + +#### Domain set (optional as a separate resource) + +Resource path: `{datasetAPI}/collections/{coverageId}/coverage/domainset` + +NOTE: this path is not fixed and may not exist + +Relation type: `ogc:coverage:domainset` + +HTTP methods: `GET` + +Recommended encodings: CIS JSON (required), CIS RDF + +NOTE: The media type `application/json` is reserved for [CIS JSON](https://docs.opengeospatial.org/is/09-146r6/09-146r6.html#46). +Alternative JSON encodings such as CoverageJSON must be differentiated by using an alternative media type. + +If provided, returns only the domain set of the coverage (the detailed n-dimensional space covered by the data). +A CIS JSON encoding of this resource is required, but may be embedded within the Coverage description resource as the value of the `DomainSet` property. +A reason to make it a separate resource is if the domain set is very complex and consists of a sizable amount of data, +and optionally if the API supports subsetting the domain set itself. + + +Example CIS JSON domain set encoding: + +```json +{ + "type" : "DomainSetType", + "generalGrid" : { + "type": "GeneralGridCoverageType", + "srsName" : "http://www.opengis.net/def/crs/OGC/0/Index2D", + "axisLabels": [ "i", "j" ], + "axis": [ + { + "type": "IndexAxisType", + "axisLabel": "i", + "lowerBound": 0, + "upperBound": 2 + }, + { + "type": "IndexAxisType", + "axisLabel": "j", + "lowerBound": 0, + "upperBound": 2 + } + ] + } +} ``` -The `subset` parameter may be applied on various of the paths. The example -above returns a coverage cutout between (40,10) and (50,20), in the -coverage's Native Format. +#### Coverage metadata (optional) + +Resource path: `{datasetAPI}/collections/{coverageId}/coverage/metadata` + +NOTE: this path is not fixed and may not exist + +Relation type: `ogc:coverage:metadata` + +HTTP methods: `GET` + +If provided, returns the coverage metadata associated with the coverage. +Note that this is *not* general metadata associated with the data, but rather coverage metadata which forms part of the coverage as defined by the CIS standard, +and may be domain specific. + +##### Query parameters (optional conformance classes) + +**`SUBSET`** + +Allows to retrieve only a subset of the domain set, with well-defined ranges for named axes. + +Example: `?subset=Lat(40,50)&subset=Long(10,20)` + +Retrieve the domain set of the coverage between 40 and 50 degrees North, 10 and 20 degrees East, for a coverage whose domain set defines axes named `Lat` and `Long`. ## Using the standard @@ -99,12 +355,22 @@ Implementations of the draft standard are listed at the link below: ## Communication -TODO: links to mailing lists, issues, etc. +Join the [mailing list](https://lists.opengeospatial.org/mailman/listinfo/wcs.swg) or [![chat at https://gitter.im/opengeospatial/ogcapi-coverages](https://badges.gitter.im/opengeospatial/ogcapi-coverages.svg)](https://gitter.im/opengeospatial/ogcapi-coverages?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +Most of the work on the specification takes place in [GitHub issues](https://github.com/opengeospatial/ogc_api_coverages/issues), +so browse there to get a good idea of what is happening, as well as past decisions. ## Additional parts of OGC API - Coverages -TODO +* [Part 2: CRS](extensions/crs.adoc) +* [Part 3: Processing](extensions/processing.adoc) + +## Contributing + +The contributor understands that any contributions, if accepted by the OGC Membership, shall be incorporated into OGC API standards documents and that all copyright and intellectual property shall be vested to the OGC. -## [Contributing](CONTRIBUTING.md) +The Coverages API Standards Working Group (SWG) is the group at OGC responsible for the stewardship of the standard, but is working to do as much work in public as possible. -TODO +* [Coverages API Standards Working Group Charter](charter/OGC-Coverages-SWG-Charter.adoc) +* [Open issues](https://github.com/opengeospatial/ogc_api_coverages/issues) +* [Copy of License Language](https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/LICENSE) diff --git a/standard/OAPI_Coverages.adoc b/standard/OAPI_Coverages.adoc index 97c728c..5136007 100644 --- a/standard/OAPI_Coverages.adoc +++ b/standard/OAPI_Coverages.adoc @@ -94,11 +94,11 @@ include::clause_5_conventions.adoc[] include::clause_6_overview.adoc[] -include::clause_7_core.adoc[] +include::clause_7_geodata_coverage.adoc[] include::clause_8_media_types.adoc[] -include::clause_9_subset.adoc[] +include::clause_9_coverage_subset.adoc[] include::clause_10_HTML.adoc[] diff --git a/standard/clause_10_HTML.adoc b/standard/clause_10_HTML.adoc index 7f5ea2f..42411ea 100644 --- a/standard/clause_10_HTML.adoc +++ b/standard/clause_10_HTML.adoc @@ -6,7 +6,7 @@ The following requirements apply to an OGC API-Coverage implementation when the . The API advertises conformance to the HTML Conformance Class . The client negotiates an HTML format -The HTML Requirements Class restricts requirements defined in the `Core` Requirements Class by imposing encoding-specific requirements. At this time, these additional requirements only apply to the HTTP response payloads. The sections below identify the scope of each new requirement and the `Core` requirements which lay within each scope. +The HTML Requirements Class restricts requirements defined in the `GeoData-Coverage` Requirements Class by imposing encoding-specific requirements. At this time, these additional requirements only apply to the HTTP response payloads. The sections below identify the scope of each new requirement and the `GeoData-Coverage` requirements which lay within each scope. include::requirements/requirements_class_html.adoc[] @@ -14,11 +14,11 @@ include::requirements/requirements_class_html.adoc[] This section covers the requirements inherited from the API-Common standard. Its scope includes responses for the following operations: -* `{root}/`: Landing Page -* `{root}/api`: API Description -* `{root}/conformance`: Conformance Classes -* `{root}/collections`: Collections -* `{root}/collections/{coverageid}`: Collection Information +* `{datasetAPI}/`: Dataset API Landing Page +* `{datasetAPI}/api`: API Description +* `{datasetAPI}/conformance`: Conformance Classes +* `{datasetAPI}/collections`: Collections +* `{datasetAPI}/collections/{coverageid}`: Collection Information include::requirements/html/REQ_api-common.adoc[] @@ -26,53 +26,38 @@ It is also necessary to advertise conformance with this Requirements Class. include::requirements/html/REQ_html-conformance.adoc[] -=== Coverage Offering +=== Coverage -This section covers the <> response for the -`{root}/collections/{coverageid}/coverage` operation. +This section covers the <> response for the +`{datasetAPI}/collections/{coverageid}/coverage` operation. -include::requirements/html/REQ_cov-offer-success.adoc[] - -=== Coverage Description - -This section covers the <> response for the -`{root}/collections/{coverageid}/coverage/description` operation. - -include::requirements/html/REQ_cov-desc-success.adoc[] +include::requirements/html/REQ_coverage-success.adoc[] === Coverage Domain Set This section covers the <> response for the -`{root}/collections/{coverageid}/coverage/domainset` operation. +`{datasetAPI}/collections/{coverageid}/coverage/domainset` operation. -include::requirements/html/REQ_cov-ds-success.adoc[] +include::requirements/html/REQ_domainset-success.adoc[] === Coverage Range Type This section covers the <> response for the -`{root}/collections/{coverageid}/coverage/rangetype` operation. +`{datasetAPI}/collections/{coverageid}/coverage/rangetype` operation. -include::requirements/html/REQ_cov-rt-success.adoc[] +include::requirements/html/REQ_rangetype-success.adoc[] === Coverage Range Set This section covers the <> response for the -`{root}/collections/{coverageid}/coverage/rangeset` operation. +`{datasetAPI}/collections/{coverageid}/coverage/rangeset` operation. -include::requirements/html/REQ_cov-rs-success.adoc[] +include::requirements/html/REQ_rangeset-success.adoc[] === Coverage Metadata This section covers the <> response for the -`{root}/collections/{coverageid}/coverage/metadata` operation. - -include::requirements/html/REQ_cov-md-success.adoc[] - -=== Coverage All - -This section covers the <> response for the -`{root}/collections/{coverageid}/coverage/all` operation. - -include::requirements/html/REQ_cov-all-success.adoc[] +`{datasetAPI}/collections/{coverageid}/coverage/metadata` operation. +include::requirements/html/REQ_metadata-success.adoc[] diff --git a/standard/clause_11_JSON.adoc b/standard/clause_11_JSON.adoc index b67179a..b0954b3 100644 --- a/standard/clause_11_JSON.adoc +++ b/standard/clause_11_JSON.adoc @@ -1,78 +1,63 @@ -[[requirements-class-json-clause]] -== Requirements Class JSON +[[requirements-class-cisjson-clause]] +== Requirements Class CIS JSON The following requirements apply to an OGC API-Coverage implementation when the following conditions apply: -. The API advertises conformance to the JSON Conformance Class -. The client negotiates a JSON or GeoJSON format +. The API advertises conformance to the CIS JSON Conformance Class +. The client negotiates a JSON or CIS JSON format -The JSON Requirements Class restricts requirements defined in the `Core` Requirements Class by imposing encoding-specific requirements. At this time, these additional requirements only apply to the HTTP response payloads. The sections below identify the scope of each new requirement and the `Core` requirements which lay within each scope. +The CIS JSON Requirements Class restricts requirements defined in the `GeoData-Coverage` Requirements Class by imposing encoding-specific requirements. At this time, these additional requirements only apply to the HTTP response payloads. The sections below identify the scope of each new requirement and the `GeoData-Coverage` requirements which lay within each scope. -include::requirements/requirements_class_json.adoc[] +include::requirements/requirements_class_cisjson.adoc[] === Common This section covers the requirements inherited from the API-Common standard. Its scope includes responses for the following operations: -* `{root}/`: Landing Page -* `{root}/api`: API Description -* `{root}/conformance`: Conformance Classes -* `{root}/collections`: Collections -* `{root}/collections/{coverageid}`: Collection Information +* `{datasetAPI}/`: Dataset API Landing Page +* `{datasetAPI}/api`: API Description +* `{datasetAPI}/conformance`: Conformance Classes +* `{datasetAPI}/collections`: Collections +* `{datasetAPI}/collections/{coverageid}`: Collection Information -include::requirements/json/REQ_api-common.adoc[] +include::requirements/cisjson/REQ_api-common.adoc[] It is also necessary to advertise conformance with this Requirements Class. -include::requirements/json/REQ_json-conformance.adoc[] +include::requirements/cisjson/REQ_cisjson-conformance.adoc[] -=== Coverage Offering +=== Coverage -This section covers the <> response for the -`{root}/collections/{coverageid}/coverage` operation. +This section covers the <> response for the +`{datasetAPI}/collections/{coverageid}/coverage` operation. -include::requirements/json/REQ_cov-offer-success.adoc[] - -=== Coverage Description - -This section covers the <> response for the -`{root}/collections/{coverageid}/coverage/description` operation. - -include::requirements/json/REQ_cov-desc-success.adoc[] +include::requirements/cisjson/REQ_coverage-success.adoc[] === Coverage Domain Set This section covers the <> response for the -`{root}/collections/{coverageid}/coverage/domainset` operation. +`{datasetAPI}/collections/{coverageid}/coverage/domainset` operation. -include::requirements/json/REQ_cov-ds-success.adoc[] +include::requirements/cisjson/REQ_domainset-success.adoc[] === Coverage Range Type This section covers the <> response for the -`{root}/collections/{coverageid}/coverage/rangetype` operation. +`{datasetAPI}/collections/{coverageid}/coverage/rangetype` operation. -include::requirements/json/REQ_cov-rt-success.adoc[] +include::requirements/cisjson/REQ_rangetype-success.adoc[] === Coverage Range Set This section covers the <> response for the -`{root}/collections/{coverageid}/coverage/rangeset` operation. +`{datasetAPI}/collections/{coverageid}/coverage/rangeset` operation. -include::requirements/json/REQ_cov-rs-success.adoc[] +include::requirements/cisjson/REQ_rangeset-success.adoc[] === Coverage Metadata This section covers the <> response for the -`{root}/collections/{coverageid}/coverage/metadata` operation. - -include::requirements/json/REQ_cov-md-success.adoc[] - -=== Coverage All - -This section covers the <> response for the -`{root}/collections/{coverageid}/coverage/all` operation. - -include::requirements/json/REQ_cov-all-success.adoc[] +`{datasetAPI}/collections/{coverageid}/coverage/metadata` operation. +include::requirements/cisjson/REQ_metadata-success.adoc[] diff --git a/standard/clause_6_overview.adoc b/standard/clause_6_overview.adoc index 19c9b5c..b157447 100644 --- a/standard/clause_6_overview.adoc +++ b/standard/clause_6_overview.adoc @@ -6,12 +6,12 @@ The OGC API family of standards enable access to resources using the HTTP protocol and its' associated operations (GET, PUT, POST, etc.). OGC API-Common defines a set of features which are applicable to all OGC APIs. Other OGC standards extend API-Common with features specific to a resource type. This OGC API-Coverages standard defines an API with two goals: -. Provide access to `Coverages` conformant to the <>. +. Provide access to *_Coverages_* conformant to the <>. . Provide functionality comparable to that of the <>. Resources exposed through an OGC API may be accessed through a Universal Resource Identifier <> URIs are composed of three sections: -* Service Offering: The service endpoint (subsequently referred to as Base URI or {root}) +* Dataset distribution API: The endpoint corresponding to a dataset distribution, where the landing page resource as defined in OGC API - Common - Part 1: Core is available (subsequently referred to as Base URI or `{datasetAPI}`) * Access Paths: Unique paths to Resources * Query: Parameters to adjust the representation of a Resource or Resources like encoding format or subsetting @@ -25,27 +25,31 @@ Some resources are also accessible through links on previously accessed resource |=== ^|**Path Template** ^|**Relation** ^|**Resource** 3+^|**Common** -|<> |none |Landing page -|<> |`service-desc` + -or + -`service-doc` |API Description (optional) -|<> |`conformance` |Conformance Classes -|<> |`data` |Metadata describing the spatial collections (coverages) available from this API. -|<> | |Metadata describing the coverge which has the unique identifier `{coverageid}` +|<> |`ogc:common:dataset` |Landing page for this dataset distribution +|<> +(not a fixed path) |`service-desc` | API description (e.g. OpenAPI) +|<> +(not a fixed path) |`service-doc` | API documentation (optional, e.g. HTML) +|<> |`conformance` |Conformance Classes +|<> |`data` |The list off all collections available, some or all of which may be accessible using this Coverage API. Each of these collection objects take the same form as that of the collection resource object described immediately below. +|<> | `ogc:common:collection` |resource corresponding to the collection with the unique identifier `{coverageId}`, which may be accessible as a coverage. +The resource will describe key elements such as an `id`, `title`, `description`, available `crs` and `extent` (the coverage envelope) as well as +links to resources pertaining to this collection. For coverages, it will either embed or link to a CIS JSON encoding of both the range type and the domain set. +It is comparable to a WCS *_DescribeCoverage_* response, with the exception that the range type and domain set may have to be retrieved separately by following a link +to accommodate the case where they may be considerably large, and the domain set may support query parameters to subset it. 3+^|**Coverages** -|<> |`items` |A general description of the coverage identified by {coverageid} including the coverage's envelope. -|<> |none |returns the whole coverage description consisting of domainset, rangetype, and metadata (but not the rangeset) -|<> |none |returns the coverage's domain set definition -|<> |none |returns the coverage's range type information (i.e., a description of the data semantics) -|<> |none |returns the coverage's metadata (may be empty) -|<> |none |returns the coverage's range set, i.e., the actual values in the coverage's Native Format (see format encoding for ways to retrieve in specific formats) -|<> |none |returns all of the above namely the coverage's domainset, rangetype, metadata, and rangeset comparable to a GetCoverage response +|<> + +(not a fixed path) |`ogc:coverage:coverage` |returns the coverage including all of its components (domain set, range type, range set and metadata), to the extent that it is supported by the selected representation (see format encoding for ways to retrieve in specific formats). It is comparable to a WCS *_GetCoverage_* response. +|<> |`ogc:coverage:rangeset` |if supported by the service and by the selected representation, returns only the coverage's range set, i.e., the actual values in the selected representation without any accompanying description or extra information. +|<> |`ogc:coverage:rangetype` |if available separately from the collection resource, returns the coverage's range type information, i.e., a description of the data semantics (their components and data type). +|<> |`ogc:coverage:domainset` |if available separately from the collection resource, returns the coverage's domain set definition (the detailed n-dimensional space covered by the data). +|<> |`ogc:coverage:metadata` |if available, returns the associated coverage metadata as defined by the CIS model, which may be e.g. domain specific metadata. |=== Where: -* {root} = Base URI for the API server -* {coverageid} = an identifier for a specific coverage (collection) +* {datasetAPI} = URI of the landing page for the API distributing the dataset +* {coverageId} = an identifier for a specific coverage (collection) [[coverage-implementation-schema-overview]] === Coverage Implementation Schema @@ -84,9 +88,9 @@ The OGC API-Coverages standard is an extension of the OGC API-Common standard. T |<>| http://www.opengis.net/spec/ogcapi_common-1/1.0/req/core |<>| http://www.opengis.net/spec/ogcapi_common-1/1.0/req/core |<>| http://www.opengis.net/spec/ogcapi_common-1/1.0/req/core -|<>| http://www.opengis.net/spec/ogcapi_common-1/1.0/req/collections +|<>| http://www.opengis.net/spec/ogcapi_common-2/1.0/req/collections |<>| http://www.opengis.net/spec/ogcapi_common-1/1.0/req/oas30 -|<>| http://www.opengis.net/spec/ogcapi_common-1/1.0/req/geojson +|<>| http://www.opengis.net/spec/ogcapi_common-1/1.0/req/json |<>| http://www.opengis.net/spec/ogcapi_common-1/1.0/req/html |==== diff --git a/standard/clause_7_core.adoc b/standard/clause_7_geodata_coverage.adoc similarity index 78% rename from standard/clause_7_core.adoc rename to standard/clause_7_geodata_coverage.adoc index 97ddc77..ca1ab61 100644 --- a/standard/clause_7_core.adoc +++ b/standard/clause_7_geodata_coverage.adoc @@ -1,11 +1,11 @@ -== Requirements Class "Core" +== Requirements Class "GeoData-Coverage" -[[core-overview]] +[[geodata-coverage-overview]] === Overview -include::requirements/requirements_class_core.adoc[] +include::requirements/requirements_class_geodata_coverage.adoc[] -The `Core` Requirements Class defines the requirements for locating, understanding, and accessing coverage resources. The `Core` Requirements Class is presented in five sections: +The `GeoData-Coverage` Requirements Class defines the requirements for locating, understanding, and accessing a geospatial data resource as a coverage. The `GeoData-Coverage` Requirements Class is presented in five sections: . <>: a set of common capabilities . <>: operations for accessing collections of `Coverages` @@ -13,12 +13,12 @@ The `Core` Requirements Class defines the requirements for locating, understandi . <>: parameters for use in the API-Coverage operations. . <>: general principles for use with this standard. -[[core-dependencies-section]] +[[geodata-coverage-dependencies-section]] === Dependencies -The OGC API-Coverages standard is an extension of the OGC API-Common standard. Therefore, an implementation of API-Coverages must first satisfy the appropriate Requirements Classes from API-Common. +The OGC API-Coverages standard is an extension of the OGC API - Common - Part 1: Core and Part 2: Geospatial Data standard. Therefore, an implementation of API-Coverages must first satisfy the appropriate Requirements Classes from API-Common. -include::requirements/core/REQ_api-common.adoc[] +include::requirements/common-core/REQ_api-common.adoc[] [[api-platform-section]] === Platform @@ -40,9 +40,9 @@ The landing page provides links to start exploration of the resources offered by The `Landing Page` operation is defined in the `Core` conformance class of API-Common. No modifications are needed to support `Coverage` resources. The `Core` conformance class specifies only one way of performing this operation: -. Issue a `GET` request on the `{root}/` path +. Issue a `GET` request on the `{datasetAPI}/` path -Support for `GET` on the `{root}/` path is required by API-Common. +Support for `GET` on the `{datasetAPI}/` path is required by API-Common. ===== Response @@ -83,7 +83,7 @@ Every API is required to provide a definition document that describes the capabi This operation is defined in the `Core` conformance class of API-Common. No modifications are needed to support `Coverage` resources. The `Core` conformance class describes two ways of performing this operation: -. Issue a `GET` request on the `{root}/api` path +. Issue a `GET` request on the `{datasetAPI}/api` path . Follow the `service-desc` or `service-doc` link on the landing page Only the link is required by API-Common. @@ -111,7 +111,7 @@ To support "generic" clients that want to access multiple OGC API standards and This operation is defined in the `Core` conformance class of API-Common. No modifications are needed to support `Coverage` resources. The `Core` conformance class describes two ways of performing this operation: -. Issue a `GET` request on the `{root}/conformance` path +. Issue a `GET` request on the `{datasetAPI}/conformance` path . Follow the `conformance` link on the landing page Both techniques are required by API-Common. @@ -120,7 +120,7 @@ Both techniques are required by API-Common. A successful response to the Conformance operation is a list of URLs. Each URL identifies an OGC Conformance Class for which this API claims conformance. The schema for this resource is defined in API-Common and provided for reference in <>. -include::requirements/core/REQ_core_conformance.adoc[] +include::requirements/geodata-coverage/REQ_geodata_coverage-conformance.adoc[] [#conformance-schema,reftext='Conformance Response Schema'] .Conformance Response Schema @@ -166,10 +166,10 @@ The `Collections` operation returns a set of metadata which describes the collec This operation is defined in the `Collections` conformance class of API-Common. No modifications are needed to support `Coverage` resources. The `Collections` conformance class describes two ways of performing this operation: -. Issue a `GET` request on `{root}/collections` path +. Issue a `GET` request on `{datasetAPI}/collections` path . Follow the `data` link on the landing page -Support for both the `{root}/collections` path and the `data` link is required by API-Common. +Support for both the `{datasetAPI}/collections` path and the `data` link is required by API-Common. ===== Response @@ -210,7 +210,7 @@ Collection Information is the set of metadata which describes a single collectio This operation is defined in the `Collections` conformance class of API-Common. No modifications are required to support `Coverage` resources. However, on a coverages API the the collections are also coverages. So in this standard the term `coverageid` is used instead of `collectionid`. The two terms are equivalent. -. Issue a `GET` request on the `{root}/collections/{coverageid}` path +. Issue a `GET` request on the `{datasetAPI}/collections/{coverageid}` path The {coverageid} parameter is the unique identifier for a single coverage on the API. The list of valid values for {coverageid} is provided in the /collections response. @@ -230,7 +230,7 @@ include::openapi/schemas/common/collectionInfo.yaml[] The following JSON fragment is an example of a response to an OGC API-Coverages Collection Information operation. [#collection-info-example,reftext=`Collection Information Example`] -.Collection Information Example +.Collection description resource Example [source,json] ---- include::examples/JSON/collection_info_example.json[] @@ -252,86 +252,61 @@ A `Coverage` is a collection of measured values. The structure of that collectio * A `RangeSet` component containing the stored values (often referred to as “pixels”, “voxels”) of the coverage. * A `Metadata` component which represents an extensible slot for metadata. The intended use is to hold any kind of application-specific metadata structures. -Each component is directly accessible through the API using standard paths. In addition, collections of elements can be accessed through the following paths: +The coverage containing all of those components is accessible at -* `/description`: Returns `DomainSet`, `RangeType`, and `Metadata` -* `/all`: Returns `DomainSet`, `RangeType`, `RangeSet`, and `Metadata` +* `/coverage`: Returns `DomainSet`, `RangeType`, `RangeSet`, and `Metadata` + +The `DomainSet` and `RangeType` are either defined as properties of the `/collections/{coverageid}` resource, or linked using specific relation types to their own resource. + +The `RangeSet` may be available as its own resource as well, if supported by the selected representation (format). + +If `Metadata` is available, it will also be be available as its own resource. The paths discussed in this section are all branches off of the `/collections/{coverageid}` root. [[coverage-clause]] -==== Coverage Offering +==== Coverage -The `Coverage Offering` operation returns a general coverage offering description consisting of envelope, rangetype, and service metadata such as the coverage's native format +The `Coverage` operation returns all the components of the coverage (rangeset, domain set, range type, meatadata). It is comparable to a WCS GetCoverage operation. ===== Operation -The `Coverage Offering` operation is defined by the following requirement. +The `Coverage` operation is defined by the following requirement. -include::requirements/core/REQ_cov-offer-op.adoc[] +include::requirements/geodata-coverage/REQ_coverage-op.adoc[] ===== Response -A successful response to the `Coverage Offering` operation shall meet the following requirement. +A successful response to the `Coverage` operation shall meet the following requirement. -include::requirements/core/REQ_cov-offer-success.adoc[] +include::requirements/geodata-coverage/REQ_coverage-success.adoc[] -[#coverage-schema,reftext='Coverage Offering Response Schema'] -.Coverage Offering Response Schema +[#coverage--schema,reftext='Coverage Response Schema'] +.Coverage Response Schema [source,yaml] ---- -include::openapi/schemas/coverage_offering.yaml[] +include::openapi/schemas/coverage.yaml[] ---- -The following JSON fragment is an example of a response to a Coverage Offering request. +The following JSON fragment is an example of a response to a Coverage request. -[#coverage-offering-example,reftext=`Coverage Offering Example`] -.Coverage Offering Example +[#coverage-all-example,reftext=`Coverage Example`] +.Coverage Example [source,json] ---- -include::examples/JSON/coverage_offering_example.json[] +include::examples/JSON/coverage_example.json[] ---- ===== Error situations The requirements for handling unsuccessful requests are provided in <>. General guidance on HTTP status codes and how they should be handled is provided in <>. -[[coverage-description-clause]] -==== Coverage Description - -The `Coverage Description` operation returns the whole coverage description consisting of domainset, rangetype, and metadata (but not the rangeset) - -===== Operation - -The `Coverage Description` operation is defined by the following requirement. - -include::requirements/core/REQ_cov-desc-op.adoc[] - -===== Response - -A successful response to the `Coverage Description` operation shall meet the following requirement. - -include::requirements/core/REQ_cov-desc-success.adoc[] - -[#coverage-description-schema,reftext='Coverage Description Response Schema'] -.Coverage Description Response Schema -[source,yaml] ----- -include::openapi/schemas/coverage_description.yaml[] ----- - -The following JSON fragment is an example of a response to a Coverage Description request. - -[#coverage-description-example,reftext=`Coverage Description Example`] -.Coverage Description Example -[source,json] ----- -include::examples/JSON/coverage_description_example.json[] ----- +[[parameters-section]] +=== Parameters +The API-Coverages standard inherits basic query and subsetting parameters from API-Common. This section provides a short description of each parameter and identifies the relevant requirements. -===== Error situations +All of the permissions and recommendations in API-Common regarding the these parameters also apply to API-Coverages implementations. -The requirements for handling unsuccessful requests are provided in <>. General guidance on HTTP status codes and how they should be handled is provided in <>. [[coverage-domainset-clause]] ==== Coverage Domain Set @@ -342,13 +317,13 @@ The `Coverage Domain Set` operation returns the coverage’s domain set definiti The `Coverage Domain Set` operation is defined by the following requirement. -include::requirements/core/REQ_cov-ds-op.adoc[] +include::requirements/geodata-coverage/REQ_domainset-op.adoc[] ===== Response A successful response to the `Coverage Domain Set` operation shall meet the following requirement. -include::requirements/core/REQ_cov-ds-success.adoc[] +include::requirements/geodata-coverage/REQ_domainset-success.adoc[] [#coverage-domainset-schema,reftext='Coverage Domain Set Response Schema'] .Coverage Domain Set Response Schema @@ -379,13 +354,13 @@ The `Coverage Range Type` operation returns the coverage’s range type informat The `Coverage Range Type` operation is defined by the following requirement. -include::requirements/core/REQ_cov-rt-op.adoc[] +include::requirements/geodata-coverage/REQ_rangetype-op.adoc[] ===== Response A successful response to the `Coverage Range Type` operation shall meet the following requirement. -include::requirements/core/REQ_cov-rt-success.adoc[] +include::requirements/geodata-coverage/REQ_rangetype-success.adoc[] [#coverage-rangetype-schema,reftext='Coverage Range Type Response Schema'] .Coverage Range Type Response Schema @@ -416,13 +391,13 @@ The `Coverage Range Set` operation returns the coverage’s range set, i.e., the The `Coverage Range Set` operation is defined by the following requirement. -include::requirements/core/REQ_cov-rs-op.adoc[] +include::requirements/geodata-coverage/REQ_rangeset-op.adoc[] ===== Response A successful response to the `Coverage Range Set` operation shall meet the following requirement. -include::requirements/core/REQ_cov-rs-success.adoc[] +include::requirements/geodata-coverage/REQ_rangeset-success.adoc[] [#coverage-rangeset-schema,reftext='Coverage Range Set Response Schema'] .Coverage Range Set Response Schema @@ -453,13 +428,13 @@ The `Coverage Metadata` operation returns the coverage’s metadata (may be empt The `Coverage Metadata` operation is defined by the following requirement. -include::requirements/core/REQ_cov-md-op.adoc[] +include::requirements/geodata-coverage/REQ_metadata-op.adoc[] ===== Response A successful response to the `Coverage Metadata` operation shall meet the following requirement. -include::requirements/core/REQ_cov-md-success.adoc[] +include::requirements/geodata-coverage/REQ_metadata-success.adoc[] [#coverage-metadata-schema,reftext='Coverage Metadata Response Schema'] .Coverage Metadata Response Schema @@ -481,66 +456,31 @@ include::examples/JSON/coverage_metadata_example.json[] The requirements for handling unsuccessful requests are provided in <>. General guidance on HTTP status codes and how they should be handled is provided in <>. -[[coverage-all-clause]] -==== Coverage All +*TODO*: Move `geodata-filteredList` conformance class into its own clause, which may end up only in OGC API - Common - Part 2: Geospatial data has Coverage doesn't add anything. -The `Coverage All` operation returns all of the above namely the coverage’s domainset, rangetype, meatadata, and rangeset comparable to a GetCoverage response +*TODO*: Create new clauses for conformance classes for `coverage-bbox` and `coverage-dateTime` (or potentially make this a single one), which are additional ways to sub-select the actual coverage data being returned that a service may opt to suport. -===== Operation - -The `Coverage All` operation is defined by the following requirement. - -include::requirements/core/REQ_cov-all-op.adoc[] - -===== Response - -A successful response to the `Coverage All` operation shall meet the following requirement. - -include::requirements/core/REQ_cov-all-success.adoc[] - -[#coverage--schema,reftext='Coverage Response Schema'] -.Coverage Response Schema -[source,yaml] ----- -include::openapi/schemas/coverage_all.yaml[] ----- - -The following JSON fragment is an example of a response to a Coverage All request. - -[#coverage-all-example,reftext=`Coverage All Example`] -.Coverage All Example -[source,json] ----- -include::examples/JSON/coverage_all_example.json[] ----- - -===== Error situations - -The requirements for handling unsuccessful requests are provided in <>. General guidance on HTTP status codes and how they should be handled is provided in <>. - -[[parameters-section]] -=== Parameters -The API-Coverages standard inherits basic query and subsetting parameters from API-Common. This section provides a short description of each parameter and identifies the relevant requirements. - -All of the permissions and recommendations in API-Common regarding the these parameters also apply to API-Coverages implementations. +*TODO*: Limit and Paged response may apply to both listing collections (`geodata-filteredList`) and the coverage itself. +Is it a requirement to support Limit for either of these? Is it separate conformance classes? +It would be difficult for static servers, and paging makes less sense for coverages than it does for many small features. ==== Parameter bbox The Bounding Box (bbox) parameter is defined in API-Common. The following requirement governs use of that parameter in a Coverage API. -include::requirements/core/REQ_cov-bbox-parameter.adoc[] +include::requirements/geodata-filteredList/REQ_bbox-parameter.adoc[] ==== Parameter datetime The Date-Time (datetime) parameter is defined in API-Common. The following requirement governs use of that parameter in a Coverage API. -include::requirements/core/REQ_cov-datetime-parameter.adoc[] +include::requirements/geodata-filteredList/REQ_datetime-parameter.adoc[] ==== Parameter Limit The Limit (limit) parameter is defined in API-Common. The following requirement governs use of that parameter in a Coverage API. -include::requirements/core/REQ_cov-limit-parameter.adoc[] +include::requirements/geodata-filteredList/REQ_limit-parameter.adoc[] ==== Combinations of Filter Parameters @@ -551,7 +491,7 @@ parameters for filtering on coverage properties is allowed. Note that the requir One consequence of the Limit parameter is that the full result set is not delivered to the user. However, users frequently want to know how big the result set it and how to access the rest of it. The following requirement add information to the response to address that need. -include::requirements/core/REQ_cov-paged-response.adoc[] +include::requirements/geodata-coverage/REQ_paged-response.adoc[] [[general-section]] === General @@ -560,7 +500,7 @@ include::requirements/core/REQ_cov-paged-response.adoc[] ==== HTTP Response Each HTTP request shall result in a response that meets the following requirement. -include::requirements/core/REQ_http-response.adoc[] +include::requirements/common-core/REQ_http-response.adoc[] The YAML schema for these results is provided in <>. @@ -596,6 +536,4 @@ More specific guidance is provided for each resource, where applicable. The API Description Document describes the HTTP status codes generated by that API. This should not be an exhaustive list of all possible status codes. It is not reasonable to expect an API designer to control the use of HTTP status codes which are not generated by their software. Therefore, it is recommended that the API Description Document limit itself to describing HTTP status codes relevant to the proper operation of the API application logic. Client implementations should be prepared to receive HTTP status codes in addition to those described in the API Description Document. -include::recomendations/core/PER_additional-status-codes.adoc[] - - +include::recomendations/geodata-coverage/PER_additional-status-codes.adoc[] diff --git a/standard/clause_8_media_types.adoc b/standard/clause_8_media_types.adoc index d8c767c..83901c5 100644 --- a/standard/clause_8_media_types.adoc +++ b/standard/clause_8_media_types.adoc @@ -3,7 +3,7 @@ This standard does not mandate any particular encoding or format. However, it does provide extensions for encodings which are commonly used in OGC APIs. These extensions include: -* <> +* <> * <> Neither of these encodings are mandatory. An implementor of this standard may choose to implement neither of them, selecting different encodings instead. @@ -13,54 +13,64 @@ In addition to the Requirements Classes, there are additional coverage formats w === HTML Encoding Support for HTML is recommended. HTML is the core language of the World Wide Web. An API that supports HTML will support browsing the spatial resources with a web browser and will also enable search engines to crawl and index those resources. -=== JSON Encoding -Support for JSON is recommended. JSON is a commonly used format that is simple to understand and well supported by tools and software libraries. +=== CIS JSON Encoding +Support for CIS JSON is recommended. JSON is a commonly used format that is simple to understand and well supported by tools and software libraries. JSON structures documented in this standard are defined using JSON Schema. These schema are available in JSON and YAML formats from http://schemas.opengis.net/tbd[http://schemas.opengis.net/tbd] -==== GeoJSON -"GeoJSON is a geospatial data interchange format based on JavaScript Object Notation (JSON). It defines several types of JSON objects and the manner in which they are combined to represent data about geographic features, their properties, and their spatial extents. GeoJSON uses a geographic coordinate reference system, World Geodetic System 1984, and units of decimal degrees." <> +When coverage resources (the coverage as a whole, range set, domain set, range type, meta data) advertise the `application/json` media type, it refers to the CIS JSON encoding. -GeoJSON provides a simple way of represening OGC Featues in JSON. Due to its simplicity, however, it is not suitable for all feature data. It is best used for content which has a spatial extent that can be used with the World Geodetic System 1984 Coordinate Reference System. - -==== CIS JSON This API-Coverages standard is built around the <>. CIS content often includes multi-dimensional coordinates and coordinate reference systems in sensor and analytic space. These "Engineering" coordinate reference systems cannot be represented using WGS-84. Therefore, an alternative to GeoJSON is needed. -The <> standard addresses that need by defining a JSON schema for the CIS standard. This format should be used for all JSON encodings from the `{root}/collections/{coverageid}/coverage/*` paths. +The <> standard addresses that need by defining a JSON schema for the CIS standard. This format should be used when the `application/json` media type is specified to encode all of the `{datasetAPI}/collections/{coverageid}/coverage*` resources. +A CIS JSON representation of the range type and domain set for the coverage is also required to be either embedded in properties or linked from the /collections/{collectionId} resource. + +Other encodings such as CoverageJSON must use an alternate media type. === Binary -A coverage does not need to be delivered in JSON or HTML in its entirety. Multipart encoding is also defined in OGC CIS. This allows the result to have a "canonical" header while components can be factored out and represented in some (more efficient) binary format. Any suitable container format (such as zip, miltipart/mime, SAFE, etc.) can "bundle" these components into one coverage file ready for shipping. +A coverage can also be distributed in binary form. +A number of formats are common used: -Commonly used formats for binary encoding are: +* CIS RDF +* NetCDF * GeoTIFF +* PNG * JPEG * JPEG-2000 -* NetCDF + +OGC CIS also defines multipart encoding of the different components of a coverage. +This allows the result to have a "canonical" header while components can be factored out and represented in some (more efficient) binary format. +Any suitable container format (such as zip, multipart/mime, SAFE, etc.) can "bundle" these components into one coverage file ready for shipping. + +With OGC API - Coverages, given that the description of the coverage is easily available at the /collections/{collectionId} resource, with the +range type and domain set either embedded or linked from that resource, an implementation may prefer to keep single-part binary formats encoding +all components to the best it can, as they might be more directly interoperable. === Media Types -A description of the MIME-types is mandatory for any OGC standard which involves data encodings. The list of suitable MIME-types for the API-Coverages standard in provided in <>. +A description of the media types is mandatory for any OGC standard which involves data encodings. The list of suitable media types for the API-Coverages standard in provided in <>. -Coverages can be encoded in any suitable data format, including formats as GML, JSON, GeoTIFF, and NetCDF. Further, coverages can be represented by a single document (stream or file) or by a hierarchically organized set of documents, each of which can be encoded individually – for example, the domain set, range type, and metadata may be encoded in easily parseable GML, JSON, or RDF while the range set is encoded in some compact binary format like NetCDF or JPEG2000. Such partitioning allows for coverages tiled in space, time, or mixed, thereby enabling mosaics, time-interleaved coverages, and efficiently subsettable datacubes. +Coverages can be encoded in any suitable data format, including formats as GML, CIS JSON, GeoTIFF, and NetCDF. Further, coverages can be represented by a single document (stream or file) or by a hierarchically organized set of documents, each of which can be encoded individually – for example, the domain set, range type, and metadata may be encoded in easily parseable GML, CIS JSON, or RDF while the range set is encoded in some compact binary format like NetCDF or JPEG2000. Such partitioning allows for coverages tiled in space, time, or mixed, thereby enabling mosaics, time-interleaved coverages, and efficiently subsettable datacubes. -[#api-coverage-mime-types,reftext='{table-caption} {counter:table-num}'] -.API-Coverages MIME Types +[#api-coverage-media-types,reftext='{table-caption} {counter:table-num}'] +.API-Coverages media Types [width="90%",cols="2,4"] |==== -^|*Encoding* ^|*MIME Type* +^|*Encoding* ^|*media type* |HTML |text/html -|JSON |application/json -|GeoJSON |application/geo+json +|JSON / CIS JSON|application/json +|CIS RDF| TODO: +|CoverageJSON| TODO: |GeoTIFF |image/tiff; application=geotiff +|PNG |image/png |JPEG |image/jpeg |JPEG-2000|image/jp2 |NetCDF |application/x-netcdf |==== -NOTE: Consider adding a table showing valid MIME-types for each CIS component. +NOTE: Consider adding a table showing valid media types for each CIS component. [[media-type-defaults]] === Default Encodings -The media type used to encode a response to a request shall be determined through the HTTP content negotiation protocol as specified in API-Common. However, content negotiation is not required by the HTTP standard. So default encodings must be established. - -include::requirements/core/REQ_cov-media-type-default.adoc[] +The media type used to encode a response to a request shall be determined through the HTTP content negotiation protocol as specified in API-Common. +If not using content negotiation, the encoding must follow the media type described in the link to the resource from the collection. diff --git a/standard/clause_9_subset.adoc b/standard/clause_9_coverage_subset.adoc similarity index 57% rename from standard/clause_9_subset.adoc rename to standard/clause_9_coverage_subset.adoc index 0773ce1..ae27930 100644 --- a/standard/clause_9_subset.adoc +++ b/standard/clause_9_coverage_subset.adoc @@ -1,22 +1,17 @@ -== Requirements Class Subset - -The `core` Requirements Class provides parameters for filtering the results of an API-Coverages request. +== Requirements Class Coverage Subset The Subset Requirements Class defines parameters for filtering n-dimensional Range Sets. Subsetting parameters may be mixed with other parameters, in no particular order, in the query part of a URL. -include::requirements/requirements_class_subset.adoc[] +include::requirements/requirements_class_coverage_subset.adoc[] The subset parameter is defined in the following Requirement: -include::requirements/subset/REQ_cov-subset-definition.adoc[] +include::requirements/coverage-subset/REQ_cov-subset-definition.adoc[] The results of using a subset parameter are defined by the following Requirement: -include::requirements/subset/REQ_cov-subset-success.adoc[] +include::requirements/coverage-subset/REQ_cov-subset-success.adoc[] === Subsetting Examples include::examples/examples_subsetting.adoc[] - - - diff --git a/standard/examples/JSON/collection_info_example.json b/standard/examples/JSON/collection_example.json similarity index 100% rename from standard/examples/JSON/collection_info_example.json rename to standard/examples/JSON/collection_example.json diff --git a/standard/examples/JSON/conformance_example.json b/standard/examples/JSON/conformance_example.json index 522b094..89f7a6e 100644 --- a/standard/examples/JSON/conformance_example.json +++ b/standard/examples/JSON/conformance_example.json @@ -1,10 +1,18 @@ { "conformsTo": [ "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/core", - "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/collections", - "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/oas3", + "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/json", "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/html", - "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/geojson", - "http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/core" + "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/oas3", + "http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/collections", + "http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/geodata-coverage", + "http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/cisjson", + "http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/cisrdf", + "http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/netcdf", + "http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/geotiff", + "http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/html", + "http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/geodata-subset", + "http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/geodata-bbox", + "http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/geodata-datetime" ] } diff --git a/standard/examples/JSON/coverage_description_example.json b/standard/examples/JSON/coverage_description_example.json deleted file mode 100644 index 1ee578b..0000000 --- a/standard/examples/JSON/coverage_description_example.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "TBD": [ - "filler1", - "filler2" - ] -} \ No newline at end of file diff --git a/standard/examples/JSON/coverage_all_example.json b/standard/examples/JSON/coverage_example.json similarity index 100% rename from standard/examples/JSON/coverage_all_example.json rename to standard/examples/JSON/coverage_example.json diff --git a/standard/examples/JSON/coverage_offering_example.json b/standard/examples/JSON/coverage_offering_example.json deleted file mode 100644 index 1ee578b..0000000 --- a/standard/examples/JSON/coverage_offering_example.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "TBD": [ - "filler1", - "filler2" - ] -} \ No newline at end of file diff --git a/standard/examples/JSON/landingPage_example.json b/standard/examples/JSON/landingPage_example.json index 85ae682..79a74f5 100644 --- a/standard/examples/JSON/landingPage_example.json +++ b/standard/examples/JSON/landingPage_example.json @@ -22,7 +22,8 @@ }, { "href": "http://data.example.org/collections", - "title": "Metadata about the resource collections" + "title": "The list of available collections", + "rel": "data" } ] } diff --git a/standard/openapi/schemas/coverage_all.json b/standard/openapi/schemas/coverage_all.json deleted file mode 100644 index 19e406a..0000000 --- a/standard/openapi/schemas/coverage_all.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Coverage object", - "description": "Component of OGC Coverage Implementation Schema 1.1. Last updated: 2016-may-18. Copyright (c) 2016 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/.", - "type": "object", - "required": [ - "type", - "domainSet", - "rangeSet", - "rangeType" - ], - "properties": { - "id": {"type": "string"}, - "type": { - "enum": ["CoverageByDomainAndRangeType"] - }, - "envelope": {"$ref": "coverage_envelope.json#/envelope"}, - "domainSet": {"$ref": "coverage_domainset.json#/domainSet"}, - "rangeSet": {"$ref": "coverage_rangeset.json#/rangeSet"}, - "rangeType": {"$ref": "coverage_rangetype.json#/rangeType"}, - "metadata": {"$ref": "coverage_metadata.json#/metadata"} - } -} \ No newline at end of file diff --git a/standard/openapi/schemas/coverage_all.yaml b/standard/openapi/schemas/coverage_all.yaml deleted file mode 100644 index 8a59f69..0000000 --- a/standard/openapi/schemas/coverage_all.yaml +++ /dev/null @@ -1,27 +0,0 @@ -$schema: http://json-schema.org/draft-04/schema# -title: Coverage object -description: 'Component of OGC Coverage Implementation Schema 1.1. Last updated: 2016-may-18. - Copyright (c) 2016 Open Geospatial Consortium, Inc. All Rights Reserved. To obtain - additional rights of use, visit http://www.opengeospatial.org/legal/.' -type: object -required: -- type -- domainSet -- rangeSet -- rangeType -properties: - id: - type: string - type: - enum: - - CoverageByDomainAndRangeType - envelope: - "$ref": coverage_envelope.json#/envelope - domainSet: - "$ref": coverage_domainset.json#/domainSet - rangeSet: - "$ref": coverage_rangeset.json#/rangeSet - rangeType: - "$ref": coverage_rangetype.json#/rangeType - metadata: - "$ref": coverage_metadata.json#/metadata diff --git a/standard/recomendations/core/REC_geojson.adoc b/standard/recomendations/core/REC_geojson.adoc deleted file mode 100644 index ee0ad9e..0000000 --- a/standard/recomendations/core/REC_geojson.adoc +++ /dev/null @@ -1,6 +0,0 @@ -[[rec_core_geojson]] -[width="90%",cols="2,6a"] -|=== -^|*Recommendation {counter:rec-id}* |*/rec/core/geojson* -^|A |If the resource can be represented for the intended use in GeoJSON, implementations SHOULD consider to support GeoJSON as an encoding. -|=== diff --git a/standard/recomendations/core/PER_additional-status-codes.adoc b/standard/recommendations/geodata-coverage/PER_additional-status-codes.adoc similarity index 59% rename from standard/recomendations/core/PER_additional-status-codes.adoc rename to standard/recommendations/geodata-coverage/PER_additional-status-codes.adoc index 2fc7f12..931da98 100644 --- a/standard/recomendations/core/PER_additional-status-codes.adoc +++ b/standard/recommendations/geodata-coverage/PER_additional-status-codes.adoc @@ -1,6 +1,6 @@ -[[per_core_additional-status-codes]] +[[per_geospatial_data_additional-status-codes]] [width="90%",cols="2,6a"] |=== -^|*Permission {counter:per-id}* |*/per/core/additional-status-codes* +^|*Permission {counter:per-id}* |*/per/geospatial-data/additional-status-codes* ^|A |Servers MAY support other capabilities of the HTTP protocol and, therefore, MAY return other status codes than those listed in <>, too. |=== diff --git a/standard/recommendations/geodata-coverage/REC_cisjson.adoc b/standard/recommendations/geodata-coverage/REC_cisjson.adoc new file mode 100644 index 0000000..0d00e93 --- /dev/null +++ b/standard/recommendations/geodata-coverage/REC_cisjson.adoc @@ -0,0 +1,6 @@ +[[rec_geodata_coverage_cisjson]] +[width="90%",cols="2,6a"] +|=== +^|*Recommendation {counter:rec-id}* |*/rec/geodata-coverage/cisjson* +^|A |If the resource can be represented for the intended use in CIS JSON, implementations SHOULD consider to support CIS JSON as an encoding. +|=== diff --git a/standard/recommendations/geodata-coverage/REC_cisrdf.adoc b/standard/recommendations/geodata-coverage/REC_cisrdf.adoc new file mode 100644 index 0000000..f7e7157 --- /dev/null +++ b/standard/recommendations/geodata-coverage/REC_cisrdf.adoc @@ -0,0 +1,6 @@ +[[rec_geodata_coverage_cisrdf]] +[width="90%",cols="2,6a"] +|=== +^|*Recommendation {counter:rec-id}* |*/rec/geodata-coverage/cisrdf* +^|A |If the resource can be represented for the intended use in CIS RDF, implementations SHOULD consider to support CIS RDF as an encoding. +|=== diff --git a/standard/recommendations/geodata-coverage/REC_covjson.adoc b/standard/recommendations/geodata-coverage/REC_covjson.adoc new file mode 100644 index 0000000..55fb3a2 --- /dev/null +++ b/standard/recommendations/geodata-coverage/REC_covjson.adoc @@ -0,0 +1,6 @@ +[[rec_geodata_coverage_covjson]] +[width="90%",cols="2,6a"] +|=== +^|*Recommendation {counter:rec-id}* |*/rec/geodata-coverage/covjson* +^|A |If the resource can be represented for the intended use in CoverageJSON, implementations SHOULD consider to support CoverageJSON as an encoding. +|=== diff --git a/standard/recommendations/geodata-coverage/REC_geotiff.adoc b/standard/recommendations/geodata-coverage/REC_geotiff.adoc new file mode 100644 index 0000000..c497011 --- /dev/null +++ b/standard/recommendations/geodata-coverage/REC_geotiff.adoc @@ -0,0 +1,6 @@ +[[rec_geodata_coverage_geotiff]] +[width="90%",cols="2,6a"] +|=== +^|*Recommendation {counter:rec-id}* |*/rec/geodata-coverage/geotiff* +^|A |If the resource can be represented for the intended use in GeoTIFF, implementations SHOULD consider to support GeoTIFF as an encoding. +|=== diff --git a/standard/recomendations/core/REC_html.adoc b/standard/recommendations/geodata-coverage/REC_html.adoc similarity index 68% rename from standard/recomendations/core/REC_html.adoc rename to standard/recommendations/geodata-coverage/REC_html.adoc index 3505b0b..d36d2cc 100644 --- a/standard/recomendations/core/REC_html.adoc +++ b/standard/recommendations/geodata-coverage/REC_html.adoc @@ -1,6 +1,6 @@ -[[rec_core_html]] +[[rec_geodata_coverage_html]] [width="90%",cols="2,6a"] |=== -^|*Recommendation {counter:rec-id}* |*/rec/core/html* +^|*Recommendation {counter:rec-id}* |*/rec/geodata-coverage/html* ^|A |To support browsing a API with a web browser and to enable search engines to crawl and index the dataset, implementations SHOULD consider to support an HTML encoding. |=== diff --git a/standard/recommendations/geodata-coverage/REC_netcdf.adoc b/standard/recommendations/geodata-coverage/REC_netcdf.adoc new file mode 100644 index 0000000..3931688 --- /dev/null +++ b/standard/recommendations/geodata-coverage/REC_netcdf.adoc @@ -0,0 +1,6 @@ +[[rec_geodata_coverage_netcdf]] +[width="90%",cols="2,6a"] +|=== +^|*Recommendation {counter:rec-id}* |*/rec/geodata-coverage/netcdf* +^|A |If the resource can be represented for the intended use in netCDF, implementations SHOULD consider to support netCDF as an encoding. +|=== diff --git a/standard/recommendations/geodata-coverage/REC_png.adoc b/standard/recommendations/geodata-coverage/REC_png.adoc new file mode 100644 index 0000000..5ed02a1 --- /dev/null +++ b/standard/recommendations/geodata-coverage/REC_png.adoc @@ -0,0 +1,6 @@ +[[rec_geodata_coverage_png]] +[width="90%",cols="2,6a"] +|=== +^|*Recommendation {counter:rec-id}* |*/rec/geodata-coverage/png* +^|A |If the resource can be represented for the intended use in (raw data values) PNG, implementations SHOULD consider to support PNG as an encoding. +|=== diff --git a/standard/recomendations/core/REC_string_i18n.adoc b/standard/recommendations/geodata-coverage/REC_string_i18n.adoc similarity index 66% rename from standard/recomendations/core/REC_string_i18n.adoc rename to standard/recommendations/geodata-coverage/REC_string_i18n.adoc index 6b9e1b1..028b850 100644 --- a/standard/recomendations/core/REC_string_i18n.adoc +++ b/standard/recommendations/geodata-coverage/REC_string_i18n.adoc @@ -1,6 +1,6 @@ -[[rec_core_string-i18n]] +[[rec_geodata_coverage_i18n]] [width="90%",cols="2,6a"] |=== -^|*Recommendation {counter:rec-id}* |*/rec/core/string-i18n* +^|*Recommendation {counter:rec-id}* |*/rec/geodata-coverage/string-i18n* ^|A |For encodings that support string internationalization, the server SHOULD include information about the language for each string value that includes linguistic text. |=== diff --git a/standard/requirements/json/REQ_api-common.adoc b/standard/requirements/cisjson/REQ_api-common.adoc similarity index 56% rename from standard/requirements/json/REQ_api-common.adoc rename to standard/requirements/cisjson/REQ_api-common.adoc index 352112e..3646030 100644 --- a/standard/requirements/json/REQ_api-common.adoc +++ b/standard/requirements/cisjson/REQ_api-common.adoc @@ -1,8 +1,8 @@ -[[req_json_api-common]] +[[req_cisjson_api-common]] [width="90%",cols="2,6a"] |=== -^|*Requirement {counter:req-id}* |*/req/json/api-common* +^|*Requirement {counter:req-id}* |*/req/cisjson/api-common* ^|**Extends** |/req/core/api-common 2+|The API SHALL demonstrate conformance with the following Requirements Class of the OGC API-Common version 1.0 Standard. -^|A |http://www.opengis.net/spec/ogcapi_common-1/1.0/req/geojson +^|A |http://www.opengis.net/spec/ogcapi_common-1/1.0/req/json |=== diff --git a/standard/requirements/cisjson/REQ_cisjson-conformance.adoc b/standard/requirements/cisjson/REQ_cisjson-conformance.adoc new file mode 100644 index 0000000..29990cd --- /dev/null +++ b/standard/requirements/cisjson/REQ_cisjson-conformance.adoc @@ -0,0 +1,7 @@ +[[req_cisjson_conformance]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/cisjson/conformance* +2+|The list of Conformance Classes advertised by the API SHALL include: +^|A |http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/cisjson +|=== diff --git a/standard/requirements/cisjson/REQ_coverage-success.adoc b/standard/requirements/cisjson/REQ_coverage-success.adoc new file mode 100644 index 0000000..57d2cc2 --- /dev/null +++ b/standard/requirements/cisjson/REQ_coverage-success.adoc @@ -0,0 +1,8 @@ +[[req_cisjson_coverage-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/cisjson/coverage-success* +^|**Restricts** |/req/core/coverage-success +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The response SHALL be a CIS JSON document which validates against the JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage.json[coverage.json]. +|=== diff --git a/standard/requirements/cisjson/REQ_domainset-success.adoc b/standard/requirements/cisjson/REQ_domainset-success.adoc new file mode 100644 index 0000000..7cc6f42 --- /dev/null +++ b/standard/requirements/cisjson/REQ_domainset-success.adoc @@ -0,0 +1,8 @@ +[[req_cisjson_domainset-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/cisjson/domainset-success* +^|**Restricts** |/req/core/domainset-success +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The response SHALL be a CIS JSON document which validates against the JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage_domainset.json[coverage_domainset.json]. +|=== diff --git a/standard/requirements/cisjson/REQ_metadata-success.adoc b/standard/requirements/cisjson/REQ_metadata-success.adoc new file mode 100644 index 0000000..1591a11 --- /dev/null +++ b/standard/requirements/cisjson/REQ_metadata-success.adoc @@ -0,0 +1,8 @@ +[[req_cisjson_metadata-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/cisjson/metadata-success* +^|**Restricts** |/req/core/metadata-success +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The response SHALL be a JSON document which validates against the JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage_metadata.json[coverage_metadata.json]. +|=== diff --git a/standard/requirements/cisjson/REQ_rangeset-success.adoc b/standard/requirements/cisjson/REQ_rangeset-success.adoc new file mode 100644 index 0000000..30b23b3 --- /dev/null +++ b/standard/requirements/cisjson/REQ_rangeset-success.adoc @@ -0,0 +1,8 @@ +[[req_cisjson_rangeset-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/cisjson/rangeset-success* +^|**Restricts** |/req/core/rangeset-success +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The response SHALL be a CIS JSON document which validates against the JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage_rangeset.json[coverage_rangeset.json]. +|=== diff --git a/standard/requirements/cisjson/REQ_rangetype-success.adoc b/standard/requirements/cisjson/REQ_rangetype-success.adoc new file mode 100644 index 0000000..b076042 --- /dev/null +++ b/standard/requirements/cisjson/REQ_rangetype-success.adoc @@ -0,0 +1,8 @@ +[[req_cisjson_rangetype-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/cisjson/rangetype-success* +^|**Restricts** |/req/core/rangetype-success +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The response SHALL be a CIS JSON document which validates against the JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage_rangetype.json[coverage_rangetype.json]. +|=== diff --git a/standard/requirements/core/REQ_api-common.adoc b/standard/requirements/common-core/REQ_api-common.adoc similarity index 83% rename from standard/requirements/core/REQ_api-common.adoc rename to standard/requirements/common-core/REQ_api-common.adoc index d6c035c..849d7ed 100644 --- a/standard/requirements/core/REQ_api-common.adoc +++ b/standard/requirements/common-core/REQ_api-common.adoc @@ -4,5 +4,5 @@ ^|*Requirement {counter:req-id}* |*/req/core/api-common* 2+|The API implementation SHALL demonstrate conformance with the following Requirements Classes of the OGC API-Common version 1.0 Standard. ^|A |http://www.opengis.net/spec/ogcapi_common-1/1.0/req/core -^|B |http://www.opengis.net/spec/ogcapi_common-1/1.0/req/collections +^|B |http://www.opengis.net/spec/ogcapi_common-2/1.0/req/collections |=== diff --git a/standard/requirements/core/REQ_http-response.adoc b/standard/requirements/common-core/REQ_http-response.adoc similarity index 100% rename from standard/requirements/core/REQ_http-response.adoc rename to standard/requirements/common-core/REQ_http-response.adoc diff --git a/standard/requirements/common-core/REQ_paged-response.adoc b/standard/requirements/common-core/REQ_paged-response.adoc new file mode 100644 index 0000000..d0f15bf --- /dev/null +++ b/standard/requirements/common-core/REQ_paged-response.adoc @@ -0,0 +1,16 @@ +[[req_common_core-paged-response]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/common-core/paged-response* +^|A |Responses to a filtered operation that only return a portion of the full selected resource set SHALL comply with API-Common requirements: + +TODO: These Features resources pertained to individual features being returned, and are not currently defined in Common. +Define this generically for all resources, including e.g. for paging list of collections? + +* `/req/core/rc-response` +* `/req/core/fc-links` +* `/req/core/fc-rel-type` +* `/req/core/fc-timestamp` +* `/req/core/fc-numberMatched` +* `/req/core/fc-numberReturned` +|=== diff --git a/standard/requirements/core/REQ_core_conformance.adoc b/standard/requirements/core/REQ_core_conformance.adoc deleted file mode 100644 index 0e85cac..0000000 --- a/standard/requirements/core/REQ_core_conformance.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_core_conformance]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/conformance* -2+|The list of Conformance Classes advertised by the API SHALL include: -^|A |http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/core -^|B |http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/collections -^|C |http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/core -|=== diff --git a/standard/requirements/core/REQ_cov-all-op.adoc b/standard/requirements/core/REQ_cov-all-op.adoc deleted file mode 100644 index 438ab19..0000000 --- a/standard/requirements/core/REQ_cov-all-op.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_core_cov-all-op]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-all-op* -^|A |The API SHALL support the HTTP GET operation at the path `/collections/{coverageid}/coverage/all`. - -* `coverageid` is the local identifier for a `Coverage`. It serves the same role and is subject to the same requirements as the `collectionid` parameter defined in API-Common. -|=== diff --git a/standard/requirements/core/REQ_cov-all-success.adoc b/standard/requirements/core/REQ_cov-all-success.adoc deleted file mode 100644 index cdbea04..0000000 --- a/standard/requirements/core/REQ_cov-all-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_core_cov-all-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-all-success* -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The content of that response SHALL include the `domainset`, `rangetype`, `metadata`, and `rangeset` of the coverage as defined in the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage.json[coverage.json]. -^|C |The response SHALL be encoded using the format(s) negotiated through the HTTP protocol. -^|D |If no format is negotiated, then the response SHALL be encoded using the default format(s) as described in <>. -|=== diff --git a/standard/requirements/core/REQ_cov-bbox-parameter.adoc b/standard/requirements/core/REQ_cov-bbox-parameter.adoc deleted file mode 100644 index 935dd0e..0000000 --- a/standard/requirements/core/REQ_cov-bbox-parameter.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_core_cov-bbox-parameter]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-bbox-parameter* -^|A |A Coverage API SHALL support the Bounding Box (bbox) parameter for `/collections` and `/collections/{coverageid}` requests. -^|B |Requests which include the Bounding Box parameter SHALL comply with API-Common requirement `/req/core/rc-bbox-definition`. -^|C |Responses to Bounding Box requests SHALL comply with API-Common requirement `/req/core/rc-bbox-response`. -|=== diff --git a/standard/requirements/core/REQ_cov-datetime-parameter.adoc b/standard/requirements/core/REQ_cov-datetime-parameter.adoc deleted file mode 100644 index 7ec4a42..0000000 --- a/standard/requirements/core/REQ_cov-datetime-parameter.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_core_cov-datetime-parameter]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-datetime-parameter* -^|A |A Coverage API SHALL support the Date-Time (datetime) parameter for `/collections` and `/collections/{coverageid}` requests. -^|B |Requests which include the Date-Time parameter SHALL comply with API-Common requirement `/req/core/rc-time-definition`. -^|C |Responses to Date-Time requests SHALL comply with API-Common requirement `/req/core/rc-time-response`. -|=== diff --git a/standard/requirements/core/REQ_cov-desc-op.adoc b/standard/requirements/core/REQ_cov-desc-op.adoc deleted file mode 100644 index e7db641..0000000 --- a/standard/requirements/core/REQ_cov-desc-op.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_core_cov-desc-op]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-desc-op* -^|A |The API SHALL support the HTTP GET operation at the path `/collections/{coverageid}/coverage/description`. - -* `coverageid` is the local identifier for a `Coverage`. It serves the same role and is subject to the same requirements as the `collectionid` parameter defined in API-Common. -|=== diff --git a/standard/requirements/core/REQ_cov-desc-success.adoc b/standard/requirements/core/REQ_cov-desc-success.adoc deleted file mode 100644 index cb9d87d..0000000 --- a/standard/requirements/core/REQ_cov-desc-success.adoc +++ /dev/null @@ -1,10 +0,0 @@ -[[req_core_cov-desc-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-desc-success* -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The content of that response SHALL provide a description of the coverage as defined in the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/CIS/coverage_description.json[coverage_description.json]. -^|C |The response SHALL be encoded using the format(s) negotiated through the HTTP protocol. -^|D |If no format is negotiated, then the response SHALL be encoded using the default format as described in <>. -|=== - diff --git a/standard/requirements/core/REQ_cov-ds-op.adoc b/standard/requirements/core/REQ_cov-ds-op.adoc deleted file mode 100644 index e548041..0000000 --- a/standard/requirements/core/REQ_cov-ds-op.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_core_cov-ds-op]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-ds-op* -^|A |The API SHALL support the HTTP GET operation at the path `/collections/{coverageid}/coverage/domainset`. - -* `coverageid` is the local identifier for a `Coverage`. It serves the same role and is subject to the same requirements as the `collectionid` parameter defined in API-Common. -|=== diff --git a/standard/requirements/core/REQ_cov-ds-success.adoc b/standard/requirements/core/REQ_cov-ds-success.adoc deleted file mode 100644 index 0548975..0000000 --- a/standard/requirements/core/REQ_cov-ds-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_core_cov-ds-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-ds-success* -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The content of that response SHALL provide the `Domain Set` definition of the coverage as defined in the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage_domainset.json[coverage_domainset.json]. -^|C |The response SHALL be encoded using the format(s) negotiated through the HTTP protocol. -^|D |If no format is negotiated, then the response SHALL be encoded using the default format as described in <>. -|=== diff --git a/standard/requirements/core/REQ_cov-md-op.adoc b/standard/requirements/core/REQ_cov-md-op.adoc deleted file mode 100644 index dd8e7c7..0000000 --- a/standard/requirements/core/REQ_cov-md-op.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_core_cov-md-op]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-md-op* -^|A |The API SHALL support the HTTP GET operation at the path `/collections/{coverageid}/coverage/metadata`. - -* `coverageid` is the local identifier for a `Coverage`. It serves the same role and is subject to the same requirements as the `collectionid` parameter defined in API-Common. -|=== diff --git a/standard/requirements/core/REQ_cov-md-success.adoc b/standard/requirements/core/REQ_cov-md-success.adoc deleted file mode 100644 index 2004064..0000000 --- a/standard/requirements/core/REQ_cov-md-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_core_cov-md-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-md-success* -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The content of that response SHALL contain metadata which describes the coverage as defined in the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage_metadata.json[coverage_metadata.json]. -^|C |The response SHALL be encoded using the format(s) negotiated through the HTTP protocol. -^|D |If no format is negotiated, then the response SHALL be encoded using the default format as described in <>. -|=== diff --git a/standard/requirements/core/REQ_cov-media-type-default.adoc b/standard/requirements/core/REQ_cov-media-type-default.adoc deleted file mode 100644 index 9ae157f..0000000 --- a/standard/requirements/core/REQ_cov-media-type-default.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_core_cov-mediatype-default]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-mediatype-default* -^|A |The default media type for Range Set data SHALL be GeoTIFF. -^|B |IF the `JSON` Conformance Class is advertised, then the default media type for content other than a Range Set SHALL be JSON or GeoJSON. -^|C |IF the `JSON` Conformance Class is not advertised, then the default media type for content other than a Range Set SHALL be HTML. -^|D |The default media type for responses to `all` requests SHALL be multi-part using the appropriate media type for each component resource. -|=== diff --git a/standard/requirements/core/REQ_cov-offer-success.adoc b/standard/requirements/core/REQ_cov-offer-success.adoc deleted file mode 100644 index 18a64da..0000000 --- a/standard/requirements/core/REQ_cov-offer-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_core_cov-offer-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-offer-success* -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The content of that response SHALL provide a general description of the coverage, including the coverage's envelope, as defined in the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/CIS/coverage_offering.json[coverage_offering.json]. -^|C |The response SHALL be encoded using the format(s) negotiated through the HTTP protocol. -^|D |If no format is negotiated, then the response SHALL be encoded using the default format as described in <>. -|=== diff --git a/standard/requirements/core/REQ_cov-rs-op.adoc b/standard/requirements/core/REQ_cov-rs-op.adoc deleted file mode 100644 index 6d261c3..0000000 --- a/standard/requirements/core/REQ_cov-rs-op.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_core_cov-rs-op]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-rs-op* -^|A |The API SHALL support the HTTP GET operation at the path `/collections/{coverageid}/coverage/rangeset`. - -* `coverageid` is the local identifier for a `Coverage`. It serves the same role and is subject to the same requirements as the `collectionid` parameter defined in API-Common. -|=== diff --git a/standard/requirements/core/REQ_cov-rs-success.adoc b/standard/requirements/core/REQ_cov-rs-success.adoc deleted file mode 100644 index bff469e..0000000 --- a/standard/requirements/core/REQ_cov-rs-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_core_cov-rs-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-rs-success* -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The content of that response SHALL contain the `Range Set` of the coverage as defined in the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage_rangeset.json[coverage_rangeset.json]. -^|C |The response SHALL be encoded using the format(s) negotiated through the HTTP protocol. -^|D |If no format is negotiated, then the response SHALL be encoded using the default format as described in <>. -|=== diff --git a/standard/requirements/core/REQ_cov-rt-op.adoc b/standard/requirements/core/REQ_cov-rt-op.adoc deleted file mode 100644 index b228beb..0000000 --- a/standard/requirements/core/REQ_cov-rt-op.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_core_cov-rt-op]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-rt-op* -^|A |The API SHALL support the HTTP GET operation at the path `/collections/{coverageid}/coverage/rangetype`. - -* `coverageid` is the local identifier for a `Coverage`. It serves the same role and is subject to the same requirements as the `collectionid` parameter defined in API-Common. -|=== diff --git a/standard/requirements/core/REQ_cov-rt-success.adoc b/standard/requirements/core/REQ_cov-rt-success.adoc deleted file mode 100644 index db0c626..0000000 --- a/standard/requirements/core/REQ_cov-rt-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_core_cov-rt-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/cov-rt-success* -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The content of that response SHALL describe the `Range Type` of the coverage as defined in the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage_rangetype.json[coverage_rangetype.json]. -^|C |The response SHALL be encoded using the format(s) negotiated through the HTTP protocol. -^|D |If no format is negotiated, then the response SHALL be encoded using the default format as described in <>. -|=== diff --git a/standard/requirements/coverage-bbox/REQ_cov-bbox-definition.adoc b/standard/requirements/coverage-bbox/REQ_cov-bbox-definition.adoc new file mode 100644 index 0000000..f9c0b39 --- /dev/null +++ b/standard/requirements/coverage-bbox/REQ_cov-bbox-definition.adoc @@ -0,0 +1,8 @@ +[[req_coverage_bbox-definition]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/coverage-bbox/definition* +^|A |The API SHALL support a BBOX (Bounding Box) parameter parameter for `{coverageId}/coverage` requests. +^|B |Requests which include the Bounding Box parameter SHALL comply with API-Common requirement `/req/core/rc-bbox-definition`. +^|C |Responses SHALL be appropriately sub-set, returning only data within the spatial extent of the specified bounding box parameter. +|=== diff --git a/standard/requirements/coverage-bbox/REQ_cov-bbox-success.adoc b/standard/requirements/coverage-bbox/REQ_cov-bbox-success.adoc new file mode 100644 index 0000000..a3289fd --- /dev/null +++ b/standard/requirements/coverage-bbox/REQ_cov-bbox-success.adoc @@ -0,0 +1,6 @@ +[[req_coverage_bbox-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/coverage-bbox/success* +^|A |Only that part of the coverage addressed falling within the bounds of the bounding box SHALL be returned. +|=== diff --git a/standard/requirements/coverage-bbox/REQ_cov-bbox_conformance.adoc b/standard/requirements/coverage-bbox/REQ_cov-bbox_conformance.adoc new file mode 100644 index 0000000..40eb619 --- /dev/null +++ b/standard/requirements/coverage-bbox/REQ_cov-bbox_conformance.adoc @@ -0,0 +1,8 @@ +[[req_coverage_bbox]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/subset/conformance* +2+|The list of Conformance Classes advertised by the API SHALL include: +^|A |http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/geodata-coverage +^|B |http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/coverage-bbox +|=== diff --git a/standard/requirements/coverage-dateTime/REQ_coverage-datetime-parameter.adoc b/standard/requirements/coverage-dateTime/REQ_coverage-datetime-parameter.adoc new file mode 100644 index 0000000..fb80ca6 --- /dev/null +++ b/standard/requirements/coverage-dateTime/REQ_coverage-datetime-parameter.adoc @@ -0,0 +1,8 @@ +[[req_coverage_datetime-parameter]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/coverage-dateTime/datetime-parameter* +^|A |A Coverage API implementing MAY support the Date-Time (datetime) parameter for `{coverageid}/coverage` and/or `{coverageid}/coverage/domainset` requests. +^|B |Requests which include the Date-Time parameter SHALL comply with API-Common requirement `/req/geodata-filteredList/rc-time-definition`. +^|C |Responses to Date-Time requests SHALL comply with API-Common requirement `/req/core/rc-time-response`. +|=== diff --git a/standard/requirements/subset/REQ_cov-subset-definition.adoc b/standard/requirements/coverage-subset/REQ_cov-subset-definition.adoc similarity index 89% rename from standard/requirements/subset/REQ_cov-subset-definition.adoc rename to standard/requirements/coverage-subset/REQ_cov-subset-definition.adoc index 43797dc..5e58e7a 100644 --- a/standard/requirements/subset/REQ_cov-subset-definition.adoc +++ b/standard/requirements/coverage-subset/REQ_cov-subset-definition.adoc @@ -1,7 +1,7 @@ -[[req_subset-definition]] +[[req_coverage_subset-definition]] [width="90%",cols="2,6a"] |=== -^|*Requirement {counter:req-id}* |*/req/subset/definition* +^|*Requirement {counter:req-id}* |*/req/coverage-subset/definition* ^|A |The operation SHALL support a parameter `subset` with the following characteristics (using an Backus Naur Form (BNF) fragment): [source,BNF] @@ -13,10 +13,10 @@ low: point \| * high: point \| * point: {number} \| "{text}" - + Where: " = double quote = ASCII code 0x42, - {NCName} is an XML-style identifier not containing ":" (colon) characters, + {NCName} is an XML-style identifier not containing ":" (colon) characters, {number} is an integer or floating-point number, and {text} is some general ASCII text (such as a time and date notation in ISO 8601). ---- diff --git a/standard/requirements/subset/REQ_cov-subset-success.adoc b/standard/requirements/coverage-subset/REQ_cov-subset-success.adoc similarity index 82% rename from standard/requirements/subset/REQ_cov-subset-success.adoc rename to standard/requirements/coverage-subset/REQ_cov-subset-success.adoc index bffb6d7..6849771 100644 --- a/standard/requirements/subset/REQ_cov-subset-success.adoc +++ b/standard/requirements/coverage-subset/REQ_cov-subset-success.adoc @@ -1,7 +1,7 @@ -[[req_subset_subset-success]] +[[req_coverage_subset-success]] [width="90%",cols="2,6a"] |=== -^|*Requirement {counter:req-id}* |*/req/subset/subset-success* -^|A |The `subset` parameter SHALL only apply to resources offered as coverages. +^|*Requirement {counter:req-id}* |*/req/coverage-subset/success* +^|A |The `subset` parameter SHALL only apply to resources offered as coverages. ^|B |Only that part of the coverage addressed SHALL be returned that falls within the bounds of the subset expression whereby a "*" (asterisk) in the position of a lower or upper limit along an axis denotes the coverage's minimum or maximum extent along this axis, respectively. The DomainSet shall be adjusted accordingly to the new boundaries (in case of trimming) and the reduced dimension (in case of slicing). |=== diff --git a/standard/requirements/coverage-subset/REQ_cov-subset_conformance.adoc b/standard/requirements/coverage-subset/REQ_cov-subset_conformance.adoc new file mode 100644 index 0000000..95bb087 --- /dev/null +++ b/standard/requirements/coverage-subset/REQ_cov-subset_conformance.adoc @@ -0,0 +1,8 @@ +[[req_coverage_subset-conformance]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/coverage-subset/conformance* +2+|The list of Conformance Classes advertised by the API SHALL include: +^|A |http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/geodata-coverage +^|B |http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/coverage-subset +|=== diff --git a/standard/requirements/core/REQ_cov-offer-op.adoc b/standard/requirements/geodata-coverage/REQ_coverage-op.adoc similarity index 76% rename from standard/requirements/core/REQ_cov-offer-op.adoc rename to standard/requirements/geodata-coverage/REQ_coverage-op.adoc index 44377f8..ccfe2e0 100644 --- a/standard/requirements/core/REQ_cov-offer-op.adoc +++ b/standard/requirements/geodata-coverage/REQ_coverage-op.adoc @@ -1,7 +1,7 @@ -[[req_core_cov-offer-op]] +[[req_geodata_coverage-op]] [width="90%",cols="2,6a"] |=== -^|*Requirement {counter:req-id}* |*/req/core/cov-offer-op* +^|*Requirement {counter:req-id}* |*/req/geodata-coverage/coverage-op* ^|A |The API SHALL support the HTTP GET operation at the path `/collections/{coverageid}/coverage`. * `coverageid` is the local identifier for a `Coverage`. It serves the same role and is subject to the same requirements as the `collectionid` parameter defined in API-Common. diff --git a/standard/requirements/geodata-coverage/REQ_coverage-success.adoc b/standard/requirements/geodata-coverage/REQ_coverage-success.adoc new file mode 100644 index 0000000..898888e --- /dev/null +++ b/standard/requirements/geodata-coverage/REQ_coverage-success.adoc @@ -0,0 +1,11 @@ +[[req_geodata_coverage-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/geodata-coverage/coverage-success* +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The content of that response SHALL include the `rangeset` of the coverage equivalent to that defined in the JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage.json[coverage.json]. +^|C |The content of that response SHALL also include the `domainset` and `rangetype` as well, to the extent that the negotiated format can describe it. +^|D |The content of that response MAY also include the `metadata` for that coverage. The server SHOULD return that metadata if it is available and the negotiated format can describe it. +^|E |The response SHALL be encoded using the format(s) negotiated through the HTTP protocol. +^|F |If no format is negotiated, then the response SHALL be encoded using the format associated with the media type described in the link object which links to this resource, contained within the coverage (collection) resource. +|=== diff --git a/standard/requirements/geodata-coverage/REQ_domainset-op.adoc b/standard/requirements/geodata-coverage/REQ_domainset-op.adoc new file mode 100644 index 0000000..68dd55d --- /dev/null +++ b/standard/requirements/geodata-coverage/REQ_domainset-op.adoc @@ -0,0 +1,8 @@ +[[req_geodata_coverage_domainset-op]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/geodata-coverage/domainset-op* +^|A |If the API does not include a "DomainSet" property within the coverage (collection) resource, it The API SHALL support the HTTP GET operation at the path `/collections/{coverageid}/coverage/domainset`. + +* `coverageid` is the local identifier for a `Coverage`. It serves the same role and is subject to the same requirements as the `collectionid` parameter defined in API-Common. +|=== diff --git a/standard/requirements/geodata-coverage/REQ_domainset-success.adoc b/standard/requirements/geodata-coverage/REQ_domainset-success.adoc new file mode 100644 index 0000000..d726ca6 --- /dev/null +++ b/standard/requirements/geodata-coverage/REQ_domainset-success.adoc @@ -0,0 +1,9 @@ +[[req_geodata_coverage_domainset-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/geodata-coverage/domainset-success* +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The content of that response SHALL provide the `Domain Set` definition of the coverage equivalent to that defined in the JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage_domainset.json[coverage_domainset.json]. +^|C |The response SHALL be encoded using the format(s) negotiated through the HTTP protocol. +^|D |If no format is negotiated, then the response SHALL be encoded using CIS JSON, which SHALL also be the format associated with the media type described in the link object which links to this resource, contained within the coverage (collection) resource. +|=== diff --git a/standard/requirements/geodata-coverage/REQ_geodata_coverage-conformance.adoc b/standard/requirements/geodata-coverage/REQ_geodata_coverage-conformance.adoc new file mode 100644 index 0000000..efedff2 --- /dev/null +++ b/standard/requirements/geodata-coverage/REQ_geodata_coverage-conformance.adoc @@ -0,0 +1,9 @@ +[[req_geodata_coverage_conformance]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/geodata-coverage/conformance* +2+|The list of Conformance Classes advertised by the API SHALL include: +^|A |http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/core +^|B |http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/collections +^|C |http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/geodata-coverage +|=== diff --git a/standard/requirements/geodata-coverage/REQ_metadata-op.adoc b/standard/requirements/geodata-coverage/REQ_metadata-op.adoc new file mode 100644 index 0000000..4f37876 --- /dev/null +++ b/standard/requirements/geodata-coverage/REQ_metadata-op.adoc @@ -0,0 +1,9 @@ +[[req_geodata_coverage-metadata-op]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/geodata-coverage/metadata-op* +^|A |The API MAY support the HTTP GET operation at the path `/collections/{coverageid}/coverage/metadata`. +^|B |The API SHOULD support it, if available, for selected formats which can describe it. + +* `coverageid` is the local identifier for a `Coverage`. It serves the same role and is subject to the same requirements as the `collectionid` parameter defined in API-Common. +|=== diff --git a/standard/requirements/geodata-coverage/REQ_metadata-success.adoc b/standard/requirements/geodata-coverage/REQ_metadata-success.adoc new file mode 100644 index 0000000..7dd9b39 --- /dev/null +++ b/standard/requirements/geodata-coverage/REQ_metadata-success.adoc @@ -0,0 +1,9 @@ +[[req_geodata_coverage-metadata-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/geodata-coverage/metadata-success* +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The content of that response SHALL contain metadata which describes the coverage equivalent to that defined in the JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage_metadata.json[coverage_metadata.json]. +^|C |The response SHALL be encoded using the format(s) negotiated through the HTTP protocol. +^|D |If no format is negotiated, then the response SHALL be encoded using the format associated with the media type described in the link object which links to this resource, contained within the coverage (collection) resource. +|=== diff --git a/standard/requirements/core/REQ_cov-paged-response.adoc b/standard/requirements/geodata-coverage/REQ_paged-response.adoc similarity index 53% rename from standard/requirements/core/REQ_cov-paged-response.adoc rename to standard/requirements/geodata-coverage/REQ_paged-response.adoc index 351bbe1..9c911a5 100644 --- a/standard/requirements/core/REQ_cov-paged-response.adoc +++ b/standard/requirements/geodata-coverage/REQ_paged-response.adoc @@ -1,9 +1,12 @@ -[[req_core_cov-paged-response]] +[[req_geodata-coverage-paged-response]] [width="90%",cols="2,6a"] |=== -^|*Requirement {counter:req-id}* |*/req/core/cov-paged-response* +^|*Requirement {counter:req-id}* |*/req/geodata-coverage/paged-response* ^|A |Responses to a filtered operation that only return a portion of the full selected resource set SHALL comply with API-Common requirements: +TODO: These Features resources pertained to individual feaures being returned, and are not currently defined in Common. +Their paging mechanism likely does not apply well to coverages as well. + * `/req/core/rc-response` * `/req/core/fc-links` * `/req/core/fc-rel-type` diff --git a/standard/requirements/geodata-coverage/REQ_rangeset-op.adoc b/standard/requirements/geodata-coverage/REQ_rangeset-op.adoc new file mode 100644 index 0000000..2932fd8 --- /dev/null +++ b/standard/requirements/geodata-coverage/REQ_rangeset-op.adoc @@ -0,0 +1,9 @@ +[[req_geodata_coverage-rangeset-op]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/geodata_coverage/rangeset-op* +^|A |The API MAY support the HTTP GET operation at the path `/collections/{coverageid}/coverage/rangeset`. +^|B |The API SHOULD support it for selected formats which can describe the raw data values without any additional information. + +* `coverageid` is the local identifier for a `Coverage`. It serves the same role and is subject to the same requirements as the `collectionid` parameter defined in API-Common. +|=== diff --git a/standard/requirements/geodata-coverage/REQ_rangeset-success.adoc b/standard/requirements/geodata-coverage/REQ_rangeset-success.adoc new file mode 100644 index 0000000..afd4764 --- /dev/null +++ b/standard/requirements/geodata-coverage/REQ_rangeset-success.adoc @@ -0,0 +1,9 @@ +[[req_geodata_coverage-rangeset-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/geodata_coverage/rangeset-success* +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The content of that response SHALL contain the `Range Set` of the coverage equivalent to that defined in the JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage_rangeset.json[coverage_rangeset.json]. +^|C |The response SHALL be encoded using the format(s) negotiated through the HTTP protocol. +^|D |If no format is negotiated, then the response SHALL be encoded using the format associated with the media type described in the link object which links to this resource, contained within the coverage (collection) resource. +|=== diff --git a/standard/requirements/geodata-coverage/REQ_rangetype-op.adoc b/standard/requirements/geodata-coverage/REQ_rangetype-op.adoc new file mode 100644 index 0000000..ed99520 --- /dev/null +++ b/standard/requirements/geodata-coverage/REQ_rangetype-op.adoc @@ -0,0 +1,8 @@ +[[req_geodata_coverage-rangetype-op]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/geodata-coverage/rangetype-op* +^|A |If the API does not include a "RangeType" property within the coverage (collection) resource, it SHALL support the HTTP GET operation at the path `/collections/{coverageid}/coverage/rangetype`. + +* `coverageid` is the local identifier for a `Coverage`. It serves the same role and is subject to the same requirements as the `collectionid` parameter defined in API-Common. +|=== diff --git a/standard/requirements/geodata-coverage/REQ_rangetype-success.adoc b/standard/requirements/geodata-coverage/REQ_rangetype-success.adoc new file mode 100644 index 0000000..ec5b005 --- /dev/null +++ b/standard/requirements/geodata-coverage/REQ_rangetype-success.adoc @@ -0,0 +1,9 @@ +[[req_geodata-coverage_rangetype-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/geodata-coverage/rangetype-success* +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The content of that response SHALL describe the `Range Type` of the coverage equivalent to that defined in the JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage_rangetype.json[coverage_rangetype.json]. +^|C |The response SHALL be encoded using the format(s) negotiated through the HTTP protocol. +^|D |If no format is negotiated, then the response SHALL be encoded using CIS JSON, which SHALL also be the format associated with the media type described in the link object which links to this resource, contained within the coverage (collection) resource. +|=== diff --git a/standard/requirements/geodata-filteredList/REQ_bbox-parameter.adoc b/standard/requirements/geodata-filteredList/REQ_bbox-parameter.adoc new file mode 100644 index 0000000..8caac5e --- /dev/null +++ b/standard/requirements/geodata-filteredList/REQ_bbox-parameter.adoc @@ -0,0 +1,8 @@ +[[req_geodata_filteredList-bbox-parameter]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/geodata-filteredList/bbox-parameter* +^|A |An API implementing Common - Part 2: Geospatial data MAY support the Bounding Box (bbox) parameter for `/collections` requests. +^|B |Requests which include the Bounding Box parameter SHALL comply with API-Common requirement `/req/core/rc-bbox-definition`. +^|C |Responses SHALL be appropriately filtered, returning only collections whose spatial extent intersects with the specified bounding box parameter. +|=== diff --git a/standard/requirements/geodata-filteredList/REQ_datetime-parameter.adoc b/standard/requirements/geodata-filteredList/REQ_datetime-parameter.adoc new file mode 100644 index 0000000..69a152e --- /dev/null +++ b/standard/requirements/geodata-filteredList/REQ_datetime-parameter.adoc @@ -0,0 +1,8 @@ +[[req_geodata_filteredList-datetime-parameter]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/geodata-filteredList/datetime-parameter* +^|A |An API implementing Common - Part 2: Geospatial data MAY support the Date-Time (datetime) parameter for `/collections` requests. +^|B |Requests which include the Date-Time parameter SHALL comply with API-Common requirement `/req/geodata-filteredList/rc-time-definition`. +^|C |Responses SHALL be appropriately filtered, returning only collections whose temporal extent intersects with the specified date time parameter. +|=== diff --git a/standard/requirements/core/REQ_cov-limit-parameter.adoc b/standard/requirements/geodata-filteredList/REQ_limit-parameter.adoc similarity index 71% rename from standard/requirements/core/REQ_cov-limit-parameter.adoc rename to standard/requirements/geodata-filteredList/REQ_limit-parameter.adoc index 6e2896e..da913f9 100644 --- a/standard/requirements/core/REQ_cov-limit-parameter.adoc +++ b/standard/requirements/geodata-filteredList/REQ_limit-parameter.adoc @@ -1,8 +1,8 @@ -[[req_core_cov-limit-parameter]] +[[req_geodata_filteredList-limit-parameter]] [width="90%",cols="2,6a"] |=== -^|*Requirement {counter:req-id}* |*/req/core/cov-limit-parameter* -^|A |A Coverage API SHALL support the Limit (limit) parameter for `/collections` and `/collections/{coverageid}` requests. +^|*Requirement {counter:req-id}* |*/req/geodata-filteredList/limit-parameter* +^|A |A Coverage API SHALL support the Limit (limit) parameter for `/collections` requests. ^|B |Requests which include the Limit parameter SHALL comply with API-Common requirement `/req/core/rc-limit-definition`. ^|C |Responses to Limit requests SHALL comply with API-Common requirements: diff --git a/standard/requirements/html/REQ_cov-all-success.adoc b/standard/requirements/html/REQ_cov-all-success.adoc deleted file mode 100644 index 4c24bd9..0000000 --- a/standard/requirements/html/REQ_cov-all-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_html_cov-all-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/html/cov-all-success* -^|**Restricts** |/req/core/cov-all-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a vaild HTML document -^|C |The response SHALL include content equivalent to that defined in JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage.json[coverage.json]. -|=== diff --git a/standard/requirements/html/REQ_cov-desc-success.adoc b/standard/requirements/html/REQ_cov-desc-success.adoc deleted file mode 100644 index 30af030..0000000 --- a/standard/requirements/html/REQ_cov-desc-success.adoc +++ /dev/null @@ -1,10 +0,0 @@ -[[req_html_cov-desc-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/html/cov-desc-success* -^|**Restricts** |/req/core/cov-desc-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a vaild HTML document -^|C |The response SHALL include content equivalent to that defined in JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/CIS/coverage_description.json[coverage_description.json]. -|=== - diff --git a/standard/requirements/html/REQ_cov-ds-success.adoc b/standard/requirements/html/REQ_cov-ds-success.adoc deleted file mode 100644 index bf372ad..0000000 --- a/standard/requirements/html/REQ_cov-ds-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_html_cov-ds-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/html/cov-ds-success* -^|**Restricts** |/req/core/cov-ds-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a vaild HTML document -^|C |The response SHALL include content equivalent to that defined in JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage_domainset.json[coverage_domainset.json]. -|=== diff --git a/standard/requirements/html/REQ_cov-md-success.adoc b/standard/requirements/html/REQ_cov-md-success.adoc deleted file mode 100644 index 74a379b..0000000 --- a/standard/requirements/html/REQ_cov-md-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_html_cov-md-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/html/cov-md-success* -^|**Restricts** |/req/core/cov-md-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a vaild HTML document -^|C |The response SHALL include content equivalent to that defined in JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage_metadata.json[coverage_metadata.json]. -|=== diff --git a/standard/requirements/html/REQ_cov-offer-success.adoc b/standard/requirements/html/REQ_cov-offer-success.adoc deleted file mode 100644 index 9e6f721..0000000 --- a/standard/requirements/html/REQ_cov-offer-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_html_cov-offer-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/html/cov-offer-success* -^|**Restricts** |/req/core/cov-offer-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a vaild HTML document -^|C |The response SHALL include content equivalent to that defined in JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/CIS/coverage_offering.json[coverage_offering.json]. -|=== diff --git a/standard/requirements/html/REQ_cov-rs-success.adoc b/standard/requirements/html/REQ_cov-rs-success.adoc deleted file mode 100644 index dcd18eb..0000000 --- a/standard/requirements/html/REQ_cov-rs-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_html_cov-rs-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/html/cov-rs-success* -^|**Restricts** |/req/core/cov-rs-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a vaild HTML document -^|C |The response SHALL include content equivalent to that defined in JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage_rangeset.json[coverage_rangeset.json]. -|=== diff --git a/standard/requirements/html/REQ_cov-rt-success.adoc b/standard/requirements/html/REQ_cov-rt-success.adoc deleted file mode 100644 index db23583..0000000 --- a/standard/requirements/html/REQ_cov-rt-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_html_cov-rt-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/html/cov-rt-success* -^|**Restricts** |/req/core/cov-rt-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a vaild HTML document -^|C |The response SHALL include content equivalent to that defined in JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage_rangetype.json[coverage_rangetype.json]. -|=== diff --git a/standard/requirements/html/REQ_coverage-success.adoc b/standard/requirements/html/REQ_coverage-success.adoc new file mode 100644 index 0000000..6b37d69 --- /dev/null +++ b/standard/requirements/html/REQ_coverage-success.adoc @@ -0,0 +1,9 @@ +[[req_html_coverage-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/html/coverage-success* +^|**Restricts** |/req/core/coverage-success +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The response SHALL be a valid HTML document +^|C |The response SHALL include content equivalent to that defined in JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage.json[coverage.json]. +|=== diff --git a/standard/requirements/html/REQ_domainset-success.adoc b/standard/requirements/html/REQ_domainset-success.adoc new file mode 100644 index 0000000..d10f59d --- /dev/null +++ b/standard/requirements/html/REQ_domainset-success.adoc @@ -0,0 +1,9 @@ +[[req_html_domainset-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/html/domainset-success* +^|**Restricts** |/req/core/domainset-success +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The response SHALL be a valid HTML document +^|C |The response SHALL include content equivalent to that defined in JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage_domainset.json[coverage_domainset.json]. +|=== diff --git a/standard/requirements/html/REQ_metadata-success.adoc b/standard/requirements/html/REQ_metadata-success.adoc new file mode 100644 index 0000000..37faaad --- /dev/null +++ b/standard/requirements/html/REQ_metadata-success.adoc @@ -0,0 +1,9 @@ +[[req_html_metadata-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/html/metadata-success* +^|**Restricts** |/req/core/metadata-success +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The response SHALL be a valid HTML document +^|C |The response SHALL include content equivalent to that defined in JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage_metadata.json[coverage_metadata.json]. +|=== diff --git a/standard/requirements/html/REQ_rangeset-success.adoc b/standard/requirements/html/REQ_rangeset-success.adoc new file mode 100644 index 0000000..b555f7f --- /dev/null +++ b/standard/requirements/html/REQ_rangeset-success.adoc @@ -0,0 +1,9 @@ +[[req_html_rangeset-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/html/rangeset-success* +^|**Restricts** |/req/core/rangeset-success +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The response SHALL be a valid HTML document +^|C |The response SHALL include content equivalent to that defined in JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage_rangeset.json[coverage_rangeset.json]. +|=== diff --git a/standard/requirements/html/REQ_rangetype-success.adoc b/standard/requirements/html/REQ_rangetype-success.adoc new file mode 100644 index 0000000..504e3b3 --- /dev/null +++ b/standard/requirements/html/REQ_rangetype-success.adoc @@ -0,0 +1,9 @@ +[[req_html_rangetype-success]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/html/rangetype-success* +^|**Restricts** |/req/core/rangetype-success +^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. +^|B |The response SHALL be a valid HTML document +^|C |The response SHALL include content equivalent to that defined in JSON schema link:https://raw.githubusercontent.com/opengeospatial/ogc_api_coverages/master/standard/openapi/schemas/coverage_rangetype.json[coverage_rangetype.json]. +|=== diff --git a/standard/requirements/json/REQ_cov-all-success.adoc b/standard/requirements/json/REQ_cov-all-success.adoc deleted file mode 100644 index 77e7a1e..0000000 --- a/standard/requirements/json/REQ_cov-all-success.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_json_cov-all-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/json/cov-all-success* -^|**Restricts** |/req/core/cov-all-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a JSON or GeoJSON document which validates against the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage.json[coverage.json]. -|=== diff --git a/standard/requirements/json/REQ_cov-desc-success.adoc b/standard/requirements/json/REQ_cov-desc-success.adoc deleted file mode 100644 index b539ffd..0000000 --- a/standard/requirements/json/REQ_cov-desc-success.adoc +++ /dev/null @@ -1,9 +0,0 @@ -[[req_json_cov-desc-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/json/cov-desc-success* -^|**Restricts** |/req/core/cov-desc-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a JSON or GeoJSON document which validates against the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/CIS/coverage_description.json[coverage_description.json]. -|=== - diff --git a/standard/requirements/json/REQ_cov-ds-success.adoc b/standard/requirements/json/REQ_cov-ds-success.adoc deleted file mode 100644 index 9cef6c1..0000000 --- a/standard/requirements/json/REQ_cov-ds-success.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_json_cov-ds-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/json/cov-ds-success* -^|**Restricts** |/req/core/cov-ds-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a JSON or GeoJSON document which validates against the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage_domainset.json[coverage_domainset.json]. -|=== diff --git a/standard/requirements/json/REQ_cov-md-success.adoc b/standard/requirements/json/REQ_cov-md-success.adoc deleted file mode 100644 index eba260b..0000000 --- a/standard/requirements/json/REQ_cov-md-success.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_json_cov-md-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/json/cov-md-success* -^|**Restricts** |/req/core/cov-md-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a JSON or GeoJSON document which validates against the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage_metadata.json[coverage_metadata.json]. -|=== diff --git a/standard/requirements/json/REQ_cov-offer-success.adoc b/standard/requirements/json/REQ_cov-offer-success.adoc deleted file mode 100644 index 5b52037..0000000 --- a/standard/requirements/json/REQ_cov-offer-success.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_json_cov-offer-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/json/cov-offer-success* -^|**Restricts** |/req/core/cov-offer-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a JSON or GeoJSON document which validates against the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/CIS/coverage_offering.json[coverage_offering.json]. -|=== diff --git a/standard/requirements/json/REQ_cov-rs-success.adoc b/standard/requirements/json/REQ_cov-rs-success.adoc deleted file mode 100644 index 1ce5177..0000000 --- a/standard/requirements/json/REQ_cov-rs-success.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_json_cov-rs-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/json/cov-rs-success* -^|**Restricts** |/req/core/cov-rs-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a JSON or GeoJSON document which validates against the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage_rangeset.json[coverage_rangeset.json]. -|=== diff --git a/standard/requirements/json/REQ_cov-rt-success.adoc b/standard/requirements/json/REQ_cov-rt-success.adoc deleted file mode 100644 index 1c6afe0..0000000 --- a/standard/requirements/json/REQ_cov-rt-success.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[[req_json_cov-rt-success]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/json/cov-rt-success* -^|**Restricts** |/req/core/cov-rt-success -^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`. -^|B |The response SHALL be a JSON or GeoJSON document which validates against the JSON schema link:https://raw.githubusercontent.com/opengeospatial/oapi_coverages/master/standard/openapi/schemas/coverage_rangetype.json[coverage_rangetype.json]. -|=== diff --git a/standard/requirements/json/REQ_json-conformance.adoc b/standard/requirements/json/REQ_json-conformance.adoc deleted file mode 100644 index f17f80c..0000000 --- a/standard/requirements/json/REQ_json-conformance.adoc +++ /dev/null @@ -1,7 +0,0 @@ -[[req_json_conformance]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/json/conformance* -2+|The list of Conformance Classes advertised by the API SHALL include: -^|A |http://www.opengis.net/spec/ogcapi-coverages-1/1.0/conf/json -|=== diff --git a/standard/requirements/requirements_class_cisjson.adoc b/standard/requirements/requirements_class_cisjson.adoc new file mode 100644 index 0000000..b048975 --- /dev/null +++ b/standard/requirements/requirements_class_cisjson.adoc @@ -0,0 +1,12 @@ +[[rc_json]] +[cols="1,4",width="90%"] +|=== +2+|*Requirements Class* +2+|http://www.opengis.net/spec/ogcapi_coverages-1/1.0/req/cisjson +|Target type |Web API +|Dependency |<> +|Dependency |http://www.opengis.net/spec/ogcapi_common-1/1.0/req/json[API-Common JSON] +|Pre-conditions | +1) The API advertises conformance to the CIS JSON Conformance Class + +2) The client negotiates use of the JSON or CIS JSON encoding. +|=== diff --git a/standard/requirements/requirements_class_core.adoc b/standard/requirements/requirements_class_common_core.adoc similarity index 56% rename from standard/requirements/requirements_class_core.adoc rename to standard/requirements/requirements_class_common_core.adoc index 9551253..a5f859a 100644 --- a/standard/requirements/requirements_class_core.adoc +++ b/standard/requirements/requirements_class_common_core.adoc @@ -2,8 +2,8 @@ [cols="1,4",width="90%"] |=== 2+|*Requirements Class* -2+|http://www.opengis.net/spec/ogcapi-coverages-1/1.0/req/core +2+|http://www.opengis.net/spec/ogcapi-coverages-1/1.0/req/common-core |Target type |Web API |Dependency |http://www.opengis.net/spec/ogcapi_common-1/1.0/req/core -|Dependency |http://www.opengis.net/spec/ogcapi_common-1/1.0/req/collections +|Dependency |http://www.opengis.net/spec/ogcapi_common-2/1.0/req/collections |=== diff --git a/standard/requirements/requirements_class_subset.adoc b/standard/requirements/requirements_class_coverage_bbox.adoc similarity index 70% rename from standard/requirements/requirements_class_subset.adoc rename to standard/requirements/requirements_class_coverage_bbox.adoc index 3171b53..f974365 100644 --- a/standard/requirements/requirements_class_subset.adoc +++ b/standard/requirements/requirements_class_coverage_bbox.adoc @@ -2,8 +2,8 @@ [cols="1,4",width="90%"] |=== 2+|*Requirements Class* -2+|http://www.opengis.net/spec/ogcapi-coverages-1/1.0/req/subset +2+|http://www.opengis.net/spec/ogcapi-coverages-1/1.0/req/coverage-bbox |Target type |Web API -|Dependency |http://www.opengis.net/spec/ogcapi_coverage-1/1.0/req/core +|Dependency |http://www.opengis.net/spec/ogcapi_coverage-1/1.0/req/geodata-coverage |Dependency |<> |=== diff --git a/standard/requirements/requirements_class_coverage_subset.adoc b/standard/requirements/requirements_class_coverage_subset.adoc new file mode 100644 index 0000000..4afca08 --- /dev/null +++ b/standard/requirements/requirements_class_coverage_subset.adoc @@ -0,0 +1,9 @@ +[[rc_subset]] +[cols="1,4",width="90%"] +|=== +2+|*Requirements Class* +2+|http://www.opengis.net/spec/ogcapi-coverages-1/1.0/req/coverage-subset +|Target type |Web API +|Dependency |http://www.opengis.net/spec/ogcapi_coverage-1/1.0/req/geodata-coverage +|Dependency |<> +|=== diff --git a/standard/requirements/requirements_class_geodata_coverage.adoc b/standard/requirements/requirements_class_geodata_coverage.adoc new file mode 100644 index 0000000..d081a8a --- /dev/null +++ b/standard/requirements/requirements_class_geodata_coverage.adoc @@ -0,0 +1,9 @@ +[[rc_core]] +[cols="1,4",width="90%"] +|=== +2+|*Requirements Class* +2+|http://www.opengis.net/spec/ogcapi-coverages-1/1.0/req/geodata-coverage +|Target type |Web API +|Dependency |http://www.opengis.net/spec/ogcapi_common-1/1.0/req/core +|Dependency |http://www.opengis.net/spec/ogcapi_common-2/1.0/req/collections +|=== diff --git a/standard/requirements/requirements_class_geodata_filteredList.adoc b/standard/requirements/requirements_class_geodata_filteredList.adoc new file mode 100644 index 0000000..d081a8a --- /dev/null +++ b/standard/requirements/requirements_class_geodata_filteredList.adoc @@ -0,0 +1,9 @@ +[[rc_core]] +[cols="1,4",width="90%"] +|=== +2+|*Requirements Class* +2+|http://www.opengis.net/spec/ogcapi-coverages-1/1.0/req/geodata-coverage +|Target type |Web API +|Dependency |http://www.opengis.net/spec/ogcapi_common-1/1.0/req/core +|Dependency |http://www.opengis.net/spec/ogcapi_common-2/1.0/req/collections +|=== diff --git a/standard/requirements/requirements_class_json.adoc b/standard/requirements/requirements_class_json.adoc deleted file mode 100644 index 09aba05..0000000 --- a/standard/requirements/requirements_class_json.adoc +++ /dev/null @@ -1,13 +0,0 @@ -[[rc_json]] -[cols="1,4",width="90%"] -|=== -2+|*Requirements Class* -2+|http://www.opengis.net/spec/ogcapi_coverages-1/1.0/req/json -|Target type |Web API -|Dependency |<> -|Dependency |http://www.opengis.net/spec/ogcapi_common-1/1.0/req/geojson[API-Common GeoJSON] -|Dependency |<> -|Pre-conditions | -1) The API advertises conformance to the JSON Conformance Class + -2) The client negotiates use of the JSON or GeoJSON encoding. -|===