Skip to content

Commit 4e9af23

Browse files
committed
various cleanup, added warning, brought in dependency on the collection spec to make that relationship clearer
1 parent 92ea255 commit 4e9af23

File tree

1 file changed

+70
-16
lines changed

1 file changed

+70
-16
lines changed

extensions/stac-eo-spec.md

Lines changed: 70 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,38 @@
1-
# STAC EO Extension JSON Spec
1+
# STAC EO Profile
22

3-
This document explains the fields of the STAC Earth Observation (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 could consist of multiple spectral bands in any part of the electromagnetic spectrum. Examples of EO 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), as well as SAR instruments (e.g. Sentinel-1).
3+
This document explains the fields of the STAC Earth Observation (EO) Profile, which adds to the core fields of a STAC `Item`. EO data is considered to be data that
4+
represents a snapshot of the earth for a single date and time. It could consist of multiple spectral bands in any part of the electromagnetic spectrum. Examples of EO data
5+
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), as well as SAR
6+
instruments (e.g. Sentinel-1).
47

58
## EO Extension Description
6-
These are fields that extend the `Item` object
7-
## `Item` additions
9+
These are fields that extend the `Item` object, as well as the items's assets field and `Collection` level metadata. The EO Profile generally assumes that you are
10+
using the [STAC collection extension](stac-collection-spec.md), so puts all the repetitive fields at the `Collection` level. Since the collection extension is still
11+
being fleshed out it is also acceptable to just put the required Collection fields as `Item` level properties.
12+
13+
## Item additions
814

915
| element | type info | name | description |
1016
|----------------------|---------------------------|-------------------------|---------------------------------------------------------------------------------------------|
1117
| eo:gsd | float | Ground Sample distance | The minimum distance between pixel centers available, in meters |
12-
| eo:platform | string | Unique name of platform | Specific name of the platform (e.g., landsat-8, sentinel-2A, larrysdrone) |
13-
| eo:instrument | string | Instrument used | Name of instrument or sensor (e.g., MODIS, ASTER, OLI, Canon F-1) |
14-
| eo:bands | dictionary | Band Info | Band specific metadata (see below)
1518
| eo:crs | string | ref system | CRS of the datasource in full WKT format. null if no crs
1619
| eo:cloud_cover | integer (optional) | Cloud Cover Pct | Percent of cloud cover (1-100) |
1720
| eo:off_nadir | float (optional) | Off nadir | Viewing angle. 0-90 degrees, measured from nadir
1821
| eo:azimuth | float (optional) | Azimuth | Viewing azimuth angle. 0-360 degrees, measured clockwise from north
1922
| eo:sun_azimuth | float (optional) | Sun Azimuth | Sun azimuth angle. 0-360 degrees, measured clockwise from north
2023
| eo:sun_elevation | float (optional) | Sun Elevation | Sun elevation angle. 0-90 degrees measured from horizon
24+
| eo:collection | string (optional | Collection Name | The name of the STAC `Collection` this `Item` belongs to |
2125

22-
## `Item` Field Descriptions
2326

24-
**eo:gsd** is the nominal Ground Sample Distance for the data, as measured in meters on the ground. Since GSD can vary across a scene depending on projection, this should be the average GSD in the center of the image. If the data includes multiple bands with different GSD values, this should be the best GSD available.
27+
All of these values go in the 'properties' object of the STAC Item. As can be seen most are optional, though they are highly recommended for Earth Observation
28+
imagery. It is likely more optional fields will be added as multiple providers expose the fields they use and consensus as to common names and values emerge.
29+
For now if you are a provider with fields you'd like to add just put them under your own prefix, but also propose its use in an [issue](https://github.com/radiantearth/stac-spec/issues).
2530

26-
**eo:platform** is the name of the specific platform the instrument is attached to. For satellites this would be the name of the satellite (e.g., landsat-8, sentinel-2A), whereas for drones this would be a unique name for the drone.
2731

28-
**eo:instrument** The instrument is the name of the sensor used, although for Items which contain data from multiple sensors this could also name multiple sensors. For example, data from the Landsat-8 platform is collected with the OLI sensor as well as the TIRS sensor, but the data is distributed together and commonly referred to as OLI_TIRS.
32+
### Item Field Descriptions in Properties
2933

30-
**eo:bands** This is a dictionary of band information where each key in the dictionary is an identifier for the band (e.g., "B01", "B02", "B1", "B5", "QA"). See below for more information on band metadata.
34+
**eo:gsd** is the nominal Ground Sample Distance for the data, as measured in meters on the ground. Since GSD can vary across a scene depending on projection, this should be the average GSD in the center of the image. If the data includes multiple bands with different GSD values, this should be the best GSD available. If there are different
35+
GSD values in the bands those should be specified in the `eo:bands` section of the Collection, specified below.
3136

3237
**eo:crs**: The Coordinate Reference System (CRS) is the native reference system (sometimes called a 'projection') used by the data, provided in [Well-Known Text (WKT) format](https://en.wikipedia.org/wiki/Well-known_text). This field is required. If the data does not have a CRS, such as in the case of non-rectified imagery with Ground Control Points, eo:crs should be set to null.
3338

@@ -41,8 +46,54 @@ These are fields that extend the `Item` object
4146

4247
**eo:sun_elevation**: This is the angle from the tangent of ths scene center point to the sun. Measured in degrees (0-90).
4348

44-
## `Item:eo:bands`
45-
The bands field of a `Item` is a dictionary where the index identifies a specific band. This is often a band number (e.g., 1, B1, B01), but could be any unique identifier.
49+
**eo:collection**: This should refer to the `collection_name` field in the Collection metadata that is referenced in the `links` section of the `Item`. This is
50+
used to enable filtering between different collections, which is important when more than one collection is contained in a single catalog.
51+
52+
### Item:links additions
53+
54+
Additionally there should be an entry in the `links` array that is called `collection`, as specified in the [STAC collection extension](stac-collection-spec.md).
55+
56+
```
57+
{ "rel": "collection", "href": "link/to/collection/record" }
58+
```
59+
60+
See that spec for more information.
61+
62+
### Item:assets additions
63+
64+
One of the unique features of Earth Observation data is that providers arrange their assets in all sorts of different ways. Some, like Landsat, provide a file for
65+
each band, while others combine bands in to multiple files. Some provide multi-band 'analytic' products as well as 3 band 'visual' ones, and then the order of the
66+
bands that they include are often different.
67+
68+
The EO profile includes a full definition of the bands in the `Collection` file, but then each asset will specify what bands it covers, and in what order.
69+
70+
| element | type info | name | description |
71+
|----------------------|---------------------------|-------------------------|---------------------------------------------------------------------------------------------|
72+
| eo:bands | string array | Bands (optional) | An array of strings that index the `eo:bands` field in a `Collection`.
73+
74+
The strings in the array should be the lookup for the dictionary of the `eo:bads` section of a `Collection`, specified below.
75+
76+
## Collection additions
77+
78+
These fields belong in the `Collection` file, which is a dependency of the EO profile (if you are experimenting withnot using a collection link
79+
then these fields are still required, and should be in the Item properties - they will just be duplicative). The `collection_name` is required for the
80+
extension, and is used in the `Item` to enable search by collection. It is also recommended to use the `collection_description` so a more informative
81+
description can be displayed to users.
82+
83+
| element | type info | name | description |
84+
|----------------------|---------------------------|-------------------------|---------------------------------------------------------------------------------------------|
85+
| eo:platform | string | Unique name of platform | Specific name of the platform (e.g., landsat-8, sentinel-2A, larrysdrone) |
86+
| eo:instrument | string | Instrument used | Name of instrument or sensor (e.g., MODIS, ASTER, OLI, Canon F-1) |
87+
| eo:bands | dictionary | Band Info | Band specific metadata (see below)
88+
89+
**eo:platform** is the name of the specific platform the instrument is attached to. For satellites this would be the name of the satellite (e.g., landsat-8, sentinel-2A), whereas for drones this would be a unique name for the drone.
90+
91+
**eo:instrument** The instrument is the name of the sensor used, although for Items which contain data from multiple sensors this could also name multiple sensors. For example, data from the Landsat-8 platform is collected with the OLI sensor as well as the TIRS sensor, but the data is distributed together and commonly referred to as OLI_TIRS.
92+
93+
**eo:bands** This is a dictionary of band information where each key in the dictionary is an identifier for the band (e.g., "B01", "B02", "B1", "B5", "QA"). See below for more information on band metadata.
94+
95+
### eo:bands in Collection
96+
The bands field of a `Collection` is a dictionary where the index identifies a specific band. This is often a band number (e.g., 1, B1, B01), but can be a string (like 'udm' for an unusable data mask band, and can be any unique identifier. It is used in the `eo:bands` property of an asset in an `Item
4697

4798
| element | type info | name | description |
4899
|----------------------|---------------------------|-------------------------|---------------------------------------------------------------------------------------------|
@@ -52,7 +103,7 @@ The bands field of a `Item` is a dictionary where the index identifies a specifi
52103
| center_wavelength | float (optional) | Center wavelength | The center wavelength of the band, in microns
53104
| full_width_half_max | float (optional) | Full width at half maximum | The width of the band, as measured at half the maximum transmission, in microns
54105

55-
## `Item:eo:bands` Field Descriptions
106+
### eo:bands in Collection Field Descriptions
56107

57108
**common_name** is a name commonly used to refer to the band to make it easier to search for bands across instruments. See below for a list of accepted common names.
58109

@@ -64,7 +115,7 @@ The bands field of a `Item` is a dictionary where the index identifies a specifi
64115

65116
**full_width_half_max** (FWHM) is a common way to describe the size of a spectral band. It is the width, in microns, of the bandpass measured at a half of the maximum transmission. Thus, if the maximum transmission of the bandpass was 80%, the FWHM is measured as the width of the bandpass at 40% transmission.
66117

67-
## Common Band Names
118+
### Common Band Names
68119
The band's common_name is the name that is commonly used to refer to that band's spectral properties. The table below shows the common name based on the average band range for the band numbers of several popular instruments.
69120

70121
| Common Name | Band Range (μm) | Landsat 5 | Landsat 7 | Landsat 8 | Sentinel 2 | MODIS |
@@ -81,3 +132,6 @@ The band's common_name is the name that is commonly used to refer to that band's
81132
|lwir11 | 10.5 - 11.5 | | | 10 | | 31
82133
|lwir12 | 11.5 - 12.5 | | | 11 | | 32
83134

135+
### Sample data
136+
137+
See the [examples/](examples/) folder for a full landsat definition.

0 commit comments

Comments
 (0)