diff --git a/CHANGELOG.md b/CHANGELOG.md index ecfc96640..c17e05661 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - `time` API parameter changed to `datetime` (changed in WFS3) - Clarification on `include` and `exclude` parameters in the field extension and notes on default values. - API queries should contain either `bbox` or `intersects`. +- Updated bbox definitions in API, Item, and Collection specs to include support for optional elevation values. ### Added - **stac_version**: Each Item must specify the STAC version. diff --git a/api-spec/api-spec.md b/api-spec/api-spec.md index e6878f904..b43462fd5 100644 --- a/api-spec/api-spec.md +++ b/api-spec/api-spec.md @@ -59,7 +59,7 @@ string values and JSON entity attributes should use JSON Arrays. | ----------- | ---------------- | ---------- | ---------------------- | | collectionId | [string] | WFS3 | **Path-only** Single Collection ID to include in the search for items. Only Items in one of the provided Collection will be searched | | limit | integer | WFS3, STAC | The maximum number of results to return (page size). Defaults to 10 | -| bbox | [number] | WFS3, STAC | Requested bounding box [west, south, east, north] | +| bbox | [number] | WFS3, STAC | Requested bounding box. Represented using either 2D or 3D geometries. The length of the array must be 2*n where n is the number of dimensions. The array contains all axes of the southwesterly most extent followed by all axes of the northeasterly most extent specified in Longitude/Latitude or Longitude/Latitude/Elevation based on [WGS 84](http://www.opengis.net/def/crs/OGC/1.3/CRS84). When using 3D geometries, the elevation of the southwesterly most extent is the minimum elevation in meters and the elevation of the northeasterly most extent is the maximum. | | datetime | string | WFS3, STAC | Single date+time, or a range ('/' seperator), formatted to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Use double dots `..` for open date ranges. | | intersects | GeoJSON Geometry | STAC | Searches items by performing intersection between their geometry and provided GeoJSON geometry. All GeoJSON geometry types must be supported. | | next | string | STAC | The token to retrieve the next set of results, e.g., offset, page, continuation token| diff --git a/collection-spec/collection-spec.md b/collection-spec/collection-spec.md index e1a9f8cd3..d505aab39 100644 --- a/collection-spec/collection-spec.md +++ b/collection-spec/collection-spec.md @@ -66,16 +66,9 @@ The object describes the spatial extents of the Collection. | ------- | ---------- | ------------------------------------------------------------------- | | bbox | [[number]] | **REQUIRED.** Potential *spatial extent* covered by the collection. | -**bbox**: The bounding box is provided as four or six numbers, depending on whether the coordinate reference system includes a vertical axis (height or depth): +**bbox**: Bounding Box of the assets represented by this collection using either 2D or 3D geometries. The length of the array must be 2*n where n is the number of dimensions. The array contains all axes of the southwesterly most extent followed by all axes of the northeasterly most extent specified in Longitude/Latitude or Longitude/Latitude/Elevation based on [WGS 84](http://www.opengis.net/def/crs/OGC/1.3/CRS84). When using 3D geometries, the elevation of the southwesterly most extent is the minimum depth/height in meters and the elevation of the northeasterly most extent is the maximum. -- Lower left corner, coordinate axis 1 (west) -- Lower left corner, coordinate axis 2 (south) -- Lower left corner, coordinate axis 3 (base, optional) -- Upper right corner, coordinate axis 1 (east) -- Upper right corner, coordinate axis 2 (north) -- Upper right corner, coordinate axis 3 (height, optional) - -The coordinate reference system of the values is WGS 84 longitude/latitude. Example that covers the whole Earth: `[-180, -90, 180, 90]`. +The coordinate reference system of the values is WGS 84 longitude/latitude. Example that covers the whole Earth: `[-180.0, -90.0, 180.0, 90.0]`. Example that covers the whole earth with a depth of 100 meters to a height of 150 meters: `[-180.0, -90.0, -100.0, 180.0, 90.0, 150.0]`. The list of numbers is wrapped in a list to potentially support multiple bounding boxes later or with an extension. diff --git a/item-spec/item-spec.md b/item-spec/item-spec.md index aca90c4fe..982da7d48 100644 --- a/item-spec/item-spec.md +++ b/item-spec/item-spec.md @@ -39,8 +39,8 @@ inherited from GeoJSON. | stac_extensions | [string] | A list of extensions the Item implements. | | id | string | **REQUIRED.** Provider identifier. As most geospatial assets are already defined by some identification scheme by the data provider it is recommended to simply use that ID. Data providers are advised to include sufficient information to make their IDs globally unique, including things like unique satellite IDs. | | type | string | **REQUIRED.** Type of the GeoJSON Object. MUST be set to `Feature`. | -| geometry | [GeoJSON Geometry Object](https://tools.ietf.org/html/rfc7946#section-3.1) | **REQUIRED.** Defines the full footprint of the asset represented by this item, formatted according to [RFC 7946, section 3.1](https://tools.ietf.org/html/rfc7946). The footprint should be the default GeoJSON geometry, though additional geometries can be included. Specified in Longitude/Latitude based on EPSG:4326. | -| bbox | [number] | **REQUIRED.** Bounding Box of the asset represented by this item. Specified in Longitude/Latitude based on EPSG:4326 - first two numbers are longitude and latitude of lower left corner, followed by longitude and latitude of upper right corner. This field enables more naive clients to easily index and search geospatially. Most software can easily generate them for footprints. STAC compliant APIs are required to compute intersection operations with the item's geometry field, not its bbox. | +| geometry | [GeoJSON Geometry Object](https://tools.ietf.org/html/rfc7946#section-3.1) | **REQUIRED.** Defines the full footprint of the asset represented by this item, formatted according to [RFC 7946, section 3.1](https://tools.ietf.org/html/rfc7946). The footprint should be the default GeoJSON geometry, though additional geometries can be included. Coordinates are specified in Longitude/Latitude or Longitude/Latitude/Elevation based on [WGS 84](http://www.opengis.net/def/crs/OGC/1.3/CRS84). | +| bbox | [number] | **REQUIRED.** Bounding Box of the asset represented by this item using either 2D or 3D geometries. The length of the array must be 2*n where n is the number of dimensions. The array contains all axes of the southwesterly most extent followed by all axes of the northeasterly most extent specified in Longitude/Latitude or Longitude/Latitude/Elevation based on [WGS 84](http://www.opengis.net/def/crs/OGC/1.3/CRS84). When using 3D geometries, the elevation of the southwesterly most extent is the minimum depth/height in meters and the elevation of the northeasterly most extent is the maximum. This field enables more naive clients to easily index and search geospatially. STAC compliant APIs are required to compute intersection operations with the item's geometry field, not its bbox. | | properties | [Properties Object](#properties-object) | **REQUIRED.** A dictionary of additional metadata for the item. | | links | [[Link Object](#link-object)] | **REQUIRED.** List of link objects to resources and related URLs. A link with the `rel` set to `self` is required. | | assets | Map | **REQUIRED.** Dictionary of asset objects that can be downloaded, each with a unique key. Some pre-defined keys are listed in the chapter '[Asset types](#asset-types)'. |