Skip to content

Commit 7408055

Browse files
authored
V0.1 (#1)
* inital extension * update changelog and package * fix linting
1 parent 06e523c commit 7408055

File tree

7 files changed

+543
-312
lines changed

7 files changed

+543
-312
lines changed

.github/remark.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ plugins:
1515
- remark-lint-blockquote-indentation
1616
- remark-lint-no-consecutive-blank-lines
1717
- - remark-lint-maximum-line-length
18-
- 150
18+
- 200
1919
# Code
2020
- remark-lint-fenced-code-flag
2121
- remark-lint-fenced-code-marker

CHANGELOG.md

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,13 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7-
## [Unreleased]
7+
## [0.1.0](https://github.com/eodash/eodash-extension/tree/v0.1)
88

99
### Added
10+
- Initial eodash STAC extension specification
1011

1112
### Changed
1213

13-
### Deprecated
14-
15-
### Removed
16-
1714
### Fixed
1815

19-
[Unreleased]: <https://github.com/stac-extensions/template/compare/v1.0.0...HEAD>
16+
[Unreleased](https://github.com/eodash/eodash-extension/compare/main...v0.1)

README.md

Lines changed: 86 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
1-
# Template Extension Specification
1+
# **eodash STAC Extension Specification**
22

3-
- **Title:** Template
4-
- **Identifier:** <https://stac-extensions.github.io/template/v1.0.0/schema.json>
5-
- **Field Name Prefix:** template
6-
- **Scope:** Item, Collection
3+
- **Title:** eodash STAC extension
4+
- **Field Name Prefix:** eodash, eox
5+
- **Scope:** Collection, Item, Link, Asset
76
- **Extension [Maturity Classification](https://github.com/radiantearth/stac-spec/tree/master/extensions/README.md#extension-maturity):** Proposal
8-
- **Owner**: @your-gh-handles @person2
7+
- **Owner**: @eodash
8+
<!-- - **Identifier:** <https://stac-extensions.github.io/template/v1.0.0/schema.json> -->
99

10-
This document explains the Template Extension to the [SpatioTemporal Asset Catalog](https://github.com/radiantearth/stac-spec) (STAC) specification.
11-
This is the place to add a short introduction.
10+
This document explains the eodash STAC Extension to the [SpatioTemporal Asset Catalog](https://github.com/radiantearth/stac-spec) (STAC) specification
11+
The extension provides a set of properties to enrich STAC Collections and Items with metadata necessary for the [eodash](https://github.com/eodash/eodash) visualization client.
12+
These properties enable advanced, interactive features including:
13+
14+
- Dynamically generated user-interface forms for data processing.
15+
- Client-side rendering of charts and data visualizations.
16+
- Support for custom map projections.
17+
- Application of custom color legends, and dynamic user-configurable styling.
18+
19+
For more extensions and concepts not covered by this extension specification and needed by eodash, refer to **[eodash STAC Documentation](https://github.com/eodash/eodash/blob/main/docs/STAC.md)**.
1220

1321
- Examples:
1422
- [Item example](examples/item.json): Shows the basic usage of the extension in a STAC Item
@@ -18,44 +26,89 @@ This is the place to add a short introduction.
1826

1927
## Fields
2028

21-
The fields in the table below can be used in these parts of STAC documents:
29+
The fields below can be used in these parts of STAC documents:
2230

2331
- [ ] Catalogs
2432
- [x] Collections
25-
- [x] Item Properties (incl. Summaries in Collections)
26-
- [x] Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
27-
- [ ] Links
33+
- [x] Items
34+
- [x] Assets
35+
- [x] Links
36+
37+
### **Collection Fields**
38+
39+
These fields can be applied to the top-level of a STAC Collection object.
40+
41+
| Field Name | Type | Description |
42+
| :---- | :---- | :---- |
43+
| eodash:mapProjection | [Projection Object](#projection-object) | Defines a custom map projection that the client can register and use for displaying data. This is essential for visualizing data in non-standard coordinate reference systems (e.g., polar stereographic). |
44+
| eodash:jsonform | string | A URL pointing to a JSON Schema file. eodash uses this schema to dynamically generate a user interface form, allowing users to input parameters for data processing services. |
45+
| eodash:vegadefinition | string | A URL pointing to a [Vega](https://vega.github.io/vega/) or [Vega-Lite](https://vega.github.io/vega-lite/) JSON definition. eodash uses this to render charts from data returned by a service. |
46+
| eox:colorlegend | [Color Legend Object](#color-legend-object) | Defines a custom color legend for client-side styling of rendered data |
47+
48+
### **Item Fields**
49+
50+
These fields can be applied at the top level of STAC Items.
51+
52+
| Field Name | Type | Description |
53+
| :---- | :---- | :---- |
54+
| eodash:proj4\_def | [Projection Object](#projection-object) | Defines a custom Proj4 projection for the item data. |
55+
56+
### **Link Fields**
57+
58+
These fields can be applied to STAC Links (in Collections, Items, or Catalogs).
59+
60+
| Field Name | Type | Description |
61+
| :---- | :---- | :---- |
62+
| eodash:proj4\_def | [Projection Object](#projection-object) | Defines a custom Proj4 projection for the linked resource. Commonly used in WMS links to specify the coordinate reference system. |
63+
| eox:flatstyle | string \| object | A URL pointing to a JSON object that extends [OpenLayers Flat Styles](https://openlayers.org/en/latest/apidoc/module-ol_style_flat.html), or the style object itself. Used for dynamic styling of web map links (WMS, WMTS, XYZ) and service links. |
64+
65+
### **Asset Fields**
66+
67+
These fields can be applied to STAC Assets (in Collections or Items).
68+
69+
| Field Name | Type | Description |
70+
| :---- | :---- | :---- |
71+
| eodash:proj4\_def | [Projection Object](#projection-object) | Defines a custom Proj4 projection for the asset data. |
72+
| eox:flatstyle | string \| object | A URL pointing to a style JSON object or the style object itself for dynamic asset styling. |
73+
74+
**Note**: For data assets, styling is typically provided through links with `rel: "style"` rather than directly on the asset.
75+
The style link's `href` points to an OpenLayers Flat Style definition, and `asset:keys` specifies which assets the style applies to.
2876

29-
| Field Name | Type | Description |
30-
| -------------------- | ------------------------- | -------------------------------------------- |
31-
| template:new_field | string | **REQUIRED**. Describe the required field... |
32-
| template:xyz | [XYZ Object](#xyz-object) | Describe the field... |
33-
| template:another_one | \[number] | Describe the field... |
77+
### **Projection Object**
3478

35-
### Additional Field Information
79+
Both `eodash:mapProjection` and `eodash:proj4_def` use the same object structure:
3680

37-
#### template:new_field
81+
| Field Name | Type | Description |
82+
| :---- | :---- | :---- |
83+
| name | string | **REQUIRED**. A unique identifier for the projection (e.g., "EPSG:3031" or a custom name like "ORTHO:320500"). |
84+
| def | string | **REQUIRED**. The Proj4 definition string specifying the projection parameters. |
85+
| extent | \[number\] | **OPTIONAL**. The valid coordinate bounds as \[minX, minY, maxX, maxY\] in the projection's units. |
3886

39-
This is a much more detailed description of the field `template:new_field`...
87+
### **Color Legend Object**
4088

41-
### XYZ Object
89+
The `eox:colorlegend` property uses the following object structure:
4290

43-
This is the introduction for the purpose and the content of the XYZ Object...
91+
| Field Name | Type | Description |
92+
| :---- | :---- | :---- |
93+
| domain | \[number\] | **REQUIRED**. Array of numeric values defining the input domain for the color scale. |
94+
| range | \[string\] | **REQUIRED**. Array of color values (hex codes, CSS colors) corresponding to the domain values. |
95+
| scaleType | string | **OPTIONAL**. Type of scale to use. Valid values: `"linear"`, `"log"`, `"pow"`, `"sqrt"`, `"symlog"`, `"continuous"`, `"discrete"`. Default is `"linear"`. |
96+
| title | string | **OPTIONAL**. Title text displayed with the color legend. |
97+
| tickFormat | string | **OPTIONAL**. Format string for tick labels (e.g., `".0f"` for integers, `".2f"` for two decimal places). |
98+
| width | number | **OPTIONAL**. Width of the color legend in pixels. |
99+
| ticks | number | **OPTIONAL**. Approximate number of ticks to display on the legend. |
100+
| tickValues | \[number\] | **OPTIONAL**. Explicit array of values where ticks should be placed, overriding automatic tick generation. |
101+
| markType | string | **OPTIONAL**. Visual style of the legend marks. Implementation-specific values. |
44102

45-
| Field Name | Type | Description |
46-
| ---------- | ------ | -------------------------------------------- |
47-
| x | number | **REQUIRED**. Describe the required field... |
48-
| y | number | **REQUIRED**. Describe the required field... |
49-
| z | number | **REQUIRED**. Describe the required field... |
103+
## Related Extensions and Standards
50104

51-
## Relation types
105+
This extension is designed to work with several other STAC extensions and standards:
52106

53-
The following types should be used as applicable `rel` types in the
54-
[Link Object](https://github.com/radiantearth/stac-spec/tree/master/item-spec/item-spec.md#link-object).
107+
- **[Projection Extension](https://github.com/stac-extensions/projection)**: For standard EPSG coordinate reference systems using `proj:epsg`
108+
- **[Web Map Links Extension](https://github.com/stac-extensions/web-map-links)**: For map service links (WMS, WMTS, XYZ) with additional properties like `endpoint`, `method`, and `wmts:layer`
109+
- **[Render Extension](https://github.com/stac-extensions/render)**: For visualization and styling metadata
55110

56-
| Type | Description |
57-
| -------------- | ------------------------------------- |
58-
| fancy-rel-type | This link points to a fancy resource. |
111+
For additional metadata properties used by eodash (such as `locations`, service configuration, and observation point handling), see the [eodash STAC documentation](https://github.com/eodash/eodash/blob/main/docs/STAC.md).
59112

60113
## Contributing
61114

examples/collection.json

Lines changed: 103 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,129 @@
11
{
2-
"stac_version": "1.0.0",
2+
"stac_version": "1.1.0",
33
"stac_extensions": [
4-
"https://stac-extensions.github.io/item-assets/v1.0.0/schema.json",
5-
"https://stac-extensions.github.io/template/v1.0.0/schema.json"
4+
"https://stac-extensions.github.io/eodash/v0.1.0/schema.json",
5+
"https://stac-extensions.github.io/web-map-links/v1.1.0/schema.json",
6+
"https://stac-extensions.github.io/projection/v1.1.0/schema.json"
67
],
78
"type": "Collection",
8-
"id": "collection",
9-
"title": "A title",
10-
"description": "A description",
11-
"license": "Apache-2.0",
9+
"id": "ID",
10+
"title": "Title",
11+
"description": "Description",
12+
"license": "other",
1213
"extent": {
1314
"spatial": {
1415
"bbox": [
1516
[
16-
172.9,
17-
1.3,
18-
173,
19-
1.4
17+
-180,
18+
-90,
19+
180,
20+
-60
2021
]
2122
]
2223
},
2324
"temporal": {
2425
"interval": [
2526
[
26-
"2015-06-23T00:00:00Z",
27-
null
27+
"2012-07-04T11:59:30Z",
28+
"2024-07-31T11:59:30Z"
2829
]
2930
]
3031
}
3132
},
32-
"template:new_field": "test",
33-
"template:xyz": {
34-
"x": 1,
35-
"y": 2,
36-
"z": 3
37-
},
38-
"template:another_one": [
39-
1,
40-
2,
41-
3
33+
"themes": [
34+
"cryosphere"
4235
],
43-
"assets": {
44-
"example": {
45-
"href": "https://example.com/examples/file.xyz",
46-
"template:new_field": "test"
47-
}
48-
},
49-
"item_assets": {
50-
"data": {
51-
"roles": [
52-
"data"
53-
],
54-
"template:new_field": "test"
55-
}
36+
"satellite": [
37+
"GCOM-W"
38+
],
39+
"sensor": [
40+
"AMSR2"
41+
],
42+
"agency": [
43+
"JAXA"
44+
],
45+
"eodash:mapProjection": {
46+
"name": "EPSG:3031",
47+
"def": "+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs +type=crs",
48+
"extent": [
49+
-3299207.53,
50+
-3333134.03,
51+
3299207.53,
52+
3333134.03
53+
]
5654
},
57-
"summaries": {
58-
"datetime": {
59-
"minimum": "2015-06-23T00:00:00Z",
60-
"maximum": "2019-07-10T13:44:56Z"
61-
}
55+
"eodash:jsonform": "https://raw.githubusercontent.com/eurodatacube/eodash-assets/main/collections/N12_sea_ice_concentration/form.json",
56+
"eodash:vegadefinition": "https://raw.githubusercontent.com/eurodatacube/eodash-assets/main/collections/N12_sea_ice_concentration/chart.json",
57+
"eox:colorlegend": {
58+
"domain": [
59+
50,
60+
60,
61+
70,
62+
80,
63+
90,
64+
100
65+
],
66+
"range": [
67+
"#4040ff",
68+
"#4646ff",
69+
"#6262ff",
70+
"#9999ff",
71+
"#d1d1ff",
72+
"#ffffff"
73+
],
74+
"scaleType": "continuous",
75+
"tickFormat": ".0f",
76+
"title": "Percentage"
6277
},
6378
"links": [
6479
{
65-
"href": "https://example.com/examples/collection.json",
66-
"rel": "self"
80+
"rel": "root",
81+
"href": "../catalog.json",
82+
"type": "application/json",
83+
"title": "Earth Observing Dashboard"
84+
},
85+
{
86+
"rel": "service",
87+
"href": "https://xcube-geodb.brockmann-consult.de/eodash/sea-ice-data?aoi={{bbox}}&time={{datetime}}&threshold={{ice_threshold}}",
88+
"type": "application/json",
89+
"title": "Sea Ice Analysis Service",
90+
"method": "GET"
6791
},
6892
{
69-
"href": "https://example.com/examples/item.json",
70-
"rel": "item"
93+
"rel": "wms",
94+
"href": "//maps.bas.ac.uk/antarctic/wms",
95+
"type": "image/png",
96+
"title": "Antarctic hilshade, bathymetry",
97+
"roles": [
98+
"baselayer",
99+
"visible"
100+
],
101+
"wms:layers": [
102+
"add:antarctic_hillshade_and_bathymetry"
103+
],
104+
"eodash:proj4_def": {
105+
"name": "EPSG:3031",
106+
"def": "+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs +type=crs"
107+
}
108+
},
109+
{
110+
"rel": "xyz",
111+
"href": "//s2maps-tiles.eu/wmts/1.0.0/osm_3857/default/g/{z}/{y}/{x}.jpeg",
112+
"type": "image/jpeg",
113+
"title": "OSM Background",
114+
"roles": [
115+
"baselayer",
116+
"invisible"
117+
]
118+
}
119+
],
120+
"assets": {
121+
"thumbnail": {
122+
"href": "https://raw.githubusercontent.com/eurodatacube/eodash-assets/main/collections/N12_sea_ice_concentration/Antarctic-N12.jpg",
123+
"type": "image/png",
124+
"roles": [
125+
"thumbnail"
126+
]
71127
}
72-
]
73-
}
128+
}
129+
}

0 commit comments

Comments
 (0)