Skip to content

Support for STAC metadata #103

Open
Open
@fmigneault

Description

@fmigneault

Description

The STAC format has been proposed to handle the differences of metadata/reference files formats across EO inputs. It should be considered as a supported format to simplify (or offer more leverage over) Application Package creation.

STAC allows handling the following issues (not necessarily exhaustive) :

  • different sensors that produce different output files (think for example LiDAR point cloud vs Optical imagery or Radar imagery)
  • satellite output of different formats and references (different bands, metadata, etc. for RS1, RS2, S1-S3, etc.)
  • specifying a list of interrelated images as an input (think for example of all files within a S2 .SAFE directory) - now we must enforce a ZIP to move them around all together

Concerns

  • When a docker container is executed for the AP, the files with common base directory (ex: all under the .SAFE), will have to be mounted under the same internal volume so that any relative mapping by GDAL still work.
  • No explicit mime-type (registered in IANA) yet exists for STAC.
    • We need to assume something like the following. This case will need to be handled in weaver.formats.
      • application/x-stac
      • application/stac+json
      • Item: application/geo+json; application=stac; profile=item
      • Catalog: application/json; application=stac; profile=catalog
      • Collection: application/json; application=stac; profile=collection
    • We don't want to assume any generic application/json as this could well be a valid input type that doesn't represent a STAC definition/schema.
    • Alternatively, an application/json could be allowed if the stac_version field is located in it.
  • Consider schemas provided under https://schemas.stacspec.org/
    • The corresponding CWL format: https://schemas.stacspec.org/v1.1.0/item-spec/json-schema/item.json could be considered to resolve ExecuteCollectionFormat STAC representations

      weaver/weaver/execute.py

      Lines 100 to 106 in 5a4805e

      class ExecuteCollectionFormat(Constants):
      STAC = "stac-collection" # type: ExecuteCollectionFormatType_STAC
      STAC_ITEMS = "stac-items" # type: ExecuteCollectionFormatType_STAC_ITEMS
      OGC_COVERAGE = "ogc-coverage-collection" # type: ExecuteCollectionFormatType_OGC_COVERAGE
      OGC_FEATURES = "ogc-features-collection" # type: ExecuteCollectionFormatType_OGC_FEATURES
      OGC_MAP = "ogc-map-collection" # type: ExecuteCollectionFormatType_OGC_MAP
      GEOJSON = "geojson-feature-collection" # type: ExecuteCollectionFormatType_GEOJSON
  • When the EMS receives AOI/TOI/CollectionID inputs (which in turns produces OpenSearch requests), the results obtained will have to be parsed in order to formulate the appropriate STAC definition and forward them to the ADES.
  • https://github.com/opengeospatial/ogcapi-processes extensions (Part 3: Workflows & Chaining) are being considered to add support to collections, including STAC. Alignment with their developments and recommendations of EO Apps Best Practices must be considered.
  • Special handling will have to be accomplished to distinguish a JSON input object as STAC collection from other JSON structures used for Complex (file) and/or free-form OAS object with schema ([Feature] Support I/O schema field definition #245).

References

Specifications

Implementation

Metadata

Metadata

Labels

feature/collectionIssues related to Collection inputs/outputs and their resolution.feature/dockerIssue related to Docker application package execution.process/OAP-Part3: WorkflowsOGC API - Processes - Part 3: Workflows/Chainingproject/DACCSRelated to DACCS project (https://github.com/orgs/DACCS-Climate)project/OGCRelated to OGC testbeds or relavant projects.triage/enhancementNew feature or requesttriage/experimentalSomething related to experimental features and/or package versiontriage/featureNew requested feature.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions