Skip to content

Commit

Permalink
Merge pull request #340 from radiantearth/dev
Browse files Browse the repository at this point in the history
[WIP] Release 0.6.0 final
  • Loading branch information
matthewhanson committed Nov 7, 2018
2 parents 96ee207 + fb46bf6 commit 656cf81
Show file tree
Hide file tree
Showing 11 changed files with 248 additions and 176 deletions.
37 changes: 24 additions & 13 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,38 @@

version: 2
jobs:
build:
docker:
- image: circleci/node:4
- image: circleci/python:3.6.4

working_directory: ~/repo
working_directory: ~/stac

steps:
- checkout

- run: sudo chown -R circleci:circleci /usr/local/bin
- run: sudo chown -R circleci:circleci /usr/local/lib/python3.6/site-packages
- restore_cache:
key: v2-python-requirements-{{ checksum "requirements.txt" }}
- run:
name: install
command: |
cd validation
npm install
git clone git@github.com:sparkgeo/stac-validator.git ~/stac-validator
cd ~/stac-validator
pip install -r requirements.txt
pip install .
- save_cache:
key: v2-python-requirements-{{ checksum "requirements.txt" }}
paths:
- "~/.cache/pip"
- "/usr/local/lib/python3.6/site-packages"
- run:
name: validate
command: |
cd validation
npm run validate_catalog -- -d ../catalog-spec/examples/catalog.json
npm run validate_collection -- -d ../collection-spec/examples/sentinel2.json
npm run validate_extension -- -s ../extensions/scientific/schema.json -d ../extensions/scientific/example-merraclim.json
npm run validate_item -- -d ../item-spec/examples/sample.json
# ToDo: More files should be validated
python ~/stac-validator/stac_validator.py catalog-spec/examples/catalog.json
python ~/stac-validator/stac_validator.py collection-spec/examples/sentinel2.json
python ~/stac-validator/stac_validator.py item-spec/examples/sample.json
python ~/stac-validator/stac_validator.py item-spec/examples/sample-full.json
python ~/stac-validator/stac_validator.py item-spec/examples/sentinel2-sample.json
python ~/stac-validator/stac_validator.py item-spec/examples/planet-sample.json
python ~/stac-validator/stac_validator.py item-spec/examples/landsat8-sample.json
python ~/stac-validator/stac_validator.py item-spec/examples/digitalglobe-sample.json
python ~/stac-validator/stac_validator.py item-spec/examples/CBERS_4_MUX_20181029_177_106_L4.json
35 changes: 17 additions & 18 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,40 +7,39 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [Unreleased]


## [v0.6.0-rc2] - 2018-10-25
## [v0.6.0] - 2018-11-06

### Fixed
- Reorganized and cleaned up repository
- Fixed examples throughout
- Reorganized and cleaned up repository.
- Fixed examples throughout.

### Added
- **Changelog**: This changelog added
- **Changelog**: This changelog added.
- **Collections added**: Collections are a type of Catalog with additional fields, such as provider and license. Items must belong to a single Collection.
- **Extension maturity**: Protocol for providing maturity classification for extensions based on stability and implementations.
- **Commons extension**: The previous 'Collections' extension is now the 'Commons' extension and allows an Item to inherit properties from it's Collection.
- **Commons extension**: The previous 'Collections' extension is now the 'Commons' extension and allows an Item to inherit properties from its Collection.
- **Datetime-range extension**: Extension for providing start and end datetimes.
- **Scientific extension**: Extension for providings links to scientific publications relating to the data.
- **rel types**: A list of supported 'rel' types are provided for use when specifying links, 'derived_from' and 'license' types added.
- **rel types**: A list of supported `rel` types are provided for use when specifying links, `derived_from` and `license` types added.
- **eo:constellation**: A new field in the EO specification to specify a grouping of platforms.
- **stac_version**: The stac_version field is required on all Catalogs (and Collections)
- **stac_version**: The `stac_version` field is required on all Catalogs (and Collections).
- **JSON schemas**: Added JSON schemas where they were missing.
- **Single Item extension**: Extension to supply License and Providers for single Items when no collection.
- **UML Diagram**: See STAC-060-uml.pdf
- **Development Process**: See process.md for information on the STAC development process
- **Single Item extension**: Extension to supply License and Providers for single Items when no collection is used.
- **UML Diagram**: See STAC-060-uml.pdf.
- **Development Process**: See process.md for information on the STAC development process.

### Changed
- **Endpoints**: Main catalog endpoint at /stac, search endpoint now at /stac/search
- **eo:bands**: The eo:bands field is now an array rather than a dictionary, and has been moved inside of 'properties' in a STAC Item.
- **Catalog fields**: Catalogs have a smaller number of basic fields: id, stac_version, title (optional), description, and links. The new Collections type contains additional fields.
- **API**: Main catalog endpoint at `/stac`, search endpoint now at `/stac/search`.
- **eo:bands**: The `eo:bands` field is now an array rather than a dictionary, and has been moved inside of `properties` in a STAC Item.
- **Catalog fields**: Catalogs have a smaller number of basic fields: `id`, `stac_version`, `title` (optional), `description`, and `links`. The new Collections type contains additional fields.
- **links**: The links fields are now an array rather than a dictionary.
- **properties**: Fields with the data type array or objects are allowed inside the `properties` in a STAC Item.
- **description**: Description fields now allow formatting with CommonMark.
- **assets**: Fields changed names: name to title and mime_type to type.
- **Providers Object in collections**: added a `description` field., renamed `type` to `roles`, change `roles` from string to array and added a `licensor` role.
- **assets**: Fields changed names: `name` to `title` and `mime_type` to `type`.

### Removed:
* **provider**: Provider field in Items got removed. Use Collections instead.
* **license**: License field in Items got removed. Use Collections instead.
* **provider**: Provider field in Items got removed. Use Collections or the Single Item extension instead.
* **license**: License field in Items got removed. Use Collections or the Single Item extension instead.


## [v0.5.2] - 2018-07-12
Expand Down Expand Up @@ -107,7 +106,7 @@ Thanks @hgs-msmith, @matthewhanson, @hgs-trutherford, @rouault, @joshfix, @alkam


[Unreleased]: https://github.com/radiantearth/stac-spec/compare/master...dev
[v0.6.0-rc2]: https://github.com/radiantearth/stac-spec/compare/v0.5.2...v0.6.0-rc2
[v0.6.0]: https://github.com/radiantearth/stac-spec/compare/v0.5.2...v0.6.0
[v0.5.2]: https://github.com/radiantearth/stac-spec/compare/v0.5.1...v0.5.2
[v0.5.1]: https://github.com/radiantearth/stac-spec/compare/v0.5.0...v0.5.1
[v0.5.0]: https://github.com/radiantearth/stac-spec/compare/v0.4.1...v0.5.0
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ Vendors can extend those core fields for the metadata they want to make availabl

#### UML Diagram

A UML diagram of the [STAC model](https://github.com/radiantearth/stac-spec/blob/uml-diagram/STAC-060-uml.pdf) is provided to help with navigating the specification.
A UML diagram of the [STAC model](STAC-060-uml.pdf) is provided to help with navigating the specification.

## Contributing

Expand Down
10 changes: 3 additions & 7 deletions extensions/eo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,14 +116,12 @@ See [landsat8-merged.json](examples/landsat8-merged.json) for a full example.
"assets" :{
"B1": {
"href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B1.TIF",
"type": "GeoTIFF",
"required": true,
"type": "image/vnd.stac.geotiff",
"eo:bands": [0]
},
"B2": {
"href": "http://landsat-pds.s3.amazonaws.com/L8/153/025/LC81530252014153LGN00/LC81530252014153LGN00_B2.TIF",
"type": "GeoTIFF",
"required": true,
"type": "image/vnd.stac.geotiff",
"eo:bands": [1]
},
...
Expand All @@ -133,15 +131,13 @@ See [landsat8-merged.json](examples/landsat8-merged.json) for a full example.
"name": "1",
"common_name": "coastal",
"gsd": 30.0,
"accuracy": null,
"wavelength": 0.44,
"full_width_half_max": 0.02
},
{
"name": "2",
"common_name": "blue",
"gsd": 30.0,
"accuracy": null,
"wavelength": 0.48,
"full_width_half_max": 0.06
},
Expand Down Expand Up @@ -207,4 +203,4 @@ The [extensions page](../README.md) gives an overview about related extensions.
### Placing common fields in Collections
A lot of EO data will have common metadata across many Items. It is not necessary, but recommended
to use the [Commons extension](../commons/README.md) in combination with [STAC Collections](../../collection-spec/README.md).
The exact metadata that would appear in a STAC Collection record will vary depending on the dataset.
The exact metadata that would appear in a STAC Collection record will vary depending on the dataset.
7 changes: 5 additions & 2 deletions extensions/eo/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,10 @@
},
"eo:epsg": {
"title": "EPSG code",
"type": "integer"
"type": [
"integer",
"null"
]
},
"eo:cloud_cover": {
"title": "Cloud Cover",
Expand Down Expand Up @@ -121,4 +124,4 @@
]
}
}
}
}
68 changes: 49 additions & 19 deletions implementations.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,41 @@ Browsable online version are usually powered by [stac-browser](https://github.co

## Static Catalog Examples

### Spacenet (STAC 0.5)
### Spacenet (STAC 0.6)

[Spacenet](https://spacenetchallenge.github.io/) has made all their imagery available as STAC.

- Catalog: https://s3.amazonaws.com/spacenet-stac/spacenet-dataset.json
- Browsable online version: https://vigilant-heyrovsky-0d9af8.netlify.com/
- Catalog: https://s3.amazonaws.com/spacenet-stac/spacenet-repository.json
- Browsable online version: https://spacenet-stac.netlify.com/
- Source code: https://github.com/SpaceNetChallenge/stac-implementation

### CBERS (STAC 0.5)
### CBERS-4 (STAC 0.6 and 0.5)

[CBERS](https://en.wikipedia.org/wiki/China%E2%80%93Brazil_Earth_Resources_Satellite_program) is maintaining
a full STAC Catalog, and keeping it up to date with the spec.
[CBERS-4](https://en.wikipedia.org/wiki/China%E2%80%93Brazil_Earth_Resources_Satellite_program) is maintaining
a full STAC Catalog, and keeping it up to date with the spec for versions 0.6 and 0.5.

The source code is available from https://github.com/fredliporace/cbers-2-stac

STAC items are published to public SNS topics as soon as new scenes are ingested into AWS.

#### STAC 0.6

- Catalog: https://cbers-stac-0-6.s3.amazonaws.com/catalog.json
- SNS topic: arn:aws:sns:us-east-1:769537946825:cbers-2-stac-0-6-CBERSSTACItemTopic-X1VTPGK5HBZ5

#### STAC 0.5

- Catalog: https://cbers-stac.s3.amazonaws.com/catalog.json
- SNS topic: arn:aws:sns:us-east-1:769537946825:cbers-2-stac-CBERSSTACItemTopic-N0MZUA5EIQC9
- Browsable online version: http://cbers-stac.netlify.com/
- Source code: https://github.com/fredliporace/cbers-2-stac

### Landsat-8 on AWS (STAC 0.6.0)

This catalog contains all Landsat-8 metadata from the [Earth on AWS](https://aws.amazon.com/earth/) program.

- Catalog: https://landsat-stac.s3.amazonaws.com/catalog.json
- SNS topic: arn:aws:sns:us-west-2:552188055668:landsat-stac


### ISERV (STAC 0.4.1)

Expand All @@ -34,13 +53,12 @@ a full STAC Catalog, and keeping it up to date with the spec.
- Browsable online version: http://iserv-stac.netlify.com/
- Source code: https://github.com/raster-foundry/pystac

### Planet Disaster Data (STAC 0.5)
### Planet Disaster Data (STAC 0.6)

[Planet](http://planet.com) maintains a very small, hand-built catalog to serve as a reference example
of the spec.

- Catalog: https://storage.googleapis.com/pdd-stac/disasters/catalog.json
- Browsable online version: http://planet-stac.netlify.com/
- Raw catalog files: https://console.cloud.google.com/storage/browser/pdd-stac/disasters/hurricane-harvey/0831/
- Source code: https://github.com/cholmes/pdd-stac/tree/master/disasters/hurricane-harvey

Expand All @@ -51,33 +69,45 @@ of the spec.
- Examples: https://github.com/TDG-Platform/dg-stac/tree/master/examples

## API (Active Catalog) Examples
### Boundless STAC Server
### Boundless STAC Server (0.6.0)

* Items call: http://stac.boundlessgeo.io/stac/search/stac
* OpenAPI Document: https://app.swaggerhub.com/apis/joshfix/STAC/1.0.0-RC34
* Search endpoint: https://stac.boundlessgeo.io/search/stac
* Root catalog: https://stac.boundlessgeo.io/stac

### Harris STAC Server
### sat-api (0.6.0)

Contains a number of Landsat records:
Development Seed's [sat-api](https://github.com/sat-utils/sat-api) is an easily deployable open-source API that can ingest data from any STAC static catalog. Development Seed also runs a deployed instance that contains publicly available satellite imagery available on AWS.

* Items call: http://35.160.175.42:8081/items/?limit=10
* Can see a particular Landsat item at: http://35.160.175.42:8081/items/LC08_L1TP_040032_20170415_20170501_01_T1
* Latest release: https://sat-api.developmentseed.org/stac
* Development release: https://sat-api-dev.developmentseed.org/stac

### Other implementations
The latest API should contain the latest available STAC version, while the development API will contain the next version (and may not include all items).

* [Geocatalogo](https://github.com/go-spatial/geocatalogo) is a Go implementation of STAC.

## Ecosystem

Other software related to STAC like validators, crawlers etc.

* [STAC Validator](https://github.com/sparkgeo/stac-validator) is a Python library for validating STAC catalogs and items.
* [sat-stac](https://github.com/sat-utils/sat-stac]) is a Python library and CLI for creating and updating static STAC catalogs.
* [sat-search](https://github.com/sat-utils/sat-search) is a Python library and CLI for searching (and saving) a dynamic STAC API.
* [Serverless STAC Crawler](https://github.com/fredliporace/stac-crawler) is a static STAC crawler that runs on Lambda and SQS integration.
* [STAC Browser](https://github.com/radiantearth/stac-browser/) generates/renders browsable HTML versions of STAC catalogs.

## Early prototypes / outdated
## Early prototypes / not updated

A list of software developed as early prototypes for the proof of concept or seem to be outdated (no activity in more than six months).

### Harris STAC Server

Contains a number of Landsat records:

* Items call: http://35.160.175.42:8081/items/?limit=10
* Can see a particular Landsat item at: http://35.160.175.42:8081/items/LC08_L1TP_040032_20170415_20170501_01_T1

### Others

* [Geocatalogo](https://github.com/go-spatial/geocatalogo) is a Go implementation of STAC.
* [Catalog Crawler](https://github.com/radiantearth/community-sprints/tree/master/10252017-boulder-co/catalog-crawler) was done during the [Boulder Sprint](https://github.com/radiantearth/community-sprints/tree/master/10252017-boulder-co), as an early proof of concept.
* [py-stac](https://github.com/raster-foundry/pystac) was used to create the ISERV catalog. It is still pretty tied to that data type.
* [go-stac](https://github.com/planetlabs/go-stac) does validation of static catalogs.
Expand Down
Loading

0 comments on commit 656cf81

Please sign in to comment.