Skip to content

Commit 988c5ea

Browse files
authored
Merge pull request #1070 from radiantearth/remove_core_extensions
Remove core extensions
2 parents 01115f2 + 320f213 commit 988c5ea

File tree

17 files changed

+111
-1371
lines changed

17 files changed

+111
-1371
lines changed

.github/CODEOWNERS

Lines changed: 0 additions & 19 deletions
This file was deleted.

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ It includes things like the spatial and temporal extent of the data, the license
9595
It enables discovery at a higher level than individual Item objects, providing a simple way to describe sets of data.
9696
* **[Examples](examples/):** The *[examples/](examples/)* folder contains examples for all three specifications, linked together to form two
9797
complete examples. Each spec and extension links in to highlight particular files that demonstrate key concepts.
98-
* **[Extensions](extensions/):** The *[extensions/](extensions/)* folder is where extensions live. Extensions can extend the
99-
functionality of the core spec or add fields for specific domains. Each extension has at least one *owner*. You can find extension owners in each extension's README or in the [`CODEOWNERS`](.github/CODEOWNERS) file.
98+
* **[Extensions](extensions/README.md)** describe how STAC can use extensions that extend the functionality of the core spec or
99+
add fields for specific domains. Extensions can be published anywhere, although the preferred location for public extensions is in the [GitHub `stac-extensions` organization](https://github.com/stac-extensions).
100100
* **Additional documents:** The supporting documents include a complementary [best practices](best-practices.md)
101101
document, and information on contributing (links in the next section). We also maintain a [changelog](CHANGELOG.md) of
102102
what was modified in each version.

best-practices.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -247,12 +247,12 @@ providing them at at the Asset level can prove to be very useful for using the d
247247
- `datetime`: Provide individual timestamp on an Item, in case the Item has a `start_datetime` and `end_datetime`, but an Asset is for one specific time.
248248
- `gsd` ([Common Metadata](item-spec/common-metadata.md#instrument)): Specify some assets with different spatial resolution
249249
than the overall best resolution.
250-
- `eo:bands` ([EO extension](extensions/eo/)): Provide spectral band information, and order of bands, within an individual asset.
251-
- `proj:epsg`/`proj:wkt2`/`proj:projjson` ([projection extension](extensions/projection/)): Specify different projection for some assets. If the projection is different
250+
- `eo:bands` ([EO extension](https://github.com/stac-extensions/eo/)): Provide spectral band information, and order of bands, within an individual asset.
251+
- `proj:epsg`/`proj:wkt2`/`proj:projjson` ([projection extension](https://github.com/stac-extensions/projection/)): Specify different projection for some assets. If the projection is different
252252
for all assets it should probably not be provided as an Item property. If most assets are one projection, and there is
253253
a single reprojected version (such as a Web Mercator preview image), it is sensible to specify the main projection in the
254254
Item and the alternate projection for the affected asset(s).
255-
- `proj:shape`/`proj:transform` ([projection extension](extensions/projection/)): If assets have different spatial resolutions and slightly different exact bounding boxes, specify these per asset to indicate the size of the asset in pixels and its exact GeoTransform in the native projection.
255+
- `proj:shape`/`proj:transform` ([projection extension](https://github.com/stac-extensions/projection/)): If assets have different spatial resolutions and slightly different exact bounding boxes, specify these per asset to indicate the size of the asset in pixels and its exact GeoTransform in the native projection.
256256
- `sar:polarizations` ([sar extension](https://github.com/stac-extensions/sar)): Provide the polarization content and ordering of a specific asset, similar to `eo:bands`.
257257
- `sar:product_type` ([sar extension](https://github.com/stac-extensions/sar)): If mixing multiple product types within a single Item, this can be used to specify the product_type for each asset.
258258

@@ -338,9 +338,9 @@ actual role requirements.
338338
| land-water | Best Practice | Points to a file that indicates whether a pixel is assessed as being land or water. |
339339
| water-mask | Best Practice | Points to a file that indicates whether a pixel is assessed as being water (e.g. flooding map). | iso-19139 | Best Practice | Points to an [ISO 19139](https://www.iso.org/standard/67253.html) metadata xml file |
340340
| iso-19115 | Best Practice | Points to an [ISO 19115](https://www.iso.org/standard/53798.html) metadata file |
341-
| reflectance, temperature, saturation, cloud, cloud-shadow | [EO Extension](extensions/eo/README.md#best-practices) | See the [table](extensions/eo/README.md#best-practices) in EO for more information, and the definitive list of roles related to EO. |
342-
| incidence-angle, azimuth, sun-azimuth, sun-elevation, terrain-shadow, terrain-occlusion, terrain-illumination | [View Extension](extensions/view/README.md#best-practices) | See the [table](extensions/view/README.md#best-practices) in View for more information, and the definitive list of roles related to viewing angles. |
343-
| local-incidence-angle, noise-power, amplitude, magnitude, sigma0, beta0, gamma0, date-offset, covmat, prd | [SAR Extension](https://github.com/stac-extensions/sar/README.md#best-practices) | See the [table](https://github.com/stac-extensions/sar/README.md#best-practices) in SAR for more information. , and the definitive list of roles related to SAR. |
341+
| reflectance, temperature, saturation, cloud, cloud-shadow | [EO Extension](https://github.com/stac-extensions/eo/blob/main/README.md#best-practices) | See the [table](https://github.com/stac-extensions/eo/blob/main/README.md#best-practices) in EO for more information, and the definitive list of roles related to EO. |
342+
| incidence-angle, azimuth, sun-azimuth, sun-elevation, terrain-shadow, terrain-occlusion, terrain-illumination | [View Extension](https://github.com/stac-extensions/view/blob/main/README.md#best-practices) | See the [table](https://github.com/stac-extensions/view/blob/main/README.md#best-practices) in View for more information, and the definitive list of roles related to viewing angles. |
343+
| local-incidence-angle, noise-power, amplitude, magnitude, sigma0, beta0, gamma0, date-offset, covmat, prd | [SAR Extension](https://github.com/stac-extensions/sar/blob/main/README.md#best-practices) | See the [table](https://github.com/stac-extensions/sar/blob/main/README.md#best-practices) in SAR for more information. , and the definitive list of roles related to SAR. |
344344

345345
Some of the particular asset roles also have some best practices:
346346

@@ -489,7 +489,7 @@ Some general thinking on what to summarize is as follows:
489489

490490
* Any field that is a range of data (like numbers or dates) is a great candidate to summarize, to give people a sense what values
491491
the data might be. For example in overhead imagery, a
492-
[`view:off_nadir`](extensions/view/README.md#item-properties-and-item-asset-fields) with a range of 0 to 3 would tell people this
492+
[`view:off_nadir`](https://github.com/stac-extensions/view/blob/main/README.md#item-properties-and-item-asset-fields) with a range of 0 to 3 would tell people this
493493
imagery is all pretty much straight down, while a value of 15 to 40 would tell them that it's oblique imagery, or 0 to 60 that it's
494494
a Collection with lots of different look angles.
495495

@@ -506,12 +506,12 @@ to include all the different location string values in a summary.
506506

507507
* Fields that consist of arrays are more of a judgement call. For example [`instruments`](item-spec/common-metadata.md#instrument)
508508
is straightforward and recommended, as the elements of the array are a discrete set of options. On the other hand
509-
[`proj:transform`](extensions/projection/README.md#projtransform) makes no sense to summarize, as the union of all the values
509+
[`proj:transform`](https://github.com/stac-extensions/projection/blob/main/README.md#projtransform) makes no sense to summarize, as the union of all the values
510510
in the array are meaningless, as each Item is describing its transform, so combining them would just be a bunch of random numbers.
511511
So if the values contained in the array are independently meaningful (not interconnected) and there aren't hundreds of potential
512512
values then it is likely a good candidate to summarize.
513513

514-
We do highly recommend including an [`eo:bands`](extensions/eo/README.md#eobands) summary if your Items implement `eo:bands`,
514+
We do highly recommend including an [`eo:bands`](https://github.com/stac-extensions/eo/blob/main/README.md#eobands) summary if your Items implement `eo:bands`,
515515
especially if it represents just one satellite or constellation. This should be a union of all the potential bands that you
516516
have in assets. It is ok to only add the summary at the Collection level without putting an explicit `eo:bands` summary at the
517517
`properties` level of an Item, since that is optional. This gives users of the Collection a sense of the sensor capabilities without
@@ -540,7 +540,7 @@ cases should utilize a catalog that follows the listed principles:
540540
* **Only relative href's in structural `links`**: The full catalog structure of links down to sub-catalogs and Items, and their
541541
links back to their parents and roots, should be done with relative URL's. The structural rel types include `root`, `parent`,
542542
`child`, `item`, and `collection`. Other links can be absolute, especially if they describe a resource that makes less sense in
543-
the catalog, like [sci:doi](extensions/scientific/README.md#item-and-collection-fields),
543+
the catalog, like [sci:doi](https://github.com/stac-extensions/scientific/blob/main/README.md#item-and-collection-fields),
544544
`derived_from` or even `license` (it can be nice to include the license in the catalog, but some licenses live at a canonical
545545
online location which makes more sense to refer to directly). This enables the full catalog to be downloaded or
546546
copied to another location and to still be valid. This also implies no `self` link, as that link must be absolute.
@@ -623,10 +623,10 @@ catalogs to preserve previous versions of the documents and link them together.
623623

624624
In order to achieve this, the static catalog must make sure that for every record created, a copy of the record is also
625625
created in a separate location and it is named with the version id adopted by the catalog. See
626-
[here](https://github.com/stac-extensions/version/README.md#version-id) for recommendations on versioning schema.
626+
[here](https://github.com/stac-extensions/version/blob/main/README.md#version-id) for recommendations on versioning schema.
627627

628628
The main record should also provide a link to the versioned record following the linking patterns described
629-
[here](https://github.com/stac-extensions/version/README.md#relation-types). For every update to the record, the same
629+
[here](https://github.com/stac-extensions/version/blob/main/README.md#relation-types). For every update to the record, the same
630630
cycle is repeated:
631631

632632
1. Add link from the updated record to the previous version

catalog-spec/catalog-spec.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
# STAC Catalog Specification
1+
# STAC Catalog Specification <!-- omit in toc -->
22

33
- [Catalog fields](#catalog-fields)
44
- [Additional Field Information](#additional-field-information)
5+
- [stac_version](#stac_version)
56
- [stac_extensions](#stac_extensions)
67
- [Link Object](#link-object)
78
- [Relation types](#relation-types)
@@ -42,8 +43,8 @@ also a valid STAC Catalog.
4243

4344
| Element | Type | Description |
4445
| --------------- | ------------- | ------------------------------------------------------------ |
45-
| stac_version | string | **REQUIRED.** The STAC version the Catalog implements. STAC versions can be mixed, but please keep the [recommended best practices](../best-practices.md#mixing-stac-versions) in mind. |
4646
| type | string | **REQUIRED.** Set to `Catalog` if this Catalog only implements the Catalog spec. |
47+
| stac_version | string | **REQUIRED.** The STAC version the Catalog implements. |
4748
| stac_extensions | \[string] | A list of extension identifiers the Catalog implements. |
4849
| id | string | **REQUIRED.** Identifier for the Catalog. |
4950
| title | string | A short descriptive one-line title for the Catalog. |
@@ -53,10 +54,16 @@ also a valid STAC Catalog.
5354

5455
### Additional Field Information
5556

57+
#### stac_version
58+
59+
In general, STAC versions can be mixed, but please keep the [recommended best practices](../best-practices.md#mixing-stac-versions) in mind.
60+
5661
#### stac_extensions
5762

58-
A list of extensions the Catalog implements. This does NOT declare the extensions of children or Items. The list contains URLs to the JSON Schema files it can be validated against. For [core extensions](../extensions/README.md#core-stac-extensions), a "shortcut" can be used. This means you can specify the folder name of the extension, for example `view` for the View extension. If the versions of the extension and the Catalog diverge, you can specify the URL of the JSON schema file.
59-
This list must only contain extensions that extend the Catalog itself, see the the 'Scope' column in the list of extensions.
63+
A list of extensions the Catalog implements.
64+
This list must only contain extensions that extend the Catalog itself, see the the 'Scope' column in the list of
65+
extensions. This does NOT declare the extensions of child Catalog, Collection, or Item
66+
objects. The list contains URLs to the JSON Schema files it can be validated against.
6067

6168
### Link Object
6269

@@ -112,7 +119,7 @@ The following table lists the Media Types to use for STAC structures.
112119
| Media Type | Description |
113120
| ---------------------- | ---------------------------------------------------------- |
114121
| `application/geo+json` | A STAC [Item](../item-spec/item-spec.md) |
115-
| `application/json` | A STAC [Catalog](#stac-catalog-specification) |
122+
| `application/json` | A STAC Catalog |
116123
| `application/json` | A STAC [Collection](../collection-spec/collection-spec.md) |
117124

118125
## Extensions

collection-spec/collection-spec.md

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,26 @@
1-
# STAC Collection Specification
1+
# STAC Collection Specification <!-- omit in toc -->
2+
3+
- [Overview](#overview)
4+
- [Collection fields](#collection-fields)
5+
- [Additional Field Information](#additional-field-information)
6+
- [stac_version](#stac_version)
7+
- [stac_extensions](#stac_extensions)
8+
- [id](#id)
9+
- [license](#license)
10+
- [summaries](#summaries)
11+
- [assets](#assets)
12+
- [Extent Object](#extent-object)
13+
- [Spatial Extent Object](#spatial-extent-object)
14+
- [Temporal Extent Object](#temporal-extent-object)
15+
- [Provider Object](#provider-object)
16+
- [Link Object](#link-object)
17+
- [Relation types](#relation-types)
18+
- [Asset Object](#asset-object)
19+
- [Stats Object](#stats-object)
20+
- [Media Type for STAC Collections](#media-type-for-stac-collections)
21+
- [Standalone Collections](#standalone-collections)
22+
23+
## Overview
224

325
The STAC Collection Specification defines a set of common fields to describe a group of Items that share properties and metadata. The
426
Collection Specification shares all fields with the STAC [Catalog Specification](../catalog-spec/catalog-spec.md) (with different allowed
@@ -21,8 +43,8 @@ specified in [*OGC API - Features*](https://ogcapi.ogc.org/features/), but they
2143

2244
| Element | Type | Description |
2345
| --------------- | ------------------------------------------------ | ------------------------------------------------------------ |
24-
| stac_version | string | **REQUIRED.** The STAC version the Collection implements. STAC versions can be mixed, but please keep the [recommended best practices](../best-practices.md#mixing-stac-versions) in mind. |
2546
| type | string | **REQUIRED.** Must be set to `Collection` to be a valid Collection. |
47+
| stac_version | string | **REQUIRED.** The STAC version the Collection implements. |
2648
| stac_extensions | \[string] | A list of extension identifiers the Collection implements. |
2749
| id | string | **REQUIRED.** Identifier for the Collection that is unique across the provider. |
2850
| title | string | A short descriptive one-line title for the Collection. |
@@ -37,24 +59,28 @@ specified in [*OGC API - Features*](https://ogcapi.ogc.org/features/), but they
3759

3860
### Additional Field Information
3961

40-
#### id
62+
#### stac_version
4163

42-
It is important that Collection identifiers are unique across the provider. And providers should strive as much as possible to make
43-
their Collection ids 'globally' unique, prefixing any common information with a unique string. This could be the provider's name if
44-
it is a fairly unique name, or their name combined with the domain they operate in.
64+
In general, STAC versions can be mixed, but please keep the [recommended best practices](../best-practices.md#mixing-stac-versions) in mind.
4565

4666
#### stac_extensions
4767

48-
A list of extensions the Collection implements. This does NOT declare the extensions of child Catalogs or Items. The list
49-
contains URLs to the JSON Schema files it can be validated against. For official
50-
[extensions](../extensions/README.md#core-stac-extensions), a "shortcut" can be used. This means you can specify the folder
51-
name of the extension, for example `view` for the View extension. If the versions of the extension and
52-
the Collection diverge, you can specify the URL of the JSON schema file. This list must only contain extensions that extend
53-
the Collection itself, see the the 'Scope' column in the list of extensions. If an extension has influence on multiple parts
68+
A list of extensions the Collection implements.
69+
This list must only contain extensions that extend the Collection itself, see the the 'Scope' column in the list of
70+
extensions. This does NOT declare the extensions of child Collection or Item
71+
objects. The list contains URLs to the JSON Schema files it can be validated against.
72+
73+
If an extension has influence on multiple parts
5474
of the whole STAC structure, it must be listed in all affected parts (e.g. Collection and Item for the `datacube` extension).
55-
If a structure such as the summaries extension provide fields in their JSON structure, these extensions must not be listed
75+
If a structure, such as the summaries extension, provides fields in their JSON structure, these extensions must not be listed
5676
here as they don't extend the Collection itself. For example, if a Collection includes the field `sat:platform` in the
57-
summaries, the Collection still does not list the `sat` extension in the `stac_extensions` field.
77+
summaries, the Collection should not list the `sat` extension in the `stac_extensions` field.
78+
79+
#### id
80+
81+
It is important that Collection identifiers are unique across the provider. And providers should strive as much as possible to make
82+
their Collection ids 'globally' unique, prefixing any common information with a unique string. This could be the provider's name if
83+
it is a fairly unique name, or their name combined with the domain they operate in.
5884

5985
#### license
6086

0 commit comments

Comments
 (0)