From ccdb83554d30ac7d21efc60135d438283ea24ab7 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Mon, 1 Jun 2020 12:16:43 +0200 Subject: [PATCH 1/5] Fix invalid STAC extensions in Collection example --- collection-spec/examples/landsat-collection.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/collection-spec/examples/landsat-collection.json b/collection-spec/examples/landsat-collection.json index 22aeab719..a7b15f7a9 100644 --- a/collection-spec/examples/landsat-collection.json +++ b/collection-spec/examples/landsat-collection.json @@ -1,9 +1,6 @@ { "stac_version": "1.0.0-beta.1", - "stac_extensions": [ - "view", - "eo" - ], + "stac_extensions": [], "id": "landsat-8-l1", "title": "Landsat 8 L1", "description": "Landat 8 imagery radiometrically calibrated and orthorectified using gound points and Digital Elevation Model (DEM) data to correct relief displacement.", From 7c19f0193b5f89c5f3e29b073311848f07b5b674 Mon Sep 17 00:00:00 2001 From: Chris Holmes Date: Mon, 1 Jun 2020 15:12:30 -0700 Subject: [PATCH 2/5] Removed section on eo:bands references --- extensions/eo/README.md | 113 +--------------------------------------- 1 file changed, 1 insertion(+), 112 deletions(-) diff --git a/extensions/eo/README.md b/extensions/eo/README.md index bdddbcc3b..c13d7b1fc 100644 --- a/extensions/eo/README.md +++ b/extensions/eo/README.md @@ -72,118 +72,7 @@ numbers of several popular instruments. | lwir11 | 10.5 - 11.5 | | 10 | | 31 | | lwir12 | 11.5 - 12.5 | | 11 | | 32 | -The difference between the `nir`, `nir08`, and `nir09` bands are that the `nir` band is a wider band that covers most of the spectral range of 0.75μm to 1.0μm. `nir08` and `nir09` are narrow bands centered 0.85μm and 0.95μm respectively. The same goes for the difference between `lwir`, `lwir11` and `lwir12`. - -## Associating assets with bands - -Asset definitions that contain band data should reference the band index. Each asset should provide a `eo:bands` property that is an array of 0 based indexes to the correct [Band Objects](#band-object). - -### Item [`Asset Object`](../../item-spec/item-spec.md#asset-object) fields -| Field Name | Type | Description | -| ---------- | --------- | -------------------------------------------- | -| eo:bands | \[number] | Lists the band names available in the asset. | - -See [example-landsat8.json](examples/example-landsat8.json) for a full example. - -```js -{ - "stac_version": "1.0.0-beta.1", - "stac_extensions": ["eo"], - "id": "LC08_L1TP_107018_20181001_20181001_01_RT", - "type": "Feature", - ... - "properties": { - ... - "eo:bands": [ - { - "name": "B1", - "common_name": "coastal", - "center_wavelength": 0.44, - "full_width_half_max": 0.02 - }, - { - "name": "B2", - "common_name": "blue", - "center_wavelength": 0.48, - "full_width_half_max": 0.06 - }, - { - "name": "B3", - "common_name": "green", - "center_wavelength": 0.56, - "full_width_half_max": 0.06 - }, - ... - ] - }, - "assets": { - "B1": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B1.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [0], - "title": "Band 1 (coastal)" - }, - "B2": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B2.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [1], - "title": "Band 2 (blue)" - }, - "B3": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B3.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [2], - "title": "Band 3 (green)" - }, - ... - } -} -``` - -Planet example: - -```js -{ - "stac_version": "1.0.0-beta.1", - "stac_extensions": ["eo"], - "id": "20171110_121030_1013", - "type": "Feature", - ... - "properties": { - ... - "eo:bands": [ - { - "full_width_half_max": 0.08, - "center_wavelength": 0.63, - "common_name": "red" - }, - { - "full_width_half_max": 0.09, - "center_wavelength": 0.545, - "common_name": "green" - }, - { - "full_width_half_max": 0.06, - "center_wavelength": 0.485, - "common_name": "blue" - }, - { - "full_width_half_max": 0.08, - "center_wavelength": 0.82, - "common_name": "nir" - } - ] - }, - "assets": { - "analytic": { - "href": "https://api.planet.com/data/v1/assets/eyJpIjogIjIwMTcxMTEwXzEyMTAxMF8xMDEzIiwgImMiOiAiUFNTY2VuZTRCYW5kIiwgInQiOiAiYW5hbHl0aWMiLCAiY3QiOiAiaXRlbS10eXBlIn0", - "title": "PSScene4Band GeoTIFF (COG)", - "type": "image/tiff; application=geotiff; profile=cloud-optimized", - "eo:bands": [0,1,2,3] - } - } -} -``` +The difference between the `nir`, `nir08`, and `nir09` bands are that the `nir` band is a wider band that covers most of the spectral range of 0.75μm to 1.0μm. `nir08` and `nir09` are narrow bands centered 0.85μm and 0.95μm respectively. The same goes for the difference between `lwir`, `lwir11` and `lwir12`. ## Implementations From 2d8555754df6ef79ad204b0effcf185c7b2758f4 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 2 Jun 2020 14:25:57 +0200 Subject: [PATCH 3/5] Fixed several JSON Schemas #826, #816, #624 and minor clarification to checksum extension. --- CHANGELOG.md | 7 +- catalog-spec/json-schema/catalog.json | 7 +- collection-spec/json-schema/collection.json | 11 +- extensions/checksum/README.md | 2 + extensions/checksum/json-schema/schema.json | 70 ++++- .../collection-assets/json-schema/schema.json | 7 + extensions/datacube/json-schema/schema.json | 20 ++ extensions/eo/json-schema/schema.json | 7 + .../item-assets/json-schema/schema.json | 7 + extensions/label/json-schema/schema.json | 245 ++++++++++-------- extensions/projection/json-schema/schema.json | 7 + extensions/sar/json-schema/schema.json | 7 + extensions/sat/json-schema/schema.json | 7 + extensions/scientific/json-schema/schema.json | 20 ++ .../single-file-stac/json-schema/schema.json | 7 + .../tiled-assets/json-schema/schema.json | 23 ++ extensions/timestamps/json-schema/schema.json | 7 + extensions/version/json-schema/schema.json | 20 ++ extensions/view/json-schema/schema.json | 7 + item-spec/json-schema/item.json | 17 +- 20 files changed, 350 insertions(+), 155 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27f0bbc52..0fbdffc03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,11 +8,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [v1.0.0-beta.1] - 2020-05-29 -### Changed - -- Extensions: - - [Label extension](extensions/label/README.md) types were clarified and types in README and JSON schema were brought into alignment - ### Removed - The API portion of STAC has been split off into a [new repository: stac-api-spec](https://github.com/radiantearth/stac-api-spec) and will start being versioned and released separately than the core STAC spec. - proj4 string from proj extension @@ -35,6 +30,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - [Tiled Assets extension](extensions/tiled-assets/README.md), for representing data that has been split into tiles ### Changed +- [Label extension](extensions/label/README.md) types were clarified and types in README and JSON schema were brought into alignment - Moved item recommendations to best practices, and added a bit more in item spec about 'search' - Moved `eo:gsd` from `eo` extension to core `gsd` field in Item common metadata - `asset` extension renamed to `item-assets` and renamed `assets` field in Collections to `item_assets` @@ -42,6 +38,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - `datetime` allows `null` as value, but requires `start_datetime` and `end_datetime` then - Extensions `sat`, `scientific` and `view`: At least one field is required to be specified. - [Single File STAC extension](extensions/single-file-stac/README.md) changed to be a complete STAC catalog + GeoJSON FeatureCollection that contains collections and items. +- Improved several JSON Schemas ### Fixed - Datacube extension: `cube:dimensions` was not flagged as required. diff --git a/catalog-spec/json-schema/catalog.json b/catalog-spec/json-schema/catalog.json index 2cc95537b..2f7d05c7f 100644 --- a/catalog-spec/json-schema/catalog.json +++ b/catalog-spec/json-schema/catalog.json @@ -37,12 +37,7 @@ }, { "title": "Reference to a core extension", - "type": "string", - "enum": [ - "checksum", - "single-file-stac", - "tiled-assets" - ] + "type": "string" } ] } diff --git a/collection-spec/json-schema/collection.json b/collection-spec/json-schema/collection.json index 5059cf4ea..b5ae730ea 100644 --- a/collection-spec/json-schema/collection.json +++ b/collection-spec/json-schema/collection.json @@ -34,16 +34,7 @@ }, { "title": "Reference to a core extension", - "type": "string", - "enum": [ - "collection-assets", - "checksum", - "datacube", - "item-assets", - "scientific", - "tiled-assets", - "version" - ] + "type": "string" } ] } diff --git a/extensions/checksum/README.md b/extensions/checksum/README.md index e318430d8..78a466feb 100644 --- a/extensions/checksum/README.md +++ b/extensions/checksum/README.md @@ -17,6 +17,8 @@ Provides a way to specify file checksums (e.g. BLAKE2, MD5, SHA1, SHA2, SHA3) fo | ------------------ | ------ | ------------------------------------------------------------ | | checksum:multihash | string | Multihash for the corresponding file, encoded as hexadecimal (base 16) string with lowercase letters. | +This extension can OPTIONALLY be used with the [Collection Assets Extension](../collection-assets/README.md). Checksums MUST NOT be part of the [Item Assets Definition](../item-assets/README.md) in Collections. + ### Examples Checksum for a text file with file content `test`. diff --git a/extensions/checksum/json-schema/schema.json b/extensions/checksum/json-schema/schema.json index a372a774a..096cf0d95 100644 --- a/extensions/checksum/json-schema/schema.json +++ b/extensions/checksum/json-schema/schema.json @@ -3,27 +3,83 @@ "$id": "schema.json#", "title": "Checksum Extension Specification", "description": "STAC Checksum Extension to a STAC Item", - "allOf": [ + "oneOf": [ { - "$ref": "../../../item-spec/json-schema/item.json#/definitions/core" + "allOf": [ + { + "$ref": "../../../item-spec/json-schema/item.json" + }, + { + "$ref": "#/definitions/stac_extensions" + }, + { + "$ref": "#/definitions/checksum_links" + }, + { + "$ref": "#/definitions/checksum_assets" + } + ] }, { - "$ref": "#/definitions/checksum" + "allOf": [ + { + "$ref": "../../../catalog-spec/json-schema/catalog.json" + }, + { + "$ref": "#/definitions/stac_extensions" + }, + { + "$ref": "#/definitions/checksum_links" + } + ] + }, + { + "allOf": [ + { + "$ref": "../../../collection-spec/json-schema/collection.json" + }, + { + "$ref": "#/definitions/stac_extensions" + }, + { + "$ref": "#/definitions/checksum_links" + }, + { + "$ref": "#/definitions/checksum_assets" + } + ] } ], "definitions": { - "checksum": { + "stac_extensions": { + "type": "object", + "required": [ + "stac_extensions" + ], + "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "checksum" + } + } + } + }, + "checksum_links": { "type": "object", "properties": { "links": { - "title": "Links", "type": "array", "items": { "$ref": "#/definitions/checksums" } - }, + } + } + }, + "checksum_assets": { + "type": "object", + "properties": { "assets": { - "title": "Assets", "type": "object", "patternProperties": { ".+": { diff --git a/extensions/collection-assets/json-schema/schema.json b/extensions/collection-assets/json-schema/schema.json index 741fbd76b..83d55e51c 100644 --- a/extensions/collection-assets/json-schema/schema.json +++ b/extensions/collection-assets/json-schema/schema.json @@ -10,9 +10,16 @@ { "type": "object", "required": [ + "stac_extensions", "assets" ], "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "collection-assets" + } + }, "assets": { "$ref": "../../../item-spec/json-schema/item.json#/definitions/assets" } diff --git a/extensions/datacube/json-schema/schema.json b/extensions/datacube/json-schema/schema.json index 8fdd6b7b6..89e875b35 100644 --- a/extensions/datacube/json-schema/schema.json +++ b/extensions/datacube/json-schema/schema.json @@ -9,6 +9,9 @@ { "$ref": "../../../item-spec/json-schema/item.json" }, + { + "$ref": "#/definitions/stac_extensions" + }, { "type": "object", "required": [ @@ -27,6 +30,9 @@ { "$ref": "../../../collection-spec/json-schema/collection.json" }, + { + "$ref": "#/definitions/stac_extensions" + }, { "$ref": "#/definitions/datacube" } @@ -34,6 +40,20 @@ } ], "definitions": { + "stac_extensions": { + "type": "object", + "required": [ + "stac_extensions" + ], + "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "datacube" + } + } + } + }, "datacube": { "type": "object", "required": [ diff --git a/extensions/eo/json-schema/schema.json b/extensions/eo/json-schema/schema.json index 7fd760498..c81ed6d16 100644 --- a/extensions/eo/json-schema/schema.json +++ b/extensions/eo/json-schema/schema.json @@ -15,10 +15,17 @@ "eo": { "type": "object", "required": [ + "stac_extensions", "properties", "assets" ], "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "eo" + } + }, "properties": { "type": "object", "required": [ diff --git a/extensions/item-assets/json-schema/schema.json b/extensions/item-assets/json-schema/schema.json index 4e9b9b05d..9539532ac 100644 --- a/extensions/item-assets/json-schema/schema.json +++ b/extensions/item-assets/json-schema/schema.json @@ -16,9 +16,16 @@ "title": "Item Assets Definition", "type": "object", "required": [ + "stac_extensions", "item_assets" ], "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "item-assets" + } + }, "item_assets": { "type": "object", "additionalProperties": { diff --git a/extensions/label/json-schema/schema.json b/extensions/label/json-schema/schema.json index b3d7e0495..f6d1e50e1 100644 --- a/extensions/label/json-schema/schema.json +++ b/extensions/label/json-schema/schema.json @@ -1,132 +1,155 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "id": "stac-label-item-schema.json#", - "title": "STAC Label Data Item Extension Spec", - "type": "object", - "properties": { - "properties": { + "$id": "schema.json#", + "title": "Label Extension", + "description": "STAC Label Data Item Extension Spec", + "allOf": [ + { + "$ref": "../../../item-spec/json-schema/item.json" + }, + { + "$ref": "#/definitions/label" + } + ], + "definitions": { + "label": { "type": "object", "required": [ - "label:properties", - "label:classes", - "label:description", - "label:type" + "stac_extensions", + "properties" ], "properties": { - "label:properties": { - "title": "Property", - "oneOf": [ - { + "stac_extensions": { + "type": "array", + "contains": { + "const": "label" + } + }, + "properties": { + "type": "object", + "required": [ + "label:properties", + "label:classes", + "label:description", + "label:type" + ], + "properties": { + "label:properties": { + "title": "Property", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "label:classes": { + "title": "Classes", + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "classes" + ], + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "classes": { + "title": "Classes", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "number" + } + } + ] + } + } + } + }, + "label:description": { + "title": "Description", + "type": "string" + }, + "label:type": { + "title": "Type", + "type": "string", + "enum": [ + "raster", + "vector" + ] + }, + "label:tasks": { + "title": "Task", "type": "array", "items": { "type": "string" } }, - { - "type": "null" - } - ] - }, - "label:classes": { - "title": "Classes", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "classes" - ], - "properties": { - "name": { - "title": "Name", + "label:methods": { + "title": "Method", + "type": "array", + "items": { "type": "string" - }, - "classes": { - "title": "Classes", - "oneOf": [ - { + } + }, + "label:overviews": { + "title": "Overview", + "type": "array", + "items": { + "type": "object", + "properties": { + "property_key": { + "title": "Property Key", + "type": "string" + }, + "counts": { + "title": "Counts", "type": "array", "items": { - "type": "string" + "type": "object", + "properties": { + "name": { + "title": "Class Name", + "type": "string" + }, + "count": { + "title": "Count", + "type": "integer" + } + } } }, - { + "statistics": { + "title": "Statistics", "type": "array", "items": { - "type": "number" - } - } - ] - } - } - } - }, - "label:description": { - "title": "Description", - "type": "string" - }, - "label:type": { - "title": "Type", - "type": "string", - "enum": [ - "raster", - "vector" - ] - }, - "label:tasks": { - "title": "Task", - "type": "array", - "items": { - "type": "string" - } - }, - "label:methods": { - "title": "Method", - "type": "array", - "items": { - "type": "string" - } - }, - "label:overviews": { - "title": "Overview", - "type": "array", - "items": { - "type": "object", - "properties": { - "property_key": { - "title": "Property Key", - "type": "string" - }, - "counts": { - "title": "Counts", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "title": "Class Name", - "type": "string" - }, - "count": { - "title": "Count", - "type": "integer" - } - } - } - }, - "statistics": { - "title": "Statistics", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "title": "Stat Name", - "type": "string" - }, - "value": { - "title": "Value", - "type": "number" + "type": "object", + "properties": { + "name": { + "title": "Stat Name", + "type": "string" + }, + "value": { + "title": "Value", + "type": "number" + } + } } } } diff --git a/extensions/projection/json-schema/schema.json b/extensions/projection/json-schema/schema.json index d83b9e2b0..01ba01a49 100644 --- a/extensions/projection/json-schema/schema.json +++ b/extensions/projection/json-schema/schema.json @@ -15,9 +15,16 @@ "proj":{ "type": "object", "required": [ + "stac_extensions", "properties" ], "properties":{ + "stac_extensions": { + "type": "array", + "contains": { + "const": "projection" + } + }, "properties":{ "type":"object", "required":[ diff --git a/extensions/sar/json-schema/schema.json b/extensions/sar/json-schema/schema.json index bd8fcf5fa..d80248a11 100644 --- a/extensions/sar/json-schema/schema.json +++ b/extensions/sar/json-schema/schema.json @@ -15,10 +15,17 @@ "sar": { "type": "object", "required": [ + "stac_extensions", "properties", "assets" ], "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "sar" + } + }, "properties": { "type": "object", "required": [ diff --git a/extensions/sat/json-schema/schema.json b/extensions/sat/json-schema/schema.json index 5d15cb8d6..697cd33b4 100644 --- a/extensions/sat/json-schema/schema.json +++ b/extensions/sat/json-schema/schema.json @@ -18,9 +18,16 @@ "sat": { "type": "object", "required": [ + "stac_extensions", "properties" ], "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "sat" + } + }, "properties": { "type": "object", "anyOf": [ diff --git a/extensions/scientific/json-schema/schema.json b/extensions/scientific/json-schema/schema.json index 8129b8aac..b1f7b583f 100644 --- a/extensions/scientific/json-schema/schema.json +++ b/extensions/scientific/json-schema/schema.json @@ -9,6 +9,9 @@ { "$ref": "../../../item-spec/json-schema/item.json" }, + { + "$ref": "#/definitions/stac_extensions" + }, { "type": "object", "required": [ @@ -27,6 +30,9 @@ { "$ref": "../../../collection-spec/json-schema/collection.json" }, + { + "$ref": "#/definitions/stac_extensions" + }, { "$ref": "#/definitions/scientific" } @@ -34,6 +40,20 @@ } ], "definitions": { + "stac_extensions": { + "type": "object", + "required": [ + "stac_extensions" + ], + "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "scientific" + } + } + } + }, "scientific": { "type": "object", "anyOf": [ diff --git a/extensions/single-file-stac/json-schema/schema.json b/extensions/single-file-stac/json-schema/schema.json index 39e98f5f3..7a247d28e 100644 --- a/extensions/single-file-stac/json-schema/schema.json +++ b/extensions/single-file-stac/json-schema/schema.json @@ -18,9 +18,16 @@ "single-file-stac": { "type": "object", "required": [ + "stac_extensions", "features" ], "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "single-file-stac" + } + }, "collections": { "type": "array", "items": { diff --git a/extensions/tiled-assets/json-schema/schema.json b/extensions/tiled-assets/json-schema/schema.json index 7c291a738..ec5d83dd9 100644 --- a/extensions/tiled-assets/json-schema/schema.json +++ b/extensions/tiled-assets/json-schema/schema.json @@ -9,6 +9,9 @@ { "$ref": "../../../item-spec/json-schema/item.json" }, + { + "$ref": "#/definitions/stac_extensions" + }, { "$ref": "#/definitions/item-tiles" } @@ -18,6 +21,9 @@ { "$ref": "../../../catalog-spec/json-schema/catalog.json" }, + { + "$ref": "#/definitions/stac_extensions" + }, { "$ref": "#/definitions/catalog-collection-tiles" } @@ -27,6 +33,9 @@ { "$ref": "../../../collection-spec/json-schema/collection.json" }, + { + "$ref": "#/definitions/stac_extensions" + }, { "$ref": "#/definitions/catalog-collection-tiles" } @@ -34,6 +43,20 @@ } ], "definitions": { + "stac_extensions": { + "type": "object", + "required": [ + "stac_extensions" + ], + "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "tiled-assets" + } + } + } + }, "catalog-collection-tiles": { "title": "Tile matrix additions to STAC Collections and Catalogs", "description": "Allows the definition of tile matrix sets on a Collection or Catalog.", diff --git a/extensions/timestamps/json-schema/schema.json b/extensions/timestamps/json-schema/schema.json index 86dd3c140..0dfc662f5 100644 --- a/extensions/timestamps/json-schema/schema.json +++ b/extensions/timestamps/json-schema/schema.json @@ -10,10 +10,17 @@ { "type": "object", "required": [ + "stac_extensions", "properties", "assets" ], "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "timestamps" + } + }, "properties": { "$ref": "#/definitions/all" }, diff --git a/extensions/version/json-schema/schema.json b/extensions/version/json-schema/schema.json index 958cde8ac..f665b2c30 100644 --- a/extensions/version/json-schema/schema.json +++ b/extensions/version/json-schema/schema.json @@ -9,6 +9,9 @@ { "$ref": "../../../item-spec/json-schema/item.json" }, + { + "$ref": "#/definitions/stac_extensions" + }, { "type": "object", "required": [ @@ -27,6 +30,9 @@ { "$ref": "../../../collection-spec/json-schema/collection.json" }, + { + "$ref": "#/definitions/stac_extensions" + }, { "$ref": "#/definitions/version_extension" } @@ -34,6 +40,20 @@ } ], "definitions": { + "stac_extensions": { + "type": "object", + "required": [ + "stac_extensions" + ], + "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "version" + } + } + } + }, "version_extension": { "type": "object", "required": [ diff --git a/extensions/view/json-schema/schema.json b/extensions/view/json-schema/schema.json index 116e95757..9d3bcfe8f 100644 --- a/extensions/view/json-schema/schema.json +++ b/extensions/view/json-schema/schema.json @@ -15,9 +15,16 @@ "view": { "type": "object", "required": [ + "stac_extensions", "properties" ], "properties": { + "stac_extensions": { + "type": "array", + "contains": { + "const": "view" + } + }, "properties": { "type": "object", "anyOf": [ diff --git a/item-spec/json-schema/item.json b/item-spec/json-schema/item.json index 04b19be67..952e974aa 100644 --- a/item-spec/json-schema/item.json +++ b/item-spec/json-schema/item.json @@ -64,22 +64,7 @@ }, { "title": "Reference to a core extension", - "type": "string", - "enum": [ - "checksum", - "datacube", - "eo", - "label", - "pointcloud", - "projection", - "sar", - "sat", - "scientific", - "tiled-assets", - "timestamps", - "version", - "view" - ] + "type": "string" } ] } From 3837cb72ea1c8bad8bc2c2440c0d5441ebfa2d7b Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 2 Jun 2020 15:37:41 +0200 Subject: [PATCH 4/5] Fix eo:bands examples and other minor improvements #823 --- collection-spec/collection-spec.md | 2 +- .../examples/landsat-collection.json | 1 - collection-spec/examples/landsat-item.json | 180 ------------ extensions/README.md | 2 +- extensions/eo/README.md | 27 +- extensions/eo/examples/example-landsat8.json | 147 +++++----- extensions/eo/json-schema/schema.json | 59 ++-- .../examples/example-landsat8.json | 77 +++++- .../projection/examples/example-landsat8.json | 30 +- .../examples/example-search.json | 261 ++++-------------- .../examples/example-dimension.json | 102 ++++--- .../tiled-assets/examples/example-tiled.json | 78 ++++-- .../CBERS_4_MUX_20181029_177_106_L4.json | 21 +- item-spec/examples/landsat8-sample.json | 258 +++++++++++------ item-spec/examples/sample-full.json | 15 +- 15 files changed, 536 insertions(+), 724 deletions(-) delete mode 100644 collection-spec/examples/landsat-item.json diff --git a/collection-spec/collection-spec.md b/collection-spec/collection-spec.md index 74f93a5ea..ad16df730 100644 --- a/collection-spec/collection-spec.md +++ b/collection-spec/collection-spec.md @@ -10,7 +10,7 @@ STAC Collections are meant to be compatible with *OGC API - Features* Collection * [Examples](examples/): * Sentinel 2: A basic standalone example of a [Collection](examples/sentinel2.json) without items. - * Landsat 8: A [Collection](examples/landsat-collection.json) that holds shared data from an [Item](examples/landsat-item.json). + * Landsat 8: A [Collection](examples/landsat-collection.json) with corresponding Item [Item](../item-spec/examples/landsat8-sample.json). * [JSON Schema](json-schema/collection.json) - please see the [validation instructions](../validation/README.md) ## Collection fields diff --git a/collection-spec/examples/landsat-collection.json b/collection-spec/examples/landsat-collection.json index a7b15f7a9..641929909 100644 --- a/collection-spec/examples/landsat-collection.json +++ b/collection-spec/examples/landsat-collection.json @@ -60,7 +60,6 @@ "summaries": { "platform": ["landsat-8"], "instruments": ["oli", "tirs"], - "view:off_nadir": [0], "gsd": [30], "eo:bands": [ { diff --git a/collection-spec/examples/landsat-item.json b/collection-spec/examples/landsat-item.json deleted file mode 100644 index 5e1814365..000000000 --- a/collection-spec/examples/landsat-item.json +++ /dev/null @@ -1,180 +0,0 @@ -{ - "stac_version": "1.0.0-beta.1", - "stac_extensions": [ - "eo", - "view", - "https://example.com/stac/landsat-extension/1.0/schema.json" - ], - "id": "LC08_L1TP_107018_20181001_20181001_01_RT", - "type": "Feature", - "bbox": [ - 148.13933, - 59.51584, - 152.52758, - 60.63437 - ], - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [ - 152.52758, - 60.63437 - ], - [ - 149.1755, - 61.19016 - ], - [ - 148.13933, - 59.51584 - ], - [ - 151.33786, - 58.97792 - ], - [ - 152.52758, - 60.63437 - ] - ] - ] - }, - "collection": "landsat-8-l1", - "properties": { - "datetime": "2018-10-01T01:08:32.033Z", - "eo:cloud_cover": 78, - "view:sun_azimuth": 168.8989761, - "view:sun_elevation": 26.32596431, - "landsat:path": 107, - "landsat:row": 18 - }, - "assets": { - "ANG": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_ANG.txt", - "title": "Angle coefficients file", - "type": "text/plain" - }, - "B1": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B1.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [ - 0 - ], - "title": "Band 1 (coastal)" - }, - "B2": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B2.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [ - 1 - ], - "title": "Band 2 (blue)" - }, - "B3": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B3.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [ - 2 - ], - "title": "Band 3 (green)" - }, - "B4": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B4.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [ - 3 - ], - "title": "Band 4 (red)" - }, - "B5": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B5.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [ - 4 - ], - "title": "Band 5 (nir)" - }, - "B6": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B6.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [ - 5 - ], - "title": "Band 6 (swir16)" - }, - "B7": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B7.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [ - 6 - ], - "title": "Band 7 (swir22)" - }, - "B8": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B8.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [ - 7 - ], - "title": "Band 8 (pan)" - }, - "B9": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B9.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [ - 8 - ], - "title": "Band 9 (cirrus)" - }, - "B10": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B10.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [ - 9 - ], - "title": "Band 10 (lwir)" - }, - "B11": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B11.TIF", - "type": "image/tiff; application=geotiff", - "eo:bands": [ - 10 - ], - "title": "Band 11 (lwir)" - }, - "BQA": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_BQA.TIF", - "title": "Band quality data", - "type": "image/tiff; application=geotiff" - }, - "MTL": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_MTL.txt", - "title": "original metadata file", - "type": "text/plain" - }, - "thumbnail": { - "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_thumb_large.jpg", - "title": "Thumbnail image", - "type": "image/jpeg" - }, - "index": { - "type": "text/html", - "title": "HTML index page" - } - }, - "links": [ - { - "rel": "self", - "href": "https://landsat-stac.s3.amazonaws.com/landsat-8-l1/107/018/2018-10-01/LC08_L1TP_107018_20181001_20181001_01_RT.json" - }, - { - "rel": "parent", - "href": "https://landsat-stac.s3.amazonaws.com/landsat-8-l1/107/018/catalog.json" - }, - { - "rel": "root", - "href": "https://landsat-stac.s3.amazonaws.com/catalog.json" - } - ] -} diff --git a/extensions/README.md b/extensions/README.md index d678aaef7..1be97c9ed 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -49,7 +49,7 @@ An extension can add new fields to STAC entities (content extension), or can add | [Checksum](checksum/README.md) | checksum | checksum | Item, Catalog, Collection | *Proposal* | Provides a way to specify file checksums for assets and links in Items, Catalogs and Collections. | | [Collection Assets](collection-assets/README.md) | collection-assets | - | Collection | *Proposal* | Provides a way to specify assets available on the collection-level. | | [Data Cube](datacube/README.md) | datacube | cube | Item, Collection | *Proposal* | Data Cube related metadata, especially to describe their dimensions. | -| [Electro-Optical](eo/README.md) | eo | eo | Item | *Pilot* | Covers electro-optical data that represents a snapshot of the earth for a single date and time. It could consist of multiple spectral bands, for example visible bands, infrared bands, red edge bands and panchromatic bands. The extension provides common fields like bands, cloud cover, gsd and more. | +| [Electro-Optical](eo/README.md) | eo | eo | Item | *Proposal* | Covers electro-optical data that represents a snapshot of the earth for a single date and time. It could consist of multiple spectral bands, for example visible bands, infrared bands, red edge bands and panchromatic bands. The extension provides common fields like bands, cloud cover, gsd and more. | | [Item Asset Definition](item-assets/README.md) | item-assets | - | Collection | *Proposal* | Provides a way to specify details about what assets may be found in Items belonging to a collection. | | [Label](label/README.md) | label | label | Item | *Proposal* | Items that relate labeled AOIs with source imagery | | [Point Cloud](pointcloud/README.md) | pointcloud | pc | Item | *Proposal* | Provides a way to describe point cloud datasets. The point clouds can come from either active or passive sensors, and data is frequently acquired using tools such as LiDAR or coincidence-matched imagery. | diff --git a/extensions/eo/README.md b/extensions/eo/README.md index c13d7b1fc..c5e1b2b30 100644 --- a/extensions/eo/README.md +++ b/extensions/eo/README.md @@ -4,7 +4,7 @@ - **Identifier: eo** - **Field Name Prefix: eo** - **Scope: Item** -- **Extension [Maturity Classification](../README.md#extension-maturity): Pilot** +- **Extension [Maturity Classification](../README.md#extension-maturity): Proposal** This document explains the fields of the STAC Electro-Optical (EO) Extension to a STAC Item. EO data is considered to be data that represents a snapshot of the earth for a single date and time. It @@ -12,30 +12,27 @@ could consist of multiple spectral bands in any part of the electromagnetic spec data include sensors with visible, short-wave and mid-wave IR bands (e.g., the OLI instrument on Landsat-8), long-wave IR bands (e.g. TIRS aboard Landsat-8). -**Note:** This extension used to be called Earth Observation with a much broader scope (including -Synthetic Aperture Radar (SAR), etc). The decision was made to limit this to what was already its -natural focus, and encourage other sensors to make their own extensions. Once that happens some of -these fields will evolve to higher level extensions. In the meantime other implementations are welcome -to reuse the names and definitions here. - If the data has been collected by a satellite, it is strongly recommended to use the [`sat` extension](../sat/README.md), which in turn requires the [Instrument Fields](../../item-spec/common-metadata.md#instrument). If the data has been collected on an airborne platform it is strongly recommended to use the [Instrument Fields](../../item-spec/common-metadata.md#instrument). For defining view geometry of data, it is strongly recommended to use the [`view` extension](../view/README.md). -- [Example (Landsat 8)](examples/example-landsat8.json) +- Examples: + - [Landsat 8 with bands in assets](examples/example-landsat8.json) + - [Example with bands in Item properties](../../item-spec/examples/sample-full.json) + - [Landsat 8 with bands in Item Asset Definition and Collection Summaries](../item-assets/examples/example-landsat8.json) - [JSON Schema](json-schema/schema.json) ## Item fields -| Field Name | Type | Description | -| ---------------- | ------------------------ | ----------- | -| eo:bands | [[Band Object](#band-object)] | **REQUIRED.** This is a list of the available bands where each item is a [Band Object](#band-object). | -| eo:cloud_cover | number | Estimate of cloud cover as a percentage (0-100) of the entire scene. If not available the field should not be provided. | +| Field Name | Type | Description | +| -------------- | ------------------------------ | ----------- | +| eo:bands | \[[Band Object](#band-object)] | This is a list of the available bands where each item is a [Band Object](#band-object). | +| eo:cloud_cover | number | Estimate of cloud cover as a percentage (0-100) of the entire scene. If not available the field should not be provided. | ### Band Object -| Field Name | Type | Description | -| ------------------- | ------ | ------------------------------------------------------------ | +| Field Name | Type | Description | +| ------------------- | ------ | ----------- | | name | string | The name of the band (e.g., "B01", "B02", "B1", "B5", "QA"). | | common_name | string | The name commonly used to refer to the band to make it easier to search for bands across instruments. See the [list of accepted common names](#common-band-names). | | description | string | Description to fully explain the band. [CommonMark 0.29](http://commonmark.org/) syntax MAY be used for rich text representation. | @@ -60,7 +57,7 @@ numbers of several popular instruments. | green | 0.50 - 0.60 | 2 | 3 | 3 | 4 | | red | 0.60 - 0.70 | 3 | 4 | 4 | 1 | | yellow | 0.58 - 0.62 | | | | | -| pan | 0.50 - 0.70 | 8 (*L7 only*) | 8 | | | +| pan | 0.50 - 0.70 | 8 (*L7 only*) | 8 | | | | rededge | 0.70 - 0.75 | | | | | | nir | 0.75 - 1.00 | 4 | | 8 | 2 | | nir08 | 0.75 - 0.90 | | 5 | 8a | | diff --git a/extensions/eo/examples/example-landsat8.json b/extensions/eo/examples/example-landsat8.json index 261e1aa81..406b69179 100644 --- a/extensions/eo/examples/example-landsat8.json +++ b/extensions/eo/examples/example-landsat8.json @@ -51,75 +51,7 @@ "view:off_nadir": 0, "landsat:path": 107, "landsat:row": 18, - "eo:cloud_cover": 78, - "eo:bands": [ - { - "name": "B1", - "common_name": "coastal", - "center_wavelength": 0.44, - "full_width_half_max": 0.02 - }, - { - "name": "B2", - "common_name": "blue", - "center_wavelength": 0.48, - "full_width_half_max": 0.06 - }, - { - "name": "B3", - "common_name": "green", - "center_wavelength": 0.56, - "full_width_half_max": 0.06 - }, - { - "name": "B4", - "common_name": "red", - "center_wavelength": 0.65, - "full_width_half_max": 0.04 - }, - { - "name": "B5", - "common_name": "nir", - "center_wavelength": 0.86, - "full_width_half_max": 0.03 - }, - { - "name": "B6", - "common_name": "swir16", - "center_wavelength": 1.6, - "full_width_half_max": 0.08 - }, - { - "name": "B7", - "common_name": "swir22", - "center_wavelength": 2.2, - "full_width_half_max": 0.2 - }, - { - "name": "B8", - "common_name": "pan", - "center_wavelength": 0.59, - "full_width_half_max": 0.18 - }, - { - "name": "B9", - "common_name": "cirrus", - "center_wavelength": 1.37, - "full_width_half_max": 0.02 - }, - { - "name": "B10", - "common_name": "lwir11", - "center_wavelength": 10.9, - "full_width_half_max": 0.8 - }, - { - "name": "B11", - "common_name": "lwir12", - "center_wavelength": 12, - "full_width_half_max": 1 - } - ] + "eo:cloud_cover": 78 }, "assets": { "ANG": { @@ -131,7 +63,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B1.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 0 + { + "name": "B1", + "common_name": "coastal", + "center_wavelength": 0.44, + "full_width_half_max": 0.02 + } ], "title": "Band 1 (coastal)" }, @@ -139,7 +76,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B2.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 1 + { + "name": "B2", + "common_name": "blue", + "center_wavelength": 0.48, + "full_width_half_max": 0.06 + } ], "title": "Band 2 (blue)" }, @@ -147,7 +89,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B3.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 2 + { + "name": "B3", + "common_name": "green", + "center_wavelength": 0.56, + "full_width_half_max": 0.06 + } ], "title": "Band 3 (green)" }, @@ -155,7 +102,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B4.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 3 + { + "name": "B4", + "common_name": "red", + "center_wavelength": 0.65, + "full_width_half_max": 0.04 + } ], "title": "Band 4 (red)" }, @@ -163,7 +115,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B5.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 4 + { + "name": "B5", + "common_name": "nir", + "center_wavelength": 0.86, + "full_width_half_max": 0.03 + } ], "title": "Band 5 (nir)" }, @@ -171,7 +128,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B6.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 5 + { + "name": "B6", + "common_name": "swir16", + "center_wavelength": 1.6, + "full_width_half_max": 0.08 + } ], "title": "Band 6 (swir16)" }, @@ -179,7 +141,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B7.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 6 + { + "name": "B7", + "common_name": "swir22", + "center_wavelength": 2.2, + "full_width_half_max": 0.2 + } ], "title": "Band 7 (swir22)" }, @@ -187,7 +154,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B8.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 7 + { + "name": "B8", + "common_name": "pan", + "center_wavelength": 0.59, + "full_width_half_max": 0.18 + } ], "title": "Band 8 (pan)" }, @@ -195,7 +167,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B9.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 8 + { + "name": "B9", + "common_name": "cirrus", + "center_wavelength": 1.37, + "full_width_half_max": 0.02 + } ], "title": "Band 9 (cirrus)" }, @@ -203,7 +180,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B10.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 9 + { + "name": "B10", + "common_name": "lwir11", + "center_wavelength": 10.9, + "full_width_half_max": 0.8 + } ], "title": "Band 10 (lwir)" }, @@ -211,7 +193,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B11.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 10 + { + "name": "B11", + "common_name": "lwir12", + "center_wavelength": 12, + "full_width_half_max": 1 + } ], "title": "Band 11 (lwir)" }, diff --git a/extensions/eo/json-schema/schema.json b/extensions/eo/json-schema/schema.json index 7fd760498..2d2bbd0ad 100644 --- a/extensions/eo/json-schema/schema.json +++ b/extensions/eo/json-schema/schema.json @@ -21,33 +21,9 @@ "properties": { "properties": { "type": "object", - "required": [ - "eo:bands" - ], "properties": { "eo:bands": { - "title": "Bands", - "type": "array", - "items": { - "properties": { - "name": { - "title": "Name of the band", - "type": "string" - }, - "common_name": { - "title": "Common Name of the band", - "type": "string" - }, - "center_wavelength": { - "title": "Center Wavelength", - "type": "number" - }, - "full_width_half_max": { - "title": "Full Width Half Max (FWHM)", - "type": "number" - } - } - } + "$ref": "#/definitions/bands" }, "eo:cloud_cover": { "title": "Cloud Cover", @@ -63,18 +39,37 @@ "type": "object", "properties": { "eo:bands": { - "title": "Band References", - "type": "array", - "minItems": 1, - "items": { - "type": "integer", - "minimum": 0 - } + "$ref": "#/definitions/bands" } } } } } + }, + "bands": { + "title": "Bands", + "type": "array", + "minItems": 1, + "items": { + "properties": { + "name": { + "title": "Name of the band", + "type": "string" + }, + "common_name": { + "title": "Common Name of the band", + "type": "string" + }, + "center_wavelength": { + "title": "Center Wavelength", + "type": "number" + }, + "full_width_half_max": { + "title": "Full Width Half Max (FWHM)", + "type": "number" + } + } + } } } } \ No newline at end of file diff --git a/extensions/item-assets/examples/example-landsat8.json b/extensions/item-assets/examples/example-landsat8.json index 3b9269c40..a2ee1bcae 100644 --- a/extensions/item-assets/examples/example-landsat8.json +++ b/extensions/item-assets/examples/example-landsat8.json @@ -155,7 +155,12 @@ "B1": { "type": "image/tiff; application=geotiff", "eo:bands": [ - 0 + { + "name": "B1", + "common_name": "coastal", + "center_wavelength": 0.44, + "full_width_half_max": 0.02 + } ], "title": "Coastal Band (B1)", "description": "Coastal Band Top Of the Atmosphere" @@ -163,7 +168,12 @@ "B2": { "type": "image/tiff; application=geotiff", "eo:bands": [ - 1 + { + "name": "B2", + "common_name": "blue", + "center_wavelength": 0.48, + "full_width_half_max": 0.06 + } ], "title": "Blue Band (B2)", "description": "Blue Band Top Of the Atmosphere" @@ -171,7 +181,12 @@ "B3": { "type": "image/tiff; application=geotiff", "eo:bands": [ - 2 + { + "name": "B3", + "common_name": "green", + "center_wavelength": 0.56, + "full_width_half_max": 0.06 + } ], "title": "Green Band (B3)", "description": "Green Band (B3) Top Of the Atmosphere" @@ -179,7 +194,12 @@ "B4": { "type": "image/tiff; application=geotiff", "eo:bands": [ - 3 + { + "name": "B4", + "common_name": "red", + "center_wavelength": 0.65, + "full_width_half_max": 0.04 + } ], "title": "Red Band (B4)", "description": "Red Band (B4) Top Of the Atmosphere" @@ -187,7 +207,12 @@ "B5": { "type": "image/tiff; application=geotiff", "eo:bands": [ - 4 + { + "name": "B5", + "common_name": "nir", + "center_wavelength": 0.86, + "full_width_half_max": 0.03 + } ], "title": "NIR Band (B5)", "description": "NIR Band (B5) Top Of the Atmosphere" @@ -195,7 +220,12 @@ "B6": { "type": "image/tiff; application=geotiff", "eo:bands": [ - 5 + { + "name": "B6", + "common_name": "swir16", + "center_wavelength": 1.6, + "full_width_half_max": 0.08 + } ], "title": "SWIR Band (B6)", "description": "SWIR Band at 1.6um (B6) Top Of the Atmosphere" @@ -203,7 +233,12 @@ "B7": { "type": "image/tiff; application=geotiff", "eo:bands": [ - 6 + { + "name": "B7", + "common_name": "swir22", + "center_wavelength": 2.2, + "full_width_half_max": 0.2 + } ], "title": "SWIR Band (B7)", "description": "SWIR Band at 2.2um (B7) Top Of the Atmosphere" @@ -211,7 +246,12 @@ "B8": { "type": "image/tiff; application=geotiff", "eo:bands": [ - 7 + { + "name": "B8", + "common_name": "pan", + "center_wavelength": 0.59, + "full_width_half_max": 0.18 + } ], "title": "Panchromatic Band (B8)", "description": "Panchromatic Band (B8) Top Of the Atmosphere" @@ -219,7 +259,12 @@ "B9": { "type": "image/tiff; application=geotiff", "eo:bands": [ - 8 + { + "name": "B9", + "common_name": "cirrus", + "center_wavelength": 1.37, + "full_width_half_max": 0.02 + } ], "title": "Cirrus Band (B9)", "description": "Cirrus Band (B9) Top Of the Atmosphere - for cirrus cloud detection" @@ -227,7 +272,12 @@ "B10": { "type": "image/tiff; application=geotiff", "eo:bands": [ - 9 + { + "name": "B10", + "common_name": "lwir11", + "center_wavelength": 10.9, + "full_width_half_max": 0.8 + } ], "title": "LWIR Band (B10)", "description": "Long-wave IR Band at 11um (B10) Top Of the Atmosphere" @@ -235,7 +285,12 @@ "B11": { "type": "image/tiff; application=geotiff", "eo:bands": [ - 10 + { + "name": "B11", + "common_name": "lwir12", + "center_wavelength": 12, + "full_width_half_max": 1 + } ], "title": "LWIR Band (B11)", "description": "Long-wave IR Band at 12um (B11) Top Of the Atmosphere" diff --git a/extensions/projection/examples/example-landsat8.json b/extensions/projection/examples/example-landsat8.json index 0c347e3d2..644513f3a 100644 --- a/extensions/projection/examples/example-landsat8.json +++ b/extensions/projection/examples/example-landsat8.json @@ -45,7 +45,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B1.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 0 + { + "name": "B1", + "common_name": "coastal", + "center_wavelength": 0.44, + "full_width_half_max": 0.02 + } ], "title": "Band 1 (coastal)" }, @@ -53,7 +58,12 @@ "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC08_L1TP_107018_20181001_20181001_01_RT/LC08_L1TP_107018_20181001_20181001_01_RT_B8.TIF", "type": "image/tiff; application=geotiff", "eo:bands": [ - 1 + { + "name": "B8", + "common_name": "panchromatic", + "center_wavelength": 0.59, + "full_width_half_max": 0.18 + } ], "title": "Band 8 (panchromatic)", "proj:shape": [16781, 16621], @@ -220,21 +230,7 @@ "lon": -101.34448382627504 }, "proj:shape": [8391, 8311], - "proj:transform": [30.0, 0.0, 224985.0, 0.0, -30.0, 6790215.0, 0.0, 0.0, 1.0], - "eo:bands": [ - { - "name": "B1", - "common_name": "coastal", - "center_wavelength": 0.44, - "full_width_half_max": 0.02 - }, - { - "name": "B8", - "common_name": "panchromatic", - "center_wavelength": 0.59, - "full_width_half_max": 0.18 - } - ] + "proj:transform": [30.0, 0.0, 224985.0, 0.0, -30.0, 6790215.0, 0.0, 0.0, 1.0] }, "links": [ { diff --git a/extensions/single-file-stac/examples/example-search.json b/extensions/single-file-stac/examples/example-search.json index e88f3e466..4a8e00fd8 100644 --- a/extensions/single-file-stac/examples/example-search.json +++ b/extensions/single-file-stac/examples/example-search.json @@ -8,6 +8,12 @@ "type": "FeatureCollection", "features": [ { + "stac_version": "1.0.0-beta.1", + "stac_extensions": [ + "projection", + "view", + "https://example.com/stac/landsat-extension/1.0/schema.json" + ], "type": "Feature", "id": "LC80370332018039LGN00", "collection": "landsat-8-l1", @@ -48,9 +54,6 @@ "datetime": "2018-02-08T18:02:15.719478+00:00", "view:sun_azimuth": 152.63804142, "view:sun_elevation": 31.82216637, - "eo:cloud_cover": 19, - "eo:row": "033", - "eo:column": "037", "landsat:product_id": "LC08_L1TP_037033_20180208_20180221_01_T1", "landsat:scene_id": "LC80370332018039LGN00", "landsat:processing_level": "L1TP", @@ -69,90 +72,57 @@ "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_thumb_large.jpg" }, "B1": { - "type": "image/x.geotiff", - "eo:bands": [ - 0 - ], + "type": "image/tiff; application=geotiff", "title": "Band 1 (coastal)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_B1.TIF" }, "B2": { - "type": "image/x.geotiff", - "eo:bands": [ - 1 - ], + "type": "image/tiff; application=geotiff", "title": "Band 2 (blue)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_B2.TIF" }, "B3": { - "type": "image/x.geotiff", - "eo:bands": [ - 2 - ], + "type": "image/tiff; application=geotiff", "title": "Band 3 (green)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_B3.TIF" }, "B4": { - "type": "image/x.geotiff", - "eo:bands": [ - 3 - ], + "type": "image/tiff; application=geotiff", "title": "Band 4 (red)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_B4.TIF" }, "B5": { - "type": "image/x.geotiff", - "eo:bands": [ - 4 - ], + "type": "image/tiff; application=geotiff", "title": "Band 5 (nir)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_B5.TIF" }, "B6": { - "type": "image/x.geotiff", - "eo:bands": [ - 5 - ], + "type": "image/tiff; application=geotiff", "title": "Band 6 (swir16)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_B6.TIF" }, "B7": { - "type": "image/x.geotiff", - "eo:bands": [ - 6 - ], + "type": "image/tiff; application=geotiff", "title": "Band 7 (swir22)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_B7.TIF" }, "B8": { - "type": "image/x.geotiff", - "eo:bands": [ - 7 - ], + "type": "image/tiff; application=geotiff", "title": "Band 8 (pan)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_B8.TIF" }, "B9": { - "type": "image/x.geotiff", - "eo:bands": [ - 8 - ], + "type": "image/tiff; application=geotiff", "title": "Band 9 (cirrus)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_B9.TIF" }, "B10": { - "type": "image/x.geotiff", - "eo:bands": [ - 9 - ], + "type": "image/tiff; application=geotiff", "title": "Band 10 (lwir)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_B10.TIF" }, "B11": { - "type": "image/x.geotiff", - "eo:bands": [ - 10 - ], + "type": "image/tiff; application=geotiff", "title": "Band 11 (lwir)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_B11.TIF" }, @@ -168,13 +138,19 @@ }, "BQA": { "title": "Band quality data", - "type": "image/x.geotiff", + "type": "image/tiff; application=geotiff", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/037/033/LC08_L1TP_037033_20180208_20180221_01_T1/LC08_L1TP_037033_20180208_20180221_01_T1_BQA.TIF" } }, "links": [] }, { + "stac_version": "1.0.0-beta.1", + "stac_extensions": [ + "projection", + "view", + "https://example.com/stac/landsat-extension/1.0/schema.json" + ], "type": "Feature", "id": "LC80340332018034LGN00", "collection": "landsat-8-l1", @@ -212,12 +188,9 @@ ] }, "properties": { - "datetime": "2018-02-03T17:43:44.623405+00:00", + "datetime": "2018-02-03T17:43:44Z", "view:sun_azimuth": 153.39513457, "view:sun_elevation": 30.41894816, - "eo:cloud_cover": 36, - "eo:row": "033", - "eo:column": "034", "landsat:product_id": "LC08_L1TP_034033_20180203_20180220_01_T1", "landsat:scene_id": "LC80340332018034LGN00", "landsat:processing_level": "L1TP", @@ -236,90 +209,57 @@ "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_thumb_large.jpg" }, "B1": { - "type": "image/x.geotiff", - "eo:bands": [ - 0 - ], + "type": "image/tiff; application=geotiff", "title": "Band 1 (coastal)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_B1.TIF" }, "B2": { - "type": "image/x.geotiff", - "eo:bands": [ - 1 - ], + "type": "image/tiff; application=geotiff", "title": "Band 2 (blue)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_B2.TIF" }, "B3": { - "type": "image/x.geotiff", - "eo:bands": [ - 2 - ], + "type": "image/tiff; application=geotiff", "title": "Band 3 (green)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_B3.TIF" }, "B4": { - "type": "image/x.geotiff", - "eo:bands": [ - 3 - ], + "type": "image/tiff; application=geotiff", "title": "Band 4 (red)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_B4.TIF" }, "B5": { - "type": "image/x.geotiff", - "eo:bands": [ - 4 - ], + "type": "image/tiff; application=geotiff", "title": "Band 5 (nir)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_B5.TIF" }, "B6": { - "type": "image/x.geotiff", - "eo:bands": [ - 5 - ], + "type": "image/tiff; application=geotiff", "title": "Band 6 (swir16)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_B6.TIF" }, "B7": { - "type": "image/x.geotiff", - "eo:bands": [ - 6 - ], + "type": "image/tiff; application=geotiff", "title": "Band 7 (swir22)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_B7.TIF" }, "B8": { - "type": "image/x.geotiff", - "eo:bands": [ - 7 - ], + "type": "image/tiff; application=geotiff", "title": "Band 8 (pan)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_B8.TIF" }, "B9": { - "type": "image/x.geotiff", - "eo:bands": [ - 8 - ], + "type": "image/tiff; application=geotiff", "title": "Band 9 (cirrus)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_B9.TIF" }, "B10": { - "type": "image/x.geotiff", - "eo:bands": [ - 9 - ], + "type": "image/tiff; application=geotiff", "title": "Band 10 (lwir)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_B10.TIF" }, "B11": { - "type": "image/x.geotiff", - "eo:bands": [ - 10 - ], + "type": "image/tiff; application=geotiff", "title": "Band 11 (lwir)", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_B11.TIF" }, @@ -335,7 +275,7 @@ }, "BQA": { "title": "Band quality data", - "type": "image/x.geotiff", + "type": "image/tiff; application=geotiff", "href": "https://s3-us-west-2.amazonaws.com/landsat-pds/c1/L8/034/033/LC08_L1TP_034033_20180203_20180220_01_T1/LC08_L1TP_034033_20180203_20180220_01_T1_BQA.TIF" } }, @@ -403,75 +343,7 @@ "gsd": [15], "platform": ["landsat-8"], "instruments": ["oli", "tirs"], - "view:off_nadir": [0], - "eo:bands": [ - { - "name": "B1", - "common_name": "coastal", - "center_wavelength": 0.44, - "full_width_half_max": 0.02 - }, - { - "name": "B2", - "common_name": "blue", - "center_wavelength": 0.48, - "full_width_half_max": 0.06 - }, - { - "name": "B3", - "common_name": "green", - "center_wavelength": 0.56, - "full_width_half_max": 0.06 - }, - { - "name": "B4", - "common_name": "red", - "center_wavelength": 0.65, - "full_width_half_max": 0.04 - }, - { - "name": "B5", - "common_name": "nir", - "center_wavelength": 0.86, - "full_width_half_max": 0.03 - }, - { - "name": "B6", - "common_name": "swir16", - "center_wavelength": 1.6, - "full_width_half_max": 0.08 - }, - { - "name": "B7", - "common_name": "swir22", - "center_wavelength": 2.2, - "full_width_half_max": 0.2 - }, - { - "name": "B8", - "common_name": "pan", - "center_wavelength": 0.59, - "full_width_half_max": 0.18 - }, - { - "name": "B9", - "common_name": "cirrus", - "center_wavelength": 1.37, - "full_width_half_max": 0.02 - }, - { - "name": "B10", - "common_name": "lwir11", - "center_wavelength": 10.9, - "full_width_half_max": 0.8 - }, - { - "name": "B11", - "common_name": "lwir12", - "center_wavelength": 12, - "full_width_half_max": 1 - } - ] + "view:off_nadir": [0] }, "item_assets": { "index": { @@ -483,80 +355,47 @@ "type": "image/jpeg" }, "B1": { - "type": "image/x.geotiff", - "eo:bands": [ - 0 - ], + "type": "image/tiff; application=geotiff", "title": "Band 1 (coastal)" }, "B2": { - "type": "image/x.geotiff", - "eo:bands": [ - 1 - ], + "type": "image/tiff; application=geotiff", "title": "Band 2 (blue)" }, "B3": { - "type": "image/x.geotiff", - "eo:bands": [ - 2 - ], + "type": "image/tiff; application=geotiff", "title": "Band 3 (green)" }, "B4": { - "type": "image/x.geotiff", - "eo:bands": [ - 3 - ], + "type": "image/tiff; application=geotiff", "title": "Band 4 (red)" }, "B5": { - "type": "image/x.geotiff", - "eo:bands": [ - 4 - ], + "type": "image/tiff; application=geotiff", "title": "Band 5 (nir)" }, "B6": { - "type": "image/x.geotiff", - "eo:bands": [ - 5 - ], + "type": "image/tiff; application=geotiff", "title": "Band 6 (swir16)" }, "B7": { - "type": "image/x.geotiff", - "eo:bands": [ - 6 - ], + "type": "image/tiff; application=geotiff", "title": "Band 7 (swir22)" }, "B8": { - "type": "image/x.geotiff", - "eo:bands": [ - 7 - ], + "type": "image/tiff; application=geotiff", "title": "Band 8 (pan)" }, "B9": { - "type": "image/x.geotiff", - "eo:bands": [ - 8 - ], + "type": "image/tiff; application=geotiff", "title": "Band 9 (cirrus)" }, "B10": { - "type": "image/x.geotiff", - "eo:bands": [ - 9 - ], + "type": "image/tiff; application=geotiff", "title": "Band 10 (lwir)" }, "B11": { - "type": "image/x.geotiff", - "eo:bands": [ - 10 - ], + "type": "image/tiff; application=geotiff", "title": "Band 11 (lwir)" }, "ANG": { @@ -569,7 +408,7 @@ }, "BQA": { "title": "Band quality data", - "type": "image/x.geotiff" + "type": "image/tiff; application=geotiff" } }, "links": [ diff --git a/extensions/tiled-assets/examples/example-dimension.json b/extensions/tiled-assets/examples/example-dimension.json index e92463b67..baad8ed62 100644 --- a/extensions/tiled-assets/examples/example-dimension.json +++ b/extensions/tiled-assets/examples/example-dimension.json @@ -46,36 +46,6 @@ "msi" ], "gsd": 10, - "eo:bands": [ - { - "name": "B2", - "common_name": "blue" - }, - { - "name": "B3", - "common_name": "green" - }, - { - "name": "B4", - "common_name": "red" - }, - { - "name": "B5" - }, - { - "name": "B6" - }, - { - "name": "B7" - }, - { - "name": "B8", - "common_name": "nir" - }, - { - "name": "B11" - } - ], "cube:dimensions": { "timeSpan": { "type": "enumeration", @@ -94,14 +64,20 @@ "href": "http://cloudless.eox.at/sen2l2a-cog-converted/{cube:dimensions:timeSpan}_s2_l2a/{cube:dimensions:timeSpan}_s2_l2a_B02.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 0 + { + "name": "B2", + "common_name": "blue" + } ] }, "B03": { "href": "http://cloudless.eox.at/sen2l2a-cog-converted/{cube:dimensions:timeSpan}_s2_l2a/{cube:dimensions:timeSpan}_s2_l2a_B03.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 1 + { + "name": "B3", + "common_name": "green" + } ] }, "B04": { @@ -109,7 +85,10 @@ "title": "", "type": "image/tiff; application=geotiff", "eo:bands": [ - 2 + { + "name": "B4", + "common_name": "red" + } ] }, "B05": { @@ -117,35 +96,46 @@ "title": "", "type": "image/tiff; application=geotiff", "eo:bands": [ - 3 + { + "name": "B5" + } ] }, "B06": { "href": "http://cloudless.eox.at/sen2l2a-cog-converted/{cube:dimensions:timeSpan}_s2_l2a/{cube:dimensions:timeSpan}_s2_l2a_B06.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 4 + { + "name": "B6" + } ] }, "B07": { "href": "http://cloudless.eox.at/sen2l2a-cog-converted/{cube:dimensions:timeSpan}_s2_l2a/{cube:dimensions:timeSpan}_s2_l2a_B07.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 5 + { + "name": "B7" + } ] }, "B08": { "href": "http://cloudless.eox.at/sen2l2a-cog-converted/{cube:dimensions:timeSpan}_s2_l2a/{cube:dimensions:timeSpan}_s2_l2a_B08.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 6 + { + "name": "B8", + "common_name": "nir" + } ] }, "B11": { "href": "http://cloudless.eox.at/sen2l2a-cog-converted/{cube:dimensions:timeSpan}_s2_l2a/{cube:dimensions:timeSpan}_s2_l2a_B11.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 7 + { + "name": "B11" + } ] } }, @@ -154,56 +144,76 @@ "href": "http://cloudless.eox.at/sen2l2a-cog-converted/2018-02-26_2018-03-11_s2_l2a/2018-02-26_2018-03-11_s2_l2a_B02.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 0 + { + "name": "B2", + "common_name": "blue" + } ] }, "B03": { "href": "http://cloudless.eox.at/sen2l2a-cog-converted/2018-02-26_2018-03-11_s2_l2a/2018-02-26_2018-03-11_s2_l2a_B03.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 1 + { + "name": "B3", + "common_name": "green" + } ] }, "B04": { "href": "http://cloudless.eox.at/sen2l2a-cog-converted/2018-02-26_2018-03-11_s2_l2a/2018-02-26_2018-03-11_s2_l2a_B04.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 2 + { + "name": "B4", + "common_name": "red" + } ] }, "B05": { "href": "http://cloudless.eox.at/sen2l2a-cog-converted/2018-02-26_2018-03-11_s2_l2a/2018-02-26_2018-03-11_s2_l2a_B05.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 3 + { + "name": "B5" + } ] }, "B06": { "href": "http://cloudless.eox.at/sen2l2a-cog-converted/2018-02-26_2018-03-11_s2_l2a/2018-02-26_2018-03-11_s2_l2a_B06.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 4 + { + "name": "B6" + } ] }, "B07": { "href": "http://cloudless.eox.at/sen2l2a-cog-converted/2018-02-26_2018-03-11_s2_l2a/2018-02-26_2018-03-11_s2_l2a_B07.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 5 + { + "name": "B7" + } ] }, "B08": { "href": "http://cloudless.eox.at/sen2l2a-cog-converted/2018-02-26_2018-03-11_s2_l2a/2018-02-26_2018-03-11_s2_l2a_B08.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 6 + { + "name": "B8", + "common_name": "nir" + } ] }, "B11": { "href": "http://cloudless.eox.at/sen2l2a-cog-converted/2018-02-26_2018-03-11_s2_l2a/2018-02-26_2018-03-11_s2_l2a_B11.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 7 + { + "name": "B11" + } ] } }, diff --git a/extensions/tiled-assets/examples/example-tiled.json b/extensions/tiled-assets/examples/example-tiled.json index 4d8c469d3..8bc58d53b 100644 --- a/extensions/tiled-assets/examples/example-tiled.json +++ b/extensions/tiled-assets/examples/example-tiled.json @@ -49,24 +49,6 @@ "msi" ], "gsd": 10, - "eo:bands": [ - { - "name": "B2", - "common_name": "blue" - }, - { - "name": "B3", - "common_name": "green" - }, - { - "name": "B4", - "common_name": "red" - }, - { - "name": "B8", - "common_name": "nir" - } - ], "tiles:tile_matrix_links": { "WebMercatorQuad": { "url": "http://schemas.opengis.net/tms/1.0/json/examples/WebMercatorQuad.json", @@ -193,38 +175,62 @@ "href": "http://cloudless.eox.at/s2cloudless_2018/{TileMatrixSet}/{TileRow}/{TileCol}.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 2, - 1, - 0, - 3 + { + "name": "B4", + "common_name": "red" + }, + { + "name": "B3", + "common_name": "green" + }, + { + "name": "B2", + "common_name": "blue" + }, + { + "name": "B8", + "common_name": "nir" + } ] }, "B02": { "href": "http://cloudless.eox.at/s2cloudless_2018/{TileMatrixSet}/{TileRow}/{TileCol}_B02.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 0 + { + "name": "B2", + "common_name": "blue" + } ] }, "B03": { "href": "http://cloudless.eox.at/s2cloudless_2018/{TileMatrixSet}/{TileRow}/{TileCol}_B03.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 1 + { + "name": "B3", + "common_name": "green" + } ] }, "B04": { "href": "http://cloudless.eox.at/s2cloudless_2018/{TileMatrixSet}/{TileRow}/{TileCol}_B04.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 2 + { + "name": "B4", + "common_name": "red" + } ] }, "B08": { "href": "http://cloudless.eox.at/s2cloudless_2018/{TileMatrixSet}/{TileRow}/{TileCol}_B08.tif", "type": "image/tiff; application=geotiff", "eo:bands": [ - 3 + { + "name": "B8", + "common_name": "nir" + } ] } }, @@ -234,10 +240,22 @@ "title": "Overview of the whole tiled dataset.", "type": "image/tiff; application=geotiff", "eo:bands": [ - 2, - 1, - 0, - 3 + { + "name": "B4", + "common_name": "red" + }, + { + "name": "B3", + "common_name": "green" + }, + { + "name": "B2", + "common_name": "blue" + }, + { + "name": "B8", + "common_name": "nir" + } ] } }, diff --git a/item-spec/examples/CBERS_4_MUX_20181029_177_106_L4.json b/item-spec/examples/CBERS_4_MUX_20181029_177_106_L4.json index eec0df9b2..f171bbd09 100755 --- a/item-spec/examples/CBERS_4_MUX_20181029_177_106_L4.json +++ b/item-spec/examples/CBERS_4_MUX_20181029_177_106_L4.json @@ -1,7 +1,6 @@ { "stac_version": "1.0.0-beta.1", "stac_extensions": [ - "eo", "proj", "view", "https://example.com/stac/cbers-extension/1.0/schema.json" @@ -82,31 +81,19 @@ }, "B5": { "href": "s3://cbers-pds/CBERS4/MUX/177/106/CBERS_4_MUX_20181029_177_106_L4/CBERS_4_MUX_20181029_177_106_L4_BAND5.tif", - "type": "image/tiff; application=geotiff; profile=cloud-optimized", - "eo:bands": [ - 0 - ] + "type": "image/tiff; application=geotiff; profile=cloud-optimized" }, "B6": { "href": "s3://cbers-pds/CBERS4/MUX/177/106/CBERS_4_MUX_20181029_177_106_L4/CBERS_4_MUX_20181029_177_106_L4_BAND6.tif", - "type": "image/tiff; application=geotiff; profile=cloud-optimized", - "eo:bands": [ - 1 - ] + "type": "image/tiff; application=geotiff; profile=cloud-optimized" }, "B7": { "href": "s3://cbers-pds/CBERS4/MUX/177/106/CBERS_4_MUX_20181029_177_106_L4/CBERS_4_MUX_20181029_177_106_L4_BAND7.tif", - "type": "image/tiff; application=geotiff; profile=cloud-optimized", - "eo:bands": [ - 2 - ] + "type": "image/tiff; application=geotiff; profile=cloud-optimized" }, "B8": { "href": "s3://cbers-pds/CBERS4/MUX/177/106/CBERS_4_MUX_20181029_177_106_L4/CBERS_4_MUX_20181029_177_106_L4_BAND8.tif", - "type": "image/tiff; application=geotiff; profile=cloud-optimized", - "eo:bands": [ - 3 - ] + "type": "image/tiff; application=geotiff; profile=cloud-optimized" } } } diff --git a/item-spec/examples/landsat8-sample.json b/item-spec/examples/landsat8-sample.json index 5a3e0f630..e4bae230a 100644 --- a/item-spec/examples/landsat8-sample.json +++ b/item-spec/examples/landsat8-sample.json @@ -1,13 +1,18 @@ { "stac_version": "1.0.0-beta.1", "stac_extensions": [ - "eo", - "view", - "https://example.com/stac/landsat-extension/1.0/schema.json" + "eo", + "view", + "https://example.com/stac/landsat-extension/1.0/schema.json" ], "id": "LC81530252014153LGN00", "type": "Feature", - "bbox": [ 49.16354,72.27502,51.36812,75.67662 ], + "bbox": [ + 49.16354, + 72.27502, + 51.36812, + 75.67662 + ], "geometry": { "type": "Polygon", "coordinates": [ @@ -26,7 +31,7 @@ ], [ 49.16354, - 72.39640 + 72.3964 ], [ 51.33855, @@ -35,19 +40,23 @@ ] ] }, - + "collection": "landsat-8-l1", "properties": { "datetime": "2014-06-02T09:22:02Z", - "collection": "L1T", - "gsd": 30.0, - "eo:cloud_cover" : 10, - "view:off_nadir" : 0.000, - "view:azimuth": 0.00, - "view:sun_azimuth" : 149.01607154, - "view:sun_elevation" : 59.21424700, - "landsat:wrs_path": 153, - "landsat:wrs_row": 25, - "landsat:earth_sun_distance": 1.0141560, + "gsd": 30, + "platform": "landsat-8", + "instruments": [ + "oli", + "tirs" + ], + "eo:cloud_cover": 78, + "view:off_nadir": 0, + "view:azimuth": 0, + "view:sun_azimuth": 149.01607154, + "view:sun_elevation": 59.214247, + "landsat:path": 107, + "landsat:row": 18, + "landsat:earth_sun_distance": 1.014156, "landsat:ground_control_points_verify": 114, "landsat:geometric_rmse_model": 7.562, "landsat:image_quality_tirs": 9, @@ -57,105 +66,192 @@ "landsat:geometric_rmse_verify": 5.364, "landsat:image_quality_oli": 9 }, - "links": [ - { "rel":"self", "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00.json"}, - { "rel":"alternate", "href": "https://landsatonaws.com/L8/153/025/LC81530252014153LGN00", "type": "text/html"}, - { "rel":"root", "href": "http://landsat-pds.s3.amazonaws.com/L8/L1T-collection.json"}, - { "rel":"collection", "href": "http://landsat-pds.s3.amazonaws.com/L8/L1T-collection.json"} + { + "rel": "self", + "href": "https://landsat-stac.s3.amazonaws.com/landsat-8-l1/107/018/2018-10-01/LC81530252014153LGN00.json" + }, + { + "rel": "collection", + "href": "https://landsat-stac.s3.amazonaws.com/landsat-8-l1/catalog.json" + }, + { + "rel": "parent", + "href": "https://landsat-stac.s3.amazonaws.com/landsat-8-l1/107/018/catalog.json" + }, + { + "rel": "root", + "href": "https://landsat-stac.s3.amazonaws.com/catalog.json" + } ], - - "assets" :{ - "thumbnail": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_thumb_large.jpg", - "type": "image/jpeg", - "title": "Thumbnail", - "description": "A medium sized thumbnail", - "roles": [ "thumbnail" ] - }, - "metadata": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_MTL.txt", - "type": "mtl", - "title": "Original Metadata", - "description": "The original MTL metadata file provided for each Landsat scene", - "roles": ["metadata"] + "assets": { + "ANG": { + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_ANG.txt", + "title": "Angle coefficients file", + "type": "text/plain" }, "B1": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B1.TIF", + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_B1.TIF", "type": "image/tiff; application=geotiff", - "eo:bands": [0], - "title": "Coastal Band (B1)", - "description": "Coastal Band Top Of the Atmosphere" + "eo:bands": [ + { + "name": "B1", + "common_name": "coastal", + "center_wavelength": 0.44, + "full_width_half_max": 0.02 + } + ], + "title": "Band 1 (coastal)" }, "B2": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B2.TIF", + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_B2.TIF", "type": "image/tiff; application=geotiff", - "eo:bands": [1], - "title": "Blue Band (B2)", - "description": "Blue Band Top Of the Atmosphere" + "eo:bands": [ + { + "name": "B2", + "common_name": "blue", + "center_wavelength": 0.48, + "full_width_half_max": 0.06 + } + ], + "title": "Band 2 (blue)" }, "B3": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B3.TIF", + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_B3.TIF", "type": "image/tiff; application=geotiff", - "eo:bands": [2], - "title": "Green Band (B3)", - "description": "Green Band (B3) Top Of the Atmosphere" + "eo:bands": [ + { + "name": "B3", + "common_name": "green", + "center_wavelength": 0.56, + "full_width_half_max": 0.06 + } + ], + "title": "Band 3 (green)" }, "B4": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B4.TIF", + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_B4.TIF", "type": "image/tiff; application=geotiff", - "eo:bands": [3], - "title": "Red Band (B4)", - "description": "Red Band (B4) Top Of the Atmosphere" + "eo:bands": [ + { + "name": "B4", + "common_name": "red", + "center_wavelength": 0.65, + "full_width_half_max": 0.04 + } + ], + "title": "Band 4 (red)" }, "B5": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B5.TIF", + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_B5.TIF", "type": "image/tiff; application=geotiff", - "eo:bands": [4], - "title": "NIR Band (B5)", - "description": "NIR Band (B5) Top Of the Atmosphere" + "eo:bands": [ + { + "name": "B5", + "common_name": "nir", + "center_wavelength": 0.86, + "full_width_half_max": 0.03 + } + ], + "title": "Band 5 (nir)" }, "B6": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B6.TIF", + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_B6.TIF", "type": "image/tiff; application=geotiff", - "eo:bands": [5], - "title": "SWIR Band (B6)", - "description": "SWIR Band at 1.6um (B6) Top Of the Atmosphere" + "eo:bands": [ + { + "name": "B6", + "common_name": "swir16", + "center_wavelength": 1.6, + "full_width_half_max": 0.08 + } + ], + "title": "Band 6 (swir16)" }, "B7": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B7.TIF", + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_B7.TIF", "type": "image/tiff; application=geotiff", - "eo:bands": [6], - "title": "SWIR Band (B7)", - "description": "SWIR Band at 2.2um (B7) Top Of the Atmosphere" + "eo:bands": [ + { + "name": "B7", + "common_name": "swir22", + "center_wavelength": 2.2, + "full_width_half_max": 0.2 + } + ], + "title": "Band 7 (swir22)" }, "B8": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B8.TIF", + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_B8.TIF", "type": "image/tiff; application=geotiff", - "eo:bands": [7], - "title": "Panchromatic Band (B8)", - "description": "Panchromatic Band (B8) Top Of the Atmosphere" + "eo:bands": [ + { + "name": "B8", + "common_name": "pan", + "center_wavelength": 0.59, + "full_width_half_max": 0.18 + } + ], + "title": "Band 8 (pan)" }, "B9": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B9.TIF", + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_B9.TIF", "type": "image/tiff; application=geotiff", - "eo:bands": [8], - "title": "Cirrus Band (B9)", - "description": "Cirrus Band (B9) Top Of the Atmosphere - for cirrus cloud detection" + "eo:bands": [ + { + "name": "B9", + "common_name": "cirrus", + "center_wavelength": 1.37, + "full_width_half_max": 0.02 + } + ], + "title": "Band 9 (cirrus)" }, "B10": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B10.TIF", + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_B10.TIF", "type": "image/tiff; application=geotiff", - "eo:bands": [9], - "title": "LWIR Band (B10)", - "description": "Long-wave IR Band at 11um (B10) Top Of the Atmosphere" + "eo:bands": [ + { + "name": "B10", + "common_name": "lwir11", + "center_wavelength": 10.9, + "full_width_half_max": 0.8 + } + ], + "title": "Band 10 (lwir)" }, "B11": { - "href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B11.TIF", + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_B11.TIF", "type": "image/tiff; application=geotiff", - "eo:bands": [10], - "title": "LWIR Band (B11)", - "description": "Long-wave IR Band at 12um (B11) Top Of the Atmosphere" + "eo:bands": [ + { + "name": "B11", + "common_name": "lwir12", + "center_wavelength": 12, + "full_width_half_max": 1 + } + ], + "title": "Band 11 (lwir)" + }, + "BQA": { + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_BQA.TIF", + "title": "Band quality data", + "type": "image/tiff; application=geotiff" + }, + "MTL": { + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_MTL.txt", + "title": "original metadata file", + "type": "text/plain" + }, + "thumbnail": { + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/LC81530252014153LGN00_thumb_large.jpg", + "title": "Thumbnail image", + "type": "image/jpeg" + }, + "index": { + "href": "https://landsat-pds.s3.amazonaws.com/c1/L8/107/018/LC81530252014153LGN00/index.html", + "type": "text/html", + "title": "HTML index page" } } - } +} \ No newline at end of file diff --git a/item-spec/examples/sample-full.json b/item-spec/examples/sample-full.json index 7a519cf16..e5f3836df 100644 --- a/item-spec/examples/sample-full.json +++ b/item-spec/examples/sample-full.json @@ -41,7 +41,20 @@ "view:off_nadir": 1.4, "platform": "coolsat2", "instruments": ["cool_sensor_v1"], - "eo:bands": [], + "eo:bands": [ + { + "name": "band1" + }, + { + "name": "band1" + }, + { + "name": "band2" + }, + { + "name": "band3" + } + ], "view:sun_elevation": 33.4, "gsd": 0.512, "cs:type": "scene", From ddbdbdf1e3c8413cc9e71a7248c139b775bfa613 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 2 Jun 2020 18:25:52 +0200 Subject: [PATCH 5/5] Describe eo:bands in assets. --- extensions/eo/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/eo/README.md b/extensions/eo/README.md index c5e1b2b30..c924b8fb0 100644 --- a/extensions/eo/README.md +++ b/extensions/eo/README.md @@ -29,6 +29,8 @@ For defining view geometry of data, it is strongly recommended to use the [`view | eo:bands | \[[Band Object](#band-object)] | This is a list of the available bands where each item is a [Band Object](#band-object). | | eo:cloud_cover | number | Estimate of cloud cover as a percentage (0-100) of the entire scene. If not available the field should not be provided. | +**eo:bands**: In previous versions `eo:bands` was allowed to be used on the asset-level referencing via array indices to the actual bands in Item `properties`. Starting with STAC 1.0.0-beta.1 you are now allowed to place the full `eo:bands` array with all Band Object information in Item `assets` as described in general in the [STAC Item](../../item-spec/item-spec.md#additional-fields-for-assets). + ### Band Object | Field Name | Type | Description |