{"id":37651520,"url":"https://github.com/stac-extensions/datacube","last_synced_at":"2026-01-16T11:34:21.939Z","repository":{"id":43688329,"uuid":"344246710","full_name":"stac-extensions/datacube","owner":"stac-extensions","description":"Datacube related metadata to describe their dimensions and variables.","archived":false,"fork":false,"pushed_at":"2025-07-24T09:09:49.000Z","size":80,"stargazers_count":20,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-24T12:00:33.548Z","etag":null,"topics":["datacube","stac"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stac-extensions.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-03-03T19:52:43.000Z","updated_at":"2025-07-24T09:09:50.000Z","dependencies_parsed_at":"2023-01-29T14:00:53.163Z","dependency_job_id":"c9ab009b-7bb5-411c-8b18-d809e40285f3","html_url":"https://github.com/stac-extensions/datacube","commit_stats":{"total_commits":28,"total_committers":7,"mean_commits":4.0,"dds":0.3571428571428571,"last_synced_commit":"9e74fa706c9bdd971e01739cf18dcc53bdd3dd4f"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":"stac-extensions/template","purl":"pkg:github/stac-extensions/datacube","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stac-extensions%2Fdatacube","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stac-extensions%2Fdatacube/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stac-extensions%2Fdatacube/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stac-extensions%2Fdatacube/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stac-extensions","download_url":"https://codeload.github.com/stac-extensions/datacube/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stac-extensions%2Fdatacube/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478349,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["datacube","stac"],"created_at":"2026-01-16T11:34:21.849Z","updated_at":"2026-01-16T11:34:21.932Z","avatar_url":"https://github.com/stac-extensions.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Datacube Extension Specification\n\n- **Title:** Datacube\n- **Identifier:** \u003chttps://stac-extensions.github.io/datacube/v2.3.0/schema.json\u003e\n- **Field Name Prefix:** cube\n- **Scope:** Item, Collection\n- **Extension [Maturity Classification](https://github.com/radiantearth/stac-spec/tree/master/extensions/README.md#extension-maturity):** Candidate\n- **Owner**: @m-mohr\n\nThis document explains the Datacube Extension to the [SpatioTemporal Asset Catalog](https://github.com/radiantearth/stac-spec) (STAC) specification.\nIt specifies datacube related metadata, especially their dimensions and potentially more in the future.\n\n- Examples:\n  - [Item example](examples/item.json): Shows the basic usage of the extension in a STAC Item\n  - [Collection example](examples/collection.json): Shows the basic usage of the extension in a STAC Collection\n- [JSON Schema](json-schema/schema.json)\n- [Changelog](./CHANGELOG.md)\n\n## Fields\n\nThe following fields can be used in the following parts of a STAC document:\n\n- [ ] Catalogs\n- [x] Collections\n- [x] Item Properties (incl. Summaries in Collections)\n- [x] Assets (both Collections and Items, incl. Item Asset Definitions in Collections)\n- [ ] Links\n\n| Field Name       | Type                                               | Description                                 |\n| ---------------- | -------------------------------------------------- | ------------------------------------------- |\n| cube:dimensions  | Map\u003cstring, [Dimension Object](#dimension-object)\u003e | **REQUIRED.** Uniquely named dimensions of the datacube. |\n| cube:variables   | Map\u003cstring, [Variable Object](#variable-object)\u003e   | Uniquely named variables of the datacube. |\n\nThe keys of `cube:dimensions` and `cube:variables` should be unique together; a key like `lat` should not be both a dimension and a variable.\n\n### Dimension Object\n\nA *Dimension Object* comes in different flavors, each of them is defined below. The fields define mostly very similar fields,\nbut they differ slightly depending on their use case. All objects share the fields `type` and `description` with the same definition,\nbut `type` may be restricted to certain values. The definition of`axis` is shared between the spatial dimensions, but restricted to\ncertain values, too. `extent`, `values` and `step` share the same definition, but differ in the supported data types (number or string)\ndepending on the type of dimension. Whenever it's useful to specify these fields, the objects add the additional fields `reference_system`\nand `unit` with very similar definitions across the objects.\n\n### Horizontal Spatial Raster Dimension Object\n\nA spatial raster dimension in one of the horizontal (x or y) directions.\n\n| Field Name       | Type           | Description                                                  |\n| ---------------- | -------------- | ------------------------------------------------------------ |\n| type             | string         | **REQUIRED.** Type of the dimension, always `spatial`.       |\n| axis             | string         | **REQUIRED.** Axis of the spatial raster dimension (`x`, `y`).      |\n| description      | string         | Detailed multi-line description to explain the dimension. [CommonMark 0.29](http://commonmark.org/) syntax MAY be used for rich text representation. |\n| extent           | \\[number]      | **REQUIRED.** Extent (lower and upper bounds) of the dimension as two-element array. Open intervals with `null` are not allowed. |\n| values           | \\[number]      | Optionally, an ordered list of all values.                   |\n| step             | number\\|null   | The space between the values. Use `null` for irregularly spaced steps. |\n| unit             | string         | The unit of measurement for the values, preferably compliant to [UCUM](https://ucum.org) (unit code) or [UDUNITS-2](https://ncics.org/portfolio/other-resources/udunits2/) (unit symbol or alternatively singular unit name). |\n| reference_system | string\\|number\\|object | The spatial reference system for the data and datacube metadata (`extent`, `values` and `step`), specified as [numerical EPSG code](http://www.epsg-registry.org/), [WKT2 (ISO 19162) string](http://docs.opengeospatial.org/is/18-010r7/18-010r7.html) or [PROJJSON object](https://proj.org/specifications/projjson.html). Defaults to EPSG code 4326. |\n\n### Vertical Spatial Dimension Object\n\nA spatial dimension in vertical (z) direction.\n\n| Field Name       | Type             | Description                                                  |\n| ---------------- | ---------------- | ------------------------------------------------------------ |\n| type             | string           | **REQUIRED.** Type of the dimension, always `spatial`.       |\n| axis             | string           | **REQUIRED.** Axis of the spatial dimension, always `z`.     |\n| description      | string           | Detailed multi-line description to explain the dimension. [CommonMark 0.29](http://commonmark.org/) syntax MAY be used for rich text representation. |\n| extent           | \\[number\\|null\\]   | If the dimension consists of [ordinal](https://en.wikipedia.org/wiki/Level_of_measurement#Ordinal_scale) values, the extent (lower and upper bounds) of the values as two-element array. Use `null` for open intervals. |\n| values           | \\[number\\|string\\] | An ordered list of all values, especially useful for [nominal](https://en.wikipedia.org/wiki/Level_of_measurement#Nominal_level) values. |\n| step             | number\\|null     | If the dimension consists of [interval](https://en.wikipedia.org/wiki/Level_of_measurement#Interval_scale) values, the space between the values. Use `null` for irregularly spaced steps. |\n| unit             | string           | The unit of measurement for the values, preferably compliant to [UCUM](https://ucum.org) (unit code) or [UDUNITS-2](https://ncics.org/portfolio/other-resources/udunits2/) (unit symbol or alternatively singular unit name). |\n| reference_system | string\\|number\\|object | The spatial reference system for the data and datacube metadata (`extent`, `values` and `step`), specified as [numerical EPSG code](http://www.epsg-registry.org/), [WKT2 (ISO 19162) string](http://docs.opengeospatial.org/is/18-010r7/18-010r7.html) or [PROJJSON object](https://proj.org/specifications/projjson.html). Defaults to EPSG code 4326. |\n\nA Vertical Spatial Dimension Object MUST specify an `extent` or `values`. It MAY specify both.\n\n### Temporal Dimension Object\n\nA temporal dimension based on the ISO 8601 standard. The temporal reference system for the data is expected to be ISO 8601 compliant\n(Gregorian calendar / UTC). Data not compliant with ISO 8601 can be represented as an *Additional Dimension Object* with `type` set to `temporal`.\n\n| Field Name | Type            | Description                                                  |\n| ---------- | --------------- | ------------------------------------------------------------ |\n| type       | string          | **REQUIRED.** Type of the dimension, always `temporal`.      |\n| description | string         | Detailed multi-line description to explain the dimension. [CommonMark 0.29](http://commonmark.org/) syntax MAY be used for rich text representation. |\n| extent     | \\[string\\|null] | **REQUIRED.** Extent (lower and upper bounds) of the dimension as two-element array. The dates and/or times must be strings compliant to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). `null` is allowed for open date ranges. |\n| values     | \\[string]       | If the dimension consists of an ordered list of specific values they can be listed here. The dates and/or times must be strings compliant to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). |\n| step       | string\\|null    | The space between the temporal instances as [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations), e.g. `P1D`. Use `null` for irregularly spaced steps. |\n| unit       | string          | The unit of measurement for the values, preferably compliant to [UCUM](https://ucum.org) (unit code) or [UDUNITS-2](https://ncics.org/portfolio/other-resources/udunits2/) (unit symbol or alternatively singular unit name). |\n\n### Spatial Vector Dimension Object\n\nA vector dimension that defines a spatial dimension based on geometries.\n\n| Field Name       | Type           | Description                                                  |\n| ---------------- | -------------- | ------------------------------------------------------------ |\n| type             | string         | **REQUIRED.** Type of the dimension, always `geometry`.    |\n| axes             | \\[string]      | Axes of the vector dimension as an ordered set of `x`, `y` and `z`. Defaults to `x` and `y`. |\n| description      | string         | Detailed multi-line description to explain the dimension. [CommonMark 0.29](http://commonmark.org/) syntax MAY be used for rich text representation. |\n| bbox             | \\[number]      | **REQUIRED.** A single bounding box of the geometries as defined for [STAC Collections](https://github.com/radiantearth/stac-spec/blob/master/collection-spec/collection-spec.md#spatial-extent-object), but not nested. |\n| values           | \\[string\\]     | Optionally, a representation of the geometries. This could be a list of WKT strings or other identifiers. |\n| geometry_types   | \\[[GeoJSON Types](https://www.rfc-editor.org/rfc/rfc7946#section-1.4)] | A set of geometry types. If not present, mixed geometry types must be assumed. |\n| reference_system | string\\|number\\|object | The spatial reference system for the data and datacube metadata (`bbox` and `values`), specified as [numerical EPSG code](http://www.epsg-registry.org/), [WKT2 (ISO 19162) string](http://docs.opengeospatial.org/is/18-010r7/18-010r7.html) or [PROJJSON object](https://proj.org/specifications/projjson.html). Defaults to EPSG code 4326. |\n\nFor a general explanation what a vector datacube and a vector dimension is, please read the article \"[Vector Data Cubes](https://r-spatial.org/r/2022/09/12/vdc.html)\".\n\n### Additional Dimension Object\n\nAn additional dimension that is not `spatial`, but may be `temporal` if the data is not compliant with ISO 8601 (see below).\n\n| Field Name       | Type              | Description                                                  |\n| ---------------- | ----------------- | ------------------------------------------------------------ |\n| type             | string            | **REQUIRED.** Custom type of the dimension, never `spatial` or `geometry`. |\n| description      | string            | Detailed multi-line description to explain the dimension. [CommonMark 0.29](http://commonmark.org/) syntax MAY be used for rich text representation. |\n| extent           | \\[number\\|null]   | If the dimension consists of [ordinal](https://en.wikipedia.org/wiki/Level_of_measurement#Ordinal_scale) values, the extent (lower and upper bounds) of the values as two-element array. Use `null` for open intervals. |\n| values           | \\[number\\|string] | An ordered list of all values, especially useful for [nominal](https://en.wikipedia.org/wiki/Level_of_measurement#Nominal_level) values. |\n| step             | number\\|null      | If the dimension consists of [interval](https://en.wikipedia.org/wiki/Level_of_measurement#Interval_scale) values, the space between the values. Use `null` for irregularly spaced steps. |\n| unit             | string            | The unit of measurement for the values, preferably compliant to [UCUM](https://ucum.org) (unit code) or [UDUNITS-2](https://ncics.org/portfolio/other-resources/udunits2/) (unit symbol or alternatively singular unit name). |\n| reference_system | string            | The reference system for the data and datacube metadata (`extent`, `values` and `step`). |\n\nAn Additional Dimension Object MUST specify an `extent` or `values`. It MAY specify both.\n\nNote on \"Additional Dimension\" with type `temporal`:\nYou can distinguish the \"Temporal Dimension\" from an \"Additional Dimension\" by checking whether the extent exists and contains strings.\nSo if the `type` equals `temporal` and `extent` is an array of strings/null, then you have a \"Temporal Dimension\",\notherwise you have an \"Additional Dimension\".\n\n### Variable Object\n\nA *Variable Object* defines a variable (or a multi-dimensional array). The variable may have dimensions, which are described by [Dimension Objects](#dimension-object).\n\n| Field Name       | Type                     | Description |\n| ---------------- | -------------------------| ----------- |\n| dimensions       | \\[string]                | **REQUIRED.** The dimensions of the variable. This should refer to keys in the ``cube:dimensions`` object or be an empty list if the variable has no dimensions. |\n| type             | string                   | **REQUIRED.** Type of the variable, either `data` or `auxiliary`. | \n| description      | string                   | Detailed multi-line description to explain the variable. [CommonMark 0.29](http://commonmark.org/) syntax MAY be used for rich text representation. |\n| extent           | \\[number\\|string\\|null\\] | If the variable consists of [ordinal](https://en.wikipedia.org/wiki/Level_of_measurement#Ordinal_scale) values, the extent (lower and upper bounds) of the values as two-element array. Use `null` for open intervals. |\n| values           | \\[number\\|string]        | An (ordered) list of all values, especially useful for [nominal](https://en.wikipedia.org/wiki/Level_of_measurement#Nominal_level) values. |\n| unit             | string                   | The unit of measurement for the data, preferably compliant to [UCUM](https://ucum.org) (unit code) or [UDUNITS-2](https://ncics.org/portfolio/other-resources/udunits2/) (unit symbol or alternatively singular unit name). |\n| nodata           | number\\|string           | Value used to identify no-data, see [common metadata](https://github.com/radiantearth/stac-spec/blob/v1.1.0/commons/common-metadata.md#no-data) for more details. |\n| data_type        | string                   | The data type of the values in the datacube, see [common metadata](https://github.com/radiantearth/stac-spec/blob/v1.1.0/commons/common-metadata.md#data-types) for more details. |\n\n**type**: The Variable `type` indicates whether what kind of variable is being described. It has two allowed values:\n\n1. `data`: a variable indicating some measured value, for example \"precipitation\", \"temperature\", etc.\n2. `auxiliary`: a variable that contains coordinate data, but isn't a dimension in `cube:dimensions`.\n  For example, the values of the datacube might be provided in the projected coordinate reference system, but\n  the datacube could have a variable `lon` with dimensions `(y, x)`, giving the longitude at each point.\n\nSee the [CF Conventions](http://cfconventions.org/Data/cf-conventions/cf-conventions-1.8/cf-conventions.html#terminology)\nfor more on auxiliary coordinates.\n\n## Contributing\n\nAll contributions are subject to the\n[STAC Specification Code of Conduct](https://github.com/radiantearth/stac-spec/blob/master/CODE_OF_CONDUCT.md).\nFor contributions, please follow the\n[STAC specification contributing guide](https://github.com/radiantearth/stac-spec/blob/master/CONTRIBUTING.md) Instructions\nfor running tests are copied here for convenience.\n\n### Running tests\n\nThe same checks that run as checks on PR's are part of the repository and can be run locally to verify that changes are valid. \nTo run tests locally, you'll need `npm`, which is a standard part of any [node.js installation](https://nodejs.org/en/download/).\n\nFirst you'll need to install everything with npm once. Just navigate to the root of this repository and on\nyour command line run:\n\n```bash\nnpm install\n```\n\nThen to check markdown formatting and test the examples against the JSON schema, you can run:\n\n```bash\nnpm test\n```\n\nThis will spit out the same texts that you see online, and you can then go and fix your markdown or examples.\n\nIf the tests reveal formatting problems with the examples, you can fix them with:\n\n```bash\nnpm run format-examples\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstac-extensions%2Fdatacube","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstac-extensions%2Fdatacube","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstac-extensions%2Fdatacube/lists"}