Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This article provides an overview of the SpatioTemporal Asset Catalog (STAC) specification and how it's used by Microsoft Planetary Computer Pro.
STAC specification
The STAC specification is an open, community-driven standard that makes it easy to find, combine, and use geospatial data. STAC provides a common structure for describing and cataloging "spatiotemporal assets." This means you can use it to index and organize data across both space and time.
As a result, STAC enables organizations to make their geospatial assets accessible to a broad range of users. STAC catalogs can be used to organize many types of geospatial asset data, including:
- Satellite, aerial, and drone imagery
- LIDAR and SAR data
- Full Motion Video
- Hyperspectral data
- Other derived data formats
Additionally, STAC can be used with existing and emerging cloud-native data formats such as Cloud Optimized GeoTIFFs (COGs) and GeoParquet.
Since its release in 2018, many organizations quickly adopted STAC to organize their spatial data. These organizations include satellite operators, government agencies, civil society groups, and commercial companies.
The STAC specification consists of four complementary standards for describing geospatial assets, organizing those assets into groups, and making those assets searchable via common APIs. Specifically, these STAC standards include:
Planetary Computer Pro uses the STAC specification across all aspects of data management.
STAC catalogs
Introduction to GeoCatalogs
The Planetary Computer Pro service allows you to create a GeoCatalog resource in your Azure subscription, to ingest, manage, search, and distribute geospatial datasets. A GeoCatalog is an Azure resource that, from a STAC API perspective, is logically equivalent to a STAC Catalog. A STAC Catalog is the top-level object in the STAC hierarchy that logically groups STAC collections and STAC Items. You can see the STAC Catalog JSON for a specific GeoCatalog using the JSON web viewer by going to https://<your geocatalog uri>/json-api?path=/
. Refer to STAC Catalog Spec to learn more about the STAC Catalog specification.
A GeoCatalog is defined using the following information:
Field | Description |
---|---|
Subscription | Azure subscription where a GeoCatalog instance is deployed |
Resource Group | Azure resource group where a GeoCatalog instance is deployed |
Name | Name of a GeoCatalog instance |
Region | Azure region where a GeoCatalog instance is deployed. |
Currently, Planetary Computer Pro can deploy GeoCatalogs in the following Azure regions:
- East US
- North Central US
- West Europe
- Canada Central
A GeoCatalog can be provisioned using the Azure portal or the Azure Rest API. To learn how to deploy a GeoCatalog into your Azure subscription, read create a GeoCatalog resource.
STAC collections
Introduction to collections
A GeoCatalog allows you to create collections to store and organize geospatial datasets on Azure. A STAC collection is used to describe a group of STAC Items that share properties and metadata, such as a common geographic area or sensor. Refer to the STAC collection Spec to learn more about the STAC collection concept.
Collection definition
Planetary Computer Pro adheres to the STAC collection specification which defines a set of common fields to describe the dataset and included Items.
Within a collection, you can specify the type and structure of data stored in that collection. You can also add render configuration settings to visualize data within the collection using Planetary Computer Pro's Explorer.
Collections in GeoCatalog are defined in JSON format and include the following fields:
Field | Description |
---|---|
ID | Required - Identifier for the collection that is unique across the provider. |
Type | Required - STAC element type; must be "collection." |
Title | Short descriptive one-line title for the collection. |
Description | Required - Detailed multi-line description to fully explain the collection. |
Licenses | Required - collection's licenses. |
Extent | Required - Describes the spatial (longitude/latitude) and temporal (date range) extents of the collection. |
Providers | Any of the organizations that captures or processes the content of the collection. |
Summaries | List of key-value pairs that provide an overview of the properties of the included Items. |
Collection Assets | Data files directly associated with the collection, for example, a thumbnail image. |
Item Assets | Details information about the datafiles that are included in the collection's Items. For more information, see Item Assets. |
Links | Required - List of link objects to resources and related URLs. |
Keywords | List of keywords describing the collection. |
STAC Version | Required - STAC version used by the collection. |
Item assets
The item_assets
field, at the collection level, provides a way to determine what assets (data files) are available in any child Item. The listed assets in this field don't imply that all assets are available for all Items (it should be the union of the available assets, not the intersection of the available assets). This field is enabled in a GeoCatalog via the item_assets extension of the STAC specification. The items assets extension is required if you want to visualize Items in the GeoCatalog Explorer.
The item_assets
field is itself an object, with at least two of the following fields:
Field | Type | Description |
---|---|---|
title | string | The displayed title for clients and users. |
description | string | A description of the Asset providing more details, such as how it was processed or created. |
type | string | Media type of the asset. |
roles | list of strings | The semantic roles of the asset, similar to the use of rel in links. |
Collection JSON examples
The following example shows a minimal collection JSON. For more fields, refer to the STAC collection specification.
{
"id": "example-collection",
"type": "Collection",
"title": "Example collection",
"description": "An example collection",
"license": "CC-BY-4.0",
"extent": {
"spatial": {
"bbox": [
[
-180,
-90,
180,
90
]
]
},
"temporal": {
"interval": [
[
"2018-01-01T00:00:00Z",
"2018-12-31T23:59:59Z"
]
]
}
},
"links": [],
"stac_version": "1.0.0"
}
For a slightly more complex example JSON, check out this example describing an open dataset from the National Agriculture Imagery Program (NAIP).
Collection configuration
In order to visualize collections in the GeoCatalog Explorer, there are several configurations that must be defined, including:
STAC items
Introduction to STAC items
A GeoCatalog allows you to store and organize geospatial datasets into collections. A STAC Item is the core object in a GeoCatalog's collection, containing metadata for a scene and links to assets from that scene (such as a satellite image). An Item's metadata allows GeoCatalog to search and query spatial assets. Refer to STAC Item Spec to learn more about the STAC Items.
Item definition
The Planetary Computer Pro adheres to the STAC Item Specification which defines a set of common fields to describe an Item, such as time range and the assets related to the Item. Items are defined in JSON format and can be flexibly expanded to include more metadata.
A valid STAC Item requires the following fields:
Field | Description |
---|---|
ID | Required - identifier for the Item that is unique across the Item's parent collection |
Type | Required - GeoJSON Object type; must be "Feature" |
Geometry | Required - defines the full footprint of the asset represented by this Item as a GeoJSON Geometry Object |
Bounding Box | Required - coordinates of the bounding box of the asset represented by this Item |
Properties | Required - Other metadata for the Item |
Assets | Required - data assets associated with the Item, each with a unique key |
Collection | Required - ID of the Item's parent collection |
Links | Required - List of link objects to resources and related URLs |
STAC Version | Required - STAC version used by the Item |
Common metadata for Items beyond these required fields includes date and time, licenses, providers, instrument, and more.
Item JSON example
The following example shows a basic item JSON.
{
"stac_version": "1.0.0",
"stac_extensions": [],
"type": "Feature",
"id": "20201211_223832_CS2",
"bbox": [
172.91173669923782,
1.3438851951615003,
172.95469614953714,
1.3690476620161975
],
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
172.91173669923782,
1.3438851951615003
],
[
172.95469614953714,
1.3438851951615003
],
[
172.95469614953714,
1.3690476620161975
],
[
172.91173669923782,
1.3690476620161975
],
[
172.91173669923782,
1.3438851951615003
]
]
]
},
"properties": {
"datetime": "2020-12-11T22:38:32.125000Z"
},
"collection": "simple-collection",
"links": [
{
"rel": "collection",
"href": "./collection.json",
"type": "application/json",
"title": "Simple example collection"
},
{
"rel": "root",
"href": "./collection.json",
"type": "application/json",
"title": "Simple example collection"
},
{
"rel": "parent",
"href": "./collection.json",
"type": "application/json",
"title": "Simple example collection"
}
],
"assets": {
"visual": {
"href": "[URL]",
"type": "image/tiff; application=geotiff; profile=cloud-optimized",
"title": "3-Band Visual",
"roles": [
"visual"
]
},
"thumbnail": {
"href": "[URL]",
"title": "Thumbnail",
"type": "image/jpeg",
"roles": [
"thumbnail"
]
}
}
}
STAC extensions
Currently, a GeoCatalog automatically adds the following extensions to all ingested collections:
STAC extensions may also be used at the STAC Item level. Users are free to add any other STAC extensions they want, but GeoCatalog doesn't currently validate the extensions.
For a full list of STAC extensions, including the maturity of each one, see the STAC extensions page on GitHub.
STAC API
The Planetary Computer Pro's APIs conform to the STAC API specification, making it possible for you to quickly and easily search petabyte-scale datasets to find specific data assets that meet your needs. Once these assets are identified, you can view or download the assets using GeoCatalog's APIs.