Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- **stac_extensions**: Introduced this field for Items, Catalogs and Collections.
- Property `summaries` have been added to catalogs and collections.
- API Transaction extension supports optimistic locking through use of the ETag header.
- Asset Definition Extension added to Collections to allow specifying details about Assets that may appear in member Items.
- [Single File Catalog extension](extensions/single-file-stac/README.md) added as a format to have a set of Collections and Items in a single file.
- [Label extension](extensions/label/README.md) added with additional fields for describing labeled data, such as used for training data or from the output of a classification
- Timestamp fields added to `Item`: `created` and `updated` to refer to the datetime the metadata file was created or updated.
Expand Down
1 change: 1 addition & 0 deletions extensions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ An extension can add new fields to STAC entities (content extension), or can add

| Extension Name (Prefix) | Scope | Description | Maturity |
| ------------------------------------------------------------ | ---------------- | ------------------------------------------------------------ | -------- |
| [Asset Definition](asset/README.md) (-) | Collection | Provides a way to specify details about what assets may be found in Items belonging to a collection | *Proposal* |
| [Checksum](checksum/README.md) (`checksum`) | Item +Catalog +Collection | Provides a way to specify file checksums for assets and links in Items, Catalogs and Collections. | *Proposal* |
| [Data Cube](datacube/README.md) (`cube`) | Item | Data Cube related metadata, especially to describe their dimensions. | *Proposal* |
| [Datetime Range](datetime-range/README.md) (`dtr`) | Item | An extension to provide datetime ranges with a start and an end datetime stamp in a consistent way. | *Proposal* |
Expand Down
39 changes: 39 additions & 0 deletions extensions/asset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Asset Definition Specification

**Extension [Maturity Classification](../README.md#extension-maturity): Proposal**

A Collection extension to provide details about assets that are available in member Items.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we should include more 'why' - what are the use cases for an implementor to make use of this. Not sure if this is the exact right place. But a bit more here would be good, and maybe flesh out more of it down below.


- [Example](examples/example-landsat8.json)
- [JSON Schema](json-schema/schema.json)

This extension serves two purposes:

1. Provide a human-readable definition of assets available in any Items belonging to this Collection so that the user can determine the key(s) of assets they are interested in.
2. Provide a way to programmatically determine what assets are available in any member Item. Otherwise a random Item needs to be examined to determine assets available, but a random Item may not be representative of the set.

## Collection fields

This extension introduces a single new field, `assets` at the top level of a collection.
An Asset Object defined at the Collection level is nearly the same as the [Asset Object in Items](../../item-spec/item-spec.md#asset-object), except for two differences.
The `href` field is not required, because collections don't point to any data by themselves.
Additioanlly the remaining fields, `title` and `type` are required in the Asset Definition, in order for it to adequately describe Item assets.
Copy link
Contributor

Choose a reason for hiding this comment

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

Minor type on 'Additionally'


| Field Name | Type | Description |
| ------------------ | ------ | ------------------------------------------------------------ |
| assets | Map<string, [Asset Object](#asset-object)> | **REQUIRED.** A dictionary of assets that can be found in member Items |

### Asset Object

An asset is an object that contains details about the datafiles that will be included in member Items. Assets included at the Collection level do not imply that all assets are available from all Items. However, it is recommended that the Asset Definition is a complete set of all assets that may be available from any member Items.

| Field Name | Type | Description |
| ---------- | ------ | ------------------------------------------------------------------------------------- |
| title | string | **REQUIRED.** The displayed title for clients and users. This should provide enough information to a user to understand what the asset is |
| type | string | **REQUIRED.** [Media type](#media-types) of the asset.

Other custom fields, or fields from other extensions may also be included in the Asset object.

## Implementations

- AWS Public Dataset catalogs, [landsat-8](http://landsat-stac.s3.amazonaws.com/landsat-8-l1/catalog.json) and [sentinel-2](http://sentinel-stac.s3.amazonaws.com/sentinel-2-l1c/catalog.json) define an Asset definition at the collection level.
248 changes: 248 additions & 0 deletions extensions/asset/examples/example-landsat8.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
{
"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.",
"keywords": [
"landsat",
"earth observation",
"usgs"
],
"version": "0.1.0",
"stac_version": "0.8.0",
"extent": {
"spatial": {
"bbox": [
[
-180,
-90,
180,
90
]
]
},
"temporal": {
"interval": [
[
"2013-06-01T00:00:00Z",
null
]
]
}
},
"providers": [
{
"name": "USGS",
"roles": [
"producer"
],
"url": "https://landsat.usgs.gov/"
},
{
"name": "Planet Labs",
"roles": [
"processor"
],
"url": "https://github.com/landsat-pds/landsat_ingestor"
},
{
"name": "AWS",
"roles": [
"host"
],
"url": "https://landsatonaws.com/"
},
{
"name": "Development Seed",
"roles": [
"processor"
],
"url": "https://github.com/sat-utils/sat-api"
}
],
"license": "PDDL-1.0",
"properties": {
"eo:gsd": 15,
"eo:platform": "landsat-8",
"eo:instrument": "OLI_TIRS",
"eo:off_nadir": 0,
"eo:bands": [
{
"name": "B1",
"common_name": "coastal",
"gsd": 30,
"center_wavelength": 0.44,
"full_width_half_max": 0.02
},
{
"name": "B2",
"common_name": "blue",
"gsd": 30,
"center_wavelength": 0.48,
"full_width_half_max": 0.06
},
{
"name": "B3",
"common_name": "green",
"gsd": 30,
"center_wavelength": 0.56,
"full_width_half_max": 0.06
},
{
"name": "B4",
"common_name": "red",
"gsd": 30,
"center_wavelength": 0.65,
"full_width_half_max": 0.04
},
{
"name": "B5",
"common_name": "nir",
"gsd": 30,
"center_wavelength": 0.86,
"full_width_half_max": 0.03
},
{
"name": "B6",
"common_name": "swir16",
"gsd": 30,
"center_wavelength": 1.6,
"full_width_half_max": 0.08
},
{
"name": "B7",
"common_name": "swir22",
"gsd": 30,
"center_wavelength": 2.2,
"full_width_half_max": 0.2
},
{
"name": "B8",
"common_name": "pan",
"gsd": 15,
"center_wavelength": 0.59,
"full_width_half_max": 0.18
},
{
"name": "B9",
"common_name": "cirrus",
"gsd": 30,
"center_wavelength": 1.37,
"full_width_half_max": 0.02
},
{
"name": "B10",
"common_name": "lwir11",
"gsd": 100,
"center_wavelength": 10.9,
"full_width_half_max": 0.8
},
{
"name": "B11",
"common_name": "lwir12",
"gsd": 100,
"center_wavelength": 12,
"full_width_half_max": 1
}
]
},
"assets": {
"index": {
"type": "text/html",
"title": "HTML index page"
},
"thumbnail": {
"title": "Thumbnail image",
"type": "image/jpeg"
},
"B1": {
"type": "image/vnd.stac.geotiff",
"eo:bands": [
0
],
"title": "Band 1 (coastal)"
},
"B2": {
"type": "image/vnd.stac.geotiff",
"eo:bands": [
1
],
"title": "Band 2 (blue)"
},
"B3": {
"type": "image/vnd.stac.geotiff",
"eo:bands": [
2
],
"title": "Band 3 (green)"
},
"B4": {
"type": "image/vnd.stac.geotiff",
"eo:bands": [
3
],
"title": "Band 4 (red)"
},
"B5": {
"type": "image/vnd.stac.geotiff",
"eo:bands": [
4
],
"title": "Band 5 (nir)"
},
"B6": {
"type": "image/vnd.stac.geotiff",
"eo:bands": [
5
],
"title": "Band 6 (swir16)"
},
"B7": {
"type": "image/vnd.stac.geotiff",
"eo:bands": [
6
],
"title": "Band 7 (swir22)"
},
"B8": {
"type": "image/vnd.stac.geotiff",
"eo:bands": [
7
],
"title": "Band 8 (pan)"
},
"B9": {
"type": "image/vnd.stac.geotiff",
"eo:bands": [
8
],
"title": "Band 9 (cirrus)"
},
"B10": {
"type": "image/vnd.stac.geotiff",
"eo:bands": [
9
],
"title": "Band 10 (lwir)"
},
"B11": {
"type": "image/vnd.stac.geotiff",
"eo:bands": [
10
],
"title": "Band 11 (lwir)"
},
"ANG": {
"title": "Angle coefficients file",
"type": "text/plain"
},
"MTL": {
"title": "original metadata file",
"type": "text/plain"
},
"BQA": {
"title": "Band quality data",
"type": "image/vnd.stac.geotiff"
}
},
"links": []
}
48 changes: 48 additions & 0 deletions extensions/asset/json-schema/schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "stac-extension-asset.json#",
"title": "Asset Definition Extension Specification",
"description": "STAC Asset Definition Extension to a STAC Collection",
"allOf": [
{
"$ref": "../../../collection-spec/json-schema/collection.json"
},
{
"$ref": "#/definitions/assets"
}
],
"definitions": {
"assets": {
"title": "Asset schemas",
"type": "object",
"required": [
"assets"
],
"properties": {
"assets": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/asset"
}
}
}
},
"asset": {
"type": "object",
"required": [
"title",
"type"
],
"properties": {
"title": {
"title": "Asset title",
"type": "string"
},
"type": {
"title": "Asset type",
"type": "string"
}
}
}
}
}