Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add constraints for temporal, spatial and vertical extent. #32

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
37 changes: 16 additions & 21 deletions profiles/observations/observations.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,40 +8,35 @@ Annotated example of a landinpage response that complies with the profile

```json
{
"title": "E-SOH EDR API",
"description": "The E-SOH EDR API",
"title": "Example observations API",
"description": "Example observations API",
"links": [
{
"href": "https://api.esoh.met.no/",
"href": "https://api.example.com/",
havardf marked this conversation as resolved.
Show resolved Hide resolved
"rel": "self",
"type": "application/json",
"title": "Landing Page in JSON"
},
{
"href": "https://api.esoh.met.no/docs",
"href": "https://api.example.com/docs",
"rel": "service-doc",
"type": "text/html",
"title": "API description in HTML"
},
// Landingpage SHALL have a link to openapi describing the service.
// Note: Each "service" pr. openapi? MIME type for openapi.
{
"href": "https://api.esoh.met.no/openapi.json",
"href": "https://api.example.com/openapi.json",
"rel": "service-desc",
"type": "application/json",
"type": "application/vnd.oai.openapi+json;version=3.1",
"title": "API description in JSON"
},

// Conformance response SHALL have uri to RODEO profile.
// Note: Add an conformance response example with this rule.
{
"href": "https://api.esoh.met.no/conformance",
"href": "https://api.example.com/conformance",
"rel": "conformance",
"type": "application/json",
"title": "Conformance Declaration in JSON"
},
{
"href": "https://api.esoh.met.no/collections",
"href": "https://api.example.com/collections",
"rel": "data",
"title": "Collections metadata in JSON"
}
Expand All @@ -56,11 +51,11 @@ Annotated example of a landinpage response that complies with the profile
"radiation"
],
"provider": {
"name": "RODEO",
"url": "https://rodeo-project.eu/"
"name": "EUMETNET",
"url": "https://eumetnet.eu/"
},
"contact": {
"email": "[email protected]"
"email": "[email protected]"
}
}
```
Expand All @@ -73,7 +68,7 @@ Annotated example of a collection that complies with the profile
{
"links": [
{
"href": "https://api.esoh.met.no/collections",
"href": "https://api.example.com/collections",
"rel": "self"
}
],
Expand All @@ -83,7 +78,7 @@ Annotated example of a collection that complies with the profile
"title": "Surface observations from Europe",
"links": [
{
"href": "https://api.esoh.met.no/collections/observations",
"href": "https://api.example.com/collections/observations",
"rel": "data"
},
{
Expand Down Expand Up @@ -121,7 +116,7 @@ Annotated example of a collection that complies with the profile
"data_queries": {
"position": {
"link": {
"href": "https://api.esoh.met.no/collections/observations/position",
"href": "https://api.example.com/collections/observations/position",
"rel": "data",
"variables": {
"query_type": "position",
Expand All @@ -133,7 +128,7 @@ Annotated example of a collection that complies with the profile
},
"area": {
"link": {
"href": "https://api.esoh.met.no/collections/observations/area",
"href": "https://api.example.com/collections/observations/area",
"rel": "data",
"variables": {
"query_type": "area",
Expand All @@ -145,7 +140,7 @@ Annotated example of a collection that complies with the profile
},
"locations": {
"link": {
"href": "https://api.esoh.met.no/collections/observations/locations",
"href": "https://api.example.com/collections/observations/locations",
"rel": "data",
"variables": {
"query_type": "locations",
Expand Down
9 changes: 9 additions & 0 deletions standard/requirements/core/REQ_collection_spatial_extent.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[[req_core_collection_spatial_extent]]
[width="90%",cols="2,6a"]
|===
^|*Requirement {counter:req-id}* |*/req/core/collection_spatial_extent*
^|A |The value of `extent.spatial.crs` SHALL be `OGC:CRS84`.
^|B |The value of `crs` SHALL include the element `OGC:CRS84`.
^|C |The value of `data_queries.*.crs_details` SHALL include an object whose `crs` value is `OGC:CRS84`.
^|D |If a collection supports more CRSs than `OGC:CRS84`, these values SHOULD be presented on the syntax `EPSG:<code>` in `crs` and `data_queries.*.crs_details.crs` if an epsg code is available.
|===
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[[req_core_collection_temporal_extent]]
[width="90%",cols="2,6a"]
|===
^|*Requirement {counter:req-id}* |*/req/core/collection_temporal_extent*
^|A |The value of `extent.temporal.trs` SHALL be `Gregorian`.
|===
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[[req_core_collection_vertical_extent]]
[width="90%",cols="2,6a"]
|===
^|*Requirement {counter:req-id}* |*/req/core/collection_vertical_extent*
^|A |If `extent.vertical` is defined, the value of `extent.vertical.vrs` SHOULD be one the following values: `Pressure level in hPa`, `Geopotential height in gpm`, `Geometrical altitude above mean sea level in meters`, `Height above ground in meters`, `Flight level`.
havardf marked this conversation as resolved.
Show resolved Hide resolved
|===
7 changes: 7 additions & 0 deletions standard/requirements/core/REQ_coveragejson_referencing.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[[req_core_coveragejson_referencing]]
[width="90%",cols="2,6a"]
|===
^|*Requirement {counter:req-id}* |*/req/core/coveragejson_referencing*
^|A |When requesting data and crs query param is not specified the `system` property for the spatial coordinates in `domain.referencing.*` SHALL have the following values: `"type": "GeographicCRS"` and `"id": "OGC:CRS84"`.
^|B |When requesting data and the crs query param is specified, the `domain.referencing.*.system` object with `"type": "GeographicCRS"` SHALL have its `id` property set to the same value as the crs query param.
|===
27 changes: 26 additions & 1 deletion standard/sections/clause_7_core.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,29 @@ include::../requirements/core/REQ_collection_title.adoc[]

A license describes the usage permissions for the data in a collection.

include::../requirements/core/REQ_collection_license.adoc[]
include::../requirements/core/REQ_collection_license.adoc[]


=== Collection temporal extent

Temporal extent of a collction

include::../requirements/core/REQ_collection_temporal_extent.adoc[]

=== Collection spatial extent

Spatial extent of a collction

include::../requirements/core/REQ_collection_spatial_extent.adoc[]

=== CoverageJSON referencing

CoverageJSON coordinate system metadata

include::../requirements/core/REQ_coveragejson_referencing.adoc[]

=== Collection vertical extent

Vertical extent of a collection

include::../requirements/core/REQ_collection_vertical_extent.adoc[]