From f76deda45c29939e7782487794b02f1b288c12e1 Mon Sep 17 00:00:00 2001 From: LAMBARE Aubin Date: Mon, 6 Nov 2023 17:14:07 +0100 Subject: [PATCH] feat: add oseo extension --- stac-extensions/oseo/README.md | 83 +++++++ stac-extensions/oseo/examples/collection.json | 56 +++++ stac-extensions/oseo/examples/item.json | 63 +++++ stac-extensions/oseo/json-schema/schema.json | 219 ++++++++++++++++++ 4 files changed, 421 insertions(+) create mode 100644 stac-extensions/oseo/README.md create mode 100644 stac-extensions/oseo/examples/collection.json create mode 100644 stac-extensions/oseo/examples/item.json create mode 100644 stac-extensions/oseo/json-schema/schema.json diff --git a/stac-extensions/oseo/README.md b/stac-extensions/oseo/README.md new file mode 100644 index 000000000..8d20a8f15 --- /dev/null +++ b/stac-extensions/oseo/README.md @@ -0,0 +1,83 @@ +# Template Extension Specification + +- **Title:** Template +- **Identifier:** +- **Field Name Prefix:** oseo +- **Scope:** Item, Collection +- **Extension [Maturity Classification](https://github.com/radiantearth/stac-spec/tree/master/extensions/README.md#extension-maturity):** Proposal +- **Owner**: + +This document explains the Template Extension to the [SpatioTemporal Asset Catalog](https://github.com/radiantearth/stac-spec) (STAC) specification. +This is the place to add a short introduction. + +- Examples: + - [Item example](examples/item.json): Shows the basic usage of the extension in a STAC Item + - [Collection example](examples/collection.json): Shows the basic usage of the extension in a STAC Collection +- [JSON Schema](json-schema/schema.json) +- [Changelog](./CHANGELOG.md) + +## Fields + +The fields in the table below can be used in these parts of STAC documents: + +- [ ] Catalogs +- [x] Collections +- [x] Item Properties (incl. Summaries in Collections) +- [ ] Assets (for both Collections and Items, incl. Item Asset Definitions in Collections) +- [ ] Links + +| Field Name | Type | Description | +| -------------------- | ------------------------- | -------------------------------------------- | +| oseo:uid | string | Uid | +| oseo:sensor_type | string | Sensor Type | +| oseo:composite_type | string | Composite Type | +| oseo:orbit_type | string | Orbit Type | +| oseo:spectral_range | string | Spectral Range | +| oseo:wavelengths | string | Wavelengths | +| oseo:has_security_constraints | string | Has Security Constraints | +| oseo:dissemination | string | Dissemination | +| oseo:topic_category | string | Topic Category | +| oseo:keyword | string | Keyword | +| oseo:organisation_name | string | Organisation Name | +| oseo:organisation_role | string | Organisation Role | +| oseo:lineage | string | Lineage | +| oseo:use_limitation | string | Use Limitation | +| oseo:access_constraint | string | Access Constraint | +| oseo:other_constraint | string | Other Constraint | +| oseo:classification | string | Classification | +| oseo:language | string | Language | +| oseo:specification | string | Specification | +| oseo:parent_identifier | string | Parent Identifier | +| oseo:production_status | string | Production Status | +| oseo:acquisition_type | string | Acquisition Type | +| oseo:orbit_number | string | Orbit Number | +| oseo:track | string | Track | +| oseo:frame | string | Frame | +| oseo:swath_identifier | string | Swath Identifier | +| oseo:snow_cover | string | Snow Cover | +| oseo:lowest_location | string | Lowest Location | +| oseo:highest_location | string | Highest Location | +| oseo:product_quality_status | string | Product Quality Status | +| oseo:product_quality_degradation_tag | string | Product Quality Degradation Tag | +| oseo:processor_name | string | Processor Name | +| oseo:processing_center | string | Processing Center | +| oseo:processing_date | string | Processing Date | +| oseo:archiving_center | string | Archiving Center | +| oseo:processing_mode | string | Processing Mode | +| oseo:availability_time | string | Availability Time | +| oseo:acquisition_station | string | Acquisition Station | +| oseo:acquisition_sub_type | string | Acquisition Sub Type | +| oseo:illumination_zenith_angle | string | Illumination Zenith Angle | +| oseo:polarization_mode | string | Polarization Mode | +| oseo:antenna_look_direction | string | Antenna Look Direction | +| oseo:minimum_incidence_angle | string | Minimum Incidence Angle | +| oseo:maximum_incidence_angle | string | Maximum Incidence Angle | +| oseo:incidence_angle_variation | string | Incidence Angle Variation | + +## Contributing + +All contributions are subject to the +[STAC Specification Code of Conduct](https://github.com/radiantearth/stac-spec/blob/master/CODE_OF_CONDUCT.md). +For contributions, please follow the +[STAC specification contributing guide](https://github.com/radiantearth/stac-spec/blob/master/CONTRIBUTING.md) Instructions +for running tests are copied here for convenience. diff --git a/stac-extensions/oseo/examples/collection.json b/stac-extensions/oseo/examples/collection.json new file mode 100644 index 000000000..a630f9ca5 --- /dev/null +++ b/stac-extensions/oseo/examples/collection.json @@ -0,0 +1,56 @@ +{ + "stac_version": "1.0.0", + "stac_extensions": [ + "https://raw.githubusercontent.com/CS-SI/eodag/master/stac-extensions/oseo/json-schema/schema.json" + ], + "type": "Collection", + "id": "collection", + "title": "A title", + "description": "A description", + "license": "Apache-2.0", + "extent": { + "spatial": { + "bbox": [ + [ + 172.9, + 1.3, + 173, + 1.4 + ] + ] + }, + "temporal": { + "interval": [ + [ + "2015-06-23T00:00:00Z", + null + ] + ] + } + }, + "assets": { + "example": { + "href": "https://example.com/examples/file.xyz" + } + }, + "summaries": { + "datetime": { + "minimum": "2015-06-23T00:00:00Z", + "maximum": "2019-07-10T13:44:56Z" + }, + "oseo:instrument": "OLCI", + "oseo:sensorType": "OPTICAL", + "oseo:organisationName": "ESA", + "oseo:orbitNumber": 997 + }, + "links": [ + { + "href": "https://example.com/examples/collection.json", + "rel": "self" + }, + { + "href": "https://example.com/examples/item.json", + "rel": "item" + } + ] + } diff --git a/stac-extensions/oseo/examples/item.json b/stac-extensions/oseo/examples/item.json new file mode 100644 index 000000000..f3e09a646 --- /dev/null +++ b/stac-extensions/oseo/examples/item.json @@ -0,0 +1,63 @@ +{ + "type": "Feature", + "stac_version": "1.0.0", + "stac_extensions": [ + "https://raw.githubusercontent.com/CS-SI/eodag/master/stac-extensions/oseo/json-schema/schema.json" + ], + "bbox": [ + 67.694321, + -46.947174, + 71.730194, + -44.263451 + ], + "links": [ + { + "href": "https://example.com/examples/item.json", + "rel": "self" + } + ], + "assets": { + "data": { + "href": "https://example.com/examples/file.xyz" + } + }, + "id": "item", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + 68.57457, + -46.947174 + ], + [ + 71.730194, + -46.185322 + ], + [ + 70.754669, + -44.263451 + ], + [ + 67.694321, + -45.002003 + ], + [ + 68.57457, + -46.947174 + ] + ] + ] + ] + }, + "properties": { + "datetime": "2023-11-06T14:21:55.375Z", + "oseo:instrument": "SAR-C SAR", + "oseo:sensorType": "RADAR", + "oseo:organisationName": "ESA", + "oseo:orbitNumber": 51097, + "oseo:swathIdentifier": "IW", + "oseo:polarizationMode": "HH" + } +} diff --git a/stac-extensions/oseo/json-schema/schema.json b/stac-extensions/oseo/json-schema/schema.json new file mode 100644 index 000000000..93d61a0cf --- /dev/null +++ b/stac-extensions/oseo/json-schema/schema.json @@ -0,0 +1,219 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://eodag.p3.csgroup.space/extensions/oseo/json-schema/schema.json#", + "title": "OpenSearch for Earth Observation", + "description": "OpenSearch-EO STAC extension to a STAC Item https://www.ogc.org/standards/opensearch-eo", + "allOf": [ + { + "$ref": "#/definitions/oseo" + }, + { + "$ref": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json" + } + ], + "definitions": { + "oseo": { + "type": "object", + "required": [ + "stac_extensions", + "properties" + ], + "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "enum": [ + "oseo", + "https://eodag.p3.csgroup.space/extensions/oseo/json-schema/schema.json" + ] + } + }, + "properties": { + "type": "object", + "properties": { + "oseo:uid": { + "type": "string", + "title": "Uid" + }, + "oseo:sensor_type": { + "type": "string", + "title": "Sensor Type" + }, + "oseo:composite_type": { + "type": "string", + "title": "Composite Type" + }, + "oseo:orbit_type": { + "type": "string", + "title": "Orbit Type" + }, + "oseo:spectral_range": { + "type": "string", + "title": "Spectral Range" + }, + "oseo:wavelengths": { + "type": "string", + "title": "Wavelengths" + }, + "oseo:has_security_constraints": { + "type": "string", + "title": "Has Security Constraints" + }, + "oseo:dissemination": { + "type": "string", + "title": "Dissemination" + }, + "oseo:topic_category": { + "type": "string", + "title": "Topic Category" + }, + "oseo:keyword": { + "type": "string", + "title": "Keyword" + }, + "oseo:organisation_name": { + "type": "string", + "title": "Organisation Name" + }, + "oseo:organisation_role": { + "type": "string", + "title": "Organisation Role" + }, + "oseo:lineage": { + "type": "string", + "title": "Lineage" + }, + "oseo:use_limitation": { + "type": "string", + "title": "Use Limitation" + }, + "oseo:access_constraint": { + "type": "string", + "title": "Access Constraint" + }, + "oseo:other_constraint": { + "type": "string", + "title": "Other Constraint" + }, + "oseo:classification": { + "type": "string", + "title": "Classification" + }, + "oseo:language": { + "type": "string", + "title": "Language" + }, + "oseo:specification": { + "type": "string", + "title": "Specification" + }, + "oseo:parent_identifier": { + "type": "string", + "title": "Parent Identifier" + }, + "oseo:production_status": { + "type": "string", + "title": "Production Status" + }, + "oseo:acquisition_type": { + "type": "string", + "title": "Acquisition Type" + }, + "oseo:orbit_number": { + "type": "string", + "title": "Orbit Number" + }, + "oseo:track": { + "type": "string", + "title": "Track" + }, + "oseo:frame": { + "type": "string", + "title": "Frame" + }, + "oseo:swath_identifier": { + "type": "string", + "title": "Swath Identifier" + }, + "oseo:snow_cover": { + "type": "string", + "title": "Snow Cover" + }, + "oseo:lowest_location": { + "type": "string", + "title": "Lowest Location" + }, + "oseo:highest_location": { + "type": "string", + "title": "Highest Location" + }, + "oseo:product_quality_status": { + "type": "string", + "title": "Product Quality Status" + }, + "oseo:product_quality_degradation_tag": { + "type": "string", + "title": "Product Quality Degradation Tag" + }, + "oseo:processor_name": { + "type": "string", + "title": "Processor Name" + }, + "oseo:processing_center": { + "type": "string", + "title": "Processing Center" + }, + "oseo:processing_date": { + "type": "string", + "title": "Processing Date" + }, + "oseo:archiving_center": { + "type": "string", + "title": "Archiving Center" + }, + "oseo:processing_mode": { + "type": "string", + "title": "Processing Mode" + }, + "oseo:availability_time": { + "type": "string", + "title": "Availability Time" + }, + "oseo:acquisition_station": { + "type": "string", + "title": "Acquisition Station" + }, + "oseo:acquisition_sub_type": { + "type": "string", + "title": "Acquisition Sub Type" + }, + "oseo:illumination_zenith_angle": { + "type": "string", + "title": "Illumination Zenith Angle" + }, + "oseo:polarization_mode": { + "type": "string", + "title": "Polarization Mode" + }, + "oseo:antenna_look_direction": { + "type": "string", + "title": "Antenna Look Direction" + }, + "oseo:minimum_incidence_angle": { + "type": "string", + "title": "Minimum Incidence Angle" + }, + "oseo:maximum_incidence_angle": { + "type": "string", + "title": "Maximum Incidence Angle" + }, + "oseo:incidence_angle_variation": { + "type": "string", + "title": "Incidence Angle Variation" + } + } + } + } + } + } +}