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

Extend list of format codes. #467

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

pvretano
Copy link
Contributor

@pvretano pvretano commented Oct 28, 2024

Closes #395
Closes #428

@m-mohr
Copy link

m-mohr commented Oct 28, 2024

Please consider #395 (comment) before merging. Thanks.

@fmigneault
Copy link
Contributor

I'd also like to propose these values that I am currently using to distinguish various OGC API / STAC API JSON structures:
https://github.com/crim-ca/weaver/blob/c121f8d0dbc9ea9095ce16c192083d7ac91595b9/weaver/execute.py#L98-L103

@bpross-52n
Copy link
Contributor

SWG meeting from 25.11.2024: Peter will add the codes that @fmigneault mentioned here and will merge the PR.

@@ -123,6 +123,9 @@ The <<jsonschemavalidation,JSON Schema specification>> defines a https://json-sc
|http://www.opengis.net/def/format/ogcapi-processes/0/cql2-text-filter |cql2-text |Indicates that the string value is a filter expression encoded using the text representation of the https://docs.ogc.org/is/21-065r2/21-065r2.html[Common Query Language (CQL2)].
|http://www.opengis.net/def/format/ogcapi-processes/0/cql2-json-filter |cql2-json |Indicates that the string value is a filter expression encoded using the JSON representation of the https://docs.ogc.org/is/21-065r2/21-065r2.html[Common Query Language (CQL2)].
|http://www.opengis.net/def/format/ogcapi-processes/0/collection-id |collection-id |Indicates that the string value is a https://docs.ogc.org/DRAFTS/20-024.html#collection-description[collection identifier] (e.g. a feature collection identifier).
|http://www.opengis.net/def/format/ogcapi-processes/0/stac-collection |stac-collection |Indicates that the string value is a https://github.com/radiantearth/stac-spec/blob/master/collection-spec/collection-spec.md[STAC collection].
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I got yet one more to propose while we are at it: stac-items
Just encountered that case earlier.

The idea being, that you can request the STAC Items themselves as application/geo+json.
Because STAC Items have nested media-types as Assets, doing a request with only type is ambiguous (is it the items or the assets they describe?)
ie:

some-input:
  collection: https://server.com/stac/api/v1/collection/something
  type: application/geo+json  # Should this be the Items FeatureCollection, or a Vector file found in Assets?
  format: stac-items  # specifically asking for the items, needed to disambiguate from OA Features
some-input:
  collection: https://server.com/stac/api/v1/collection/something
  type: image/tiff; application=geotiff; profile=cloud-optimized
  format: stac-collection  # STAC Assets matching the COG media-type
  # but why 'stac-collection'? -> properties to find them (therefore, not a OA Coverages)
  filter: properties.eo:cloud_cover > 0.5

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Relates to crim-ca/weaver#770

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In STAC thats named ItemCollection, so maybe use stac-itemcollection instead?

Copy link

@m-mohr m-mohr Nov 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And what about a single item or a catalog? We discussed a longer list here:
#428

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we can align with OpenEO definitions if they actually mean the same.

I'm mostly trying to map with the results from pystac-client operations CollectionClient, CollectionSearch, and ItemSearch.

For the moment format: stac-collection would be the first, and stac-items (=> stac-itemcollection) would be the last (I think?). Is there other representations applicable in STAC?

What if the STAC Assets themselves should be provided, is there a stac-assetcollection or similar that is already defined?

Copy link

@m-mohr m-mohr Nov 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's nothing to align to in STAC right now, I think. There's just different specifications which for all there could be a usecase to pass them to processes.

In openEO we just have a generic STAC type (i.e. item, collection, catalog). ItemCollection is missing, not sure whether that's intentional: Open-EO/openeo-processes#523 (but it's also a slightly different usecase, I think).

We discussed that already in another issue, which listed potential options, I think. Here's the list of options again:

  • stac -> The union of all of the types below, i.e. any STAC entity
  • stac-item -> STAC Item Spec (static or /collections/:id/items/:id)
  • stac-collection -> STAC Collection Spec (static or /collections/:id)
  • stac-catalog -> STAC Catalog spec (static or API landing page)
  • stac-itemcollections -> ItemCollection fragment in STAC API (/collections/:id/item or /search)
  • (stac-api -> a STAC API landing page, could potentially be captured by stac-catalog?)
  • (stac-collectioncollection -> What you get returned in /collections - but I don't have a usecase for this, so can be omitted)

Providing STAC assets on its own doesn't make a lot of sense to me as usually the assets depend on the STAC container, e.g. if an asset has a relativ link you need to get the self link. Also, STAC asset metadata inherits from the properties/top-level metadata since STAC 1.1. So I'd not define a separate stac-asset format. Better pass the asset key in addition to the STAC entity if you want to process a specific asset.

@@ -118,6 +118,14 @@ The <<jsonschemavalidation,JSON Schema specification>> defines a https://json-sc
|http://www.opengis.net/def/format/ogcapi-processes/0/geojson-feature |geojson-feature |Indicates that the object is an instance of a GeoJSON feature http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/featureGeoJSON.yaml[(featureGeoJSON.yaml)].
|http://www.opengis.net/def/format/ogcapi-processes/0/geojson-geometry |geojson-geometry |Indicates that the object is an instance of a GeoJSON geometry http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/geometryGeoJSON.yaml[(geometryGeoJSON.yaml)].
|http://www.opengis.net/def/format/ogcapi-processes/0/ogc-bbox |ogc-bbox |Indicates that the object is an instance of an OGC bounding box https://raw.githubusercontent.com/opengeospatial/ogcapi-processes/master/openapi/schemas/processes-core/bbox.yaml[(bbox.yaml)].
|http://www.opengis.net/def/format/ogcapi-processes/0/epgc-code |epsg-code |Indicates that the value is a code from the https://epsg.io/[EPSG registry].
Copy link

@m-mohr m-mohr Nov 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo:

Suggested change
|http://www.opengis.net/def/format/ogcapi-processes/0/epgc-code |epsg-code |Indicates that the value is a code from the https://epsg.io/[EPSG registry].
|http://www.opengis.net/def/format/ogcapi-processes/0/epsg-code |epsg-code |Indicates that the value is a code from the https://epsg.io/[EPSG registry].

@@ -118,6 +118,14 @@ The <<jsonschemavalidation,JSON Schema specification>> defines a https://json-sc
|http://www.opengis.net/def/format/ogcapi-processes/0/geojson-feature |geojson-feature |Indicates that the object is an instance of a GeoJSON feature http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/featureGeoJSON.yaml[(featureGeoJSON.yaml)].
|http://www.opengis.net/def/format/ogcapi-processes/0/geojson-geometry |geojson-geometry |Indicates that the object is an instance of a GeoJSON geometry http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/geometryGeoJSON.yaml[(geometryGeoJSON.yaml)].
|http://www.opengis.net/def/format/ogcapi-processes/0/ogc-bbox |ogc-bbox |Indicates that the object is an instance of an OGC bounding box https://raw.githubusercontent.com/opengeospatial/ogcapi-processes/master/openapi/schemas/processes-core/bbox.yaml[(bbox.yaml)].
|http://www.opengis.net/def/format/ogcapi-processes/0/epgc-code |epsg-code |Indicates that the value is a code from the https://epsg.io/[EPSG registry].
|http://www.opengis.net/def/format/ogcapi-processes/0/wkt2-def |wkt2-def |Indicates that the string value is a https://docs.ogc.org/is/18-010r11/18-010r11.pdf[well-known text representation of a coordinate reference system].
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe wkt2-definition? Then it would be aligned with openEO.

Suggested change
|http://www.opengis.net/def/format/ogcapi-processes/0/wkt2-def |wkt2-def |Indicates that the string value is a https://docs.ogc.org/is/18-010r11/18-010r11.pdf[well-known text representation of a coordinate reference system].
|http://www.opengis.net/def/format/ogcapi-processes/0/wkt2-definition |wkt2-definition |Indicates that the string value is a https://docs.ogc.org/is/18-010r11/18-010r11.pdf[well-known text representation of a coordinate reference system].

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

EO Application packages in openEO Type indications for user interfaces in parameter schemas
4 participants