Update structured_stac.md
This commit is contained in:
parent
79345d2c0d
commit
808eca4e15
@ -9,23 +9,24 @@
|
||||
- **Extension [Maturity Classification](https://github.com/radiantearth/stac-spec/tree/master/extensions/README.md#extension-maturity):** Proposal
|
||||
- **Owner**: @TomHodson
|
||||
|
||||
This STAC extension allows for represention of [generalised datacubes][gen_datacubes]. A datacube has a fixed set of dimensions `[a, b, c..]` , each of which have a fixed span `{a: ["temp","rainfall"], b : [1-7], c:[True, False]}` such that we can access data by indexing, i.e providing a value for each axis, `a="rainfall", b=1, ...`.
|
||||
This STAC extension allows for represention of [generalised datacubes][gen_datacubes].
|
||||
|
||||
A generalised datacubes allow the dimensions to change during indexing, so choosing `a="rainfall"` might yield a different set of axes from `a="temp"`.
|
||||
A datacube has a fixed set of dimensions `[a, b, c..]` , each of which have a fixed span `{a: ["temp","rainfall"], b : [1-7], c:[True, False]}` such that we can access data by indexing, i.e providing a value for each axis, `a="rainfall", b=1, ...`. A generalised datacubes allow the dimensions to change during indexing, so choosing `a="rainfall"` might yield a different set of axes from `a="temp"`.
|
||||
|
||||
The [STAC Datacube][datacube_extension] extension serves the needs of datacubes that appear in STAC as Items or Collections, i.e as leaves in the tree. This extension instead focussing on allowing STAC to serve as an interface to dynamically explore the branches of generalised datacubes. It does this by adding additional metadata to the children of Catalog entries.
|
||||
|
||||
Technically, we take the *Dimension Objects* defined by the [Datacube Extension][datacube_extension] and add them to [Link objects][link_objects] under the key `generalized_datacube:dimension`. This enables a single Link Object to represent a whole axis and its allowed values. We also add an `generalized_datacube:href_template` attribute to communicate how to construct the URLs corresponding to particular choice of value or values.
|
||||
We take the *Dimension Objects* defined by the [Datacube Extension][datacube_extension] and add them to [Link objects][link_objects] under the key `generalized_datacube:dimension`. This enables a single Link Object to represent a whole axis and its allowed values. Since `href` must now be constructed dynamically, we rempve it and add a `generalized_datacube:href_template` attribute to communicate how to construct the URLs corresponding to particular choice of value or values.
|
||||
|
||||
In order to support more complex slicing operations in which multiple indices may be selected for a given dimensions we also add additional optional attributes to all *Dimension Objects*, these are:
|
||||
* `optional` : bool whether this dimension can be skipped.
|
||||
* `multiple` : boo wether multiple values can be selected for this key.
|
||||
|
||||
[datacubes]: https://github.com/ecmwf/datacube-spec
|
||||
* `optional` : bool whether this dimension can be skipped.
|
||||
* `multiple` : boo wether multiple values can be selected for this key.
|
||||
|
||||
[gen_datacubes]: https://github.com/ecmwf/datacube-spec
|
||||
[link_objects]: https://github.com/radiantearth/stac-spec/blob/master/commons/links.md#link-object
|
||||
[datacube_extension]: https://github.com/stac-extensions/datacube
|
||||
|
||||
## Examples
|
||||
## Examples
|
||||
A typical `Catalog` entry with this extension:
|
||||
|
||||
```json
|
||||
@ -38,7 +39,7 @@ A typical `Catalog` entry with this extension:
|
||||
"links": [
|
||||
{
|
||||
"title": "Expver - Experiment Version",
|
||||
"href": "http://136.156.129.226/app/index.html?class=od&expver={}",
|
||||
"generalized_datacube:href_template": "http://136.156.129.226/app/index.html?class=od&expver={}",
|
||||
"rel": "child",
|
||||
"type": "application/json",
|
||||
"generalized_datacube:dimension" : {
|
||||
@ -46,6 +47,8 @@ A typical `Catalog` entry with this extension:
|
||||
"description": "Experiment version, 0001 selects operational data.",
|
||||
"values" : ["0001", "xxxx"],
|
||||
"value_descriptions" : ["Operational Data", "Experimental Data"],
|
||||
"optional" : false,
|
||||
"multiple": true,
|
||||
}
|
||||
""
|
||||
|
||||
@ -185,4 +188,4 @@ An Additional Dimension Object MUST specify an `extent` or `values`. It MAY spec
|
||||
Note on "Additional Dimension" with type `temporal`:
|
||||
You can distinguish the "Temporal Dimension" from an "Additional Dimension" by checking whether the extent exists and contains strings.
|
||||
So if the `type` equals `temporal` and `extent` is an array of strings/null, then you have a "Temporal Dimension",
|
||||
otherwise you have an "Additional Dimension".
|
||||
otherwise you have an "Additional Dimension".
|
||||
|
Loading…
x
Reference in New Issue
Block a user