Skip to main content

Understanding the STAC Format

We leverage the SpatioTemporal Asset Catalog (STAC) format to make our geospatial data more accessible, interoperable, and easier to discover.

What is STAC?

The SpatioTemporal Asset Catalog (STAC) is an open source standard for organizing and describing geospatial data, ensuring datasets are easily searchable, shareable, and usable. Using a standard such as STAC ensures that you can use multiple datasets within the same analysis easily, whether you’re working with satellite imagery, aerial photos, or other Earth observation data. STAC therefore works to reduce the friction in integrating new geospatial information into your workflows.

A SpatioTemporal Asset is any file that represents information about the Earth captured in a certain place and at a particular time. For example, that could be any type of imagery (hyperspectral, multispectral, etc.) from satellites, drones, or airplanes, point clouds from LiDAR instruments, or full-motion video.

STAC is a network of JavaScript Object Notation (JSON) files that reference other JSON files, with each JSON file adhering to a specific core specification depending on which STAC component it is describing. This core JSON format can also be customized to fit differing needs, making the STAC specification highly flexible and adaptable[1].

The JSON files making up the STAC catalog serve like a map to find the STAC Assets (in our case, the hyperspectral images and their metadata).

Key components of STAC

Item

An Item is a single geospatial asset. It contains metadata such as the time and place the asset was captured and links to the data itself (e.g., GeoTIFF files and thumbnails). A STAC Item represents assets as GeoJSON with additional metadata so that it can be easily searched. Because an item is formatted as a GeoJSON, it can be easily read by any modern GIS or geospatial library.

Example Use: A single satellite image taken on a specific date over a region: "Image of Toronto captured on 2023-03-15."

The STAC Item JSON specification employs standard GeoJSON fields along with additional informational fields to provide a more comprehensive description of the asset(s). Figure 1 below shows the fields of the STAC Item JSON.

Figure 1: STAC Item Specification. The fields in the gray text ('stac_extention' and 'collection') represent optional fields

Figure 1: STAC Item Specification. The fields in the gray text (stac_extention and collection) represent optional fields [2]

Catalog

The Catalog is the backbone of STAC, organizing geospatial assets into a hierarchy for browsing and discovery. Think of it as the table of contents or a map for all available datasets.

Example Use: A Catalog could represent all datasets collected by a satellite mission or stored by a specific provider: "Dragonette-001 Data" or "Wyvern Hyperspectral Data"

A catalog.json file contains links to some combination of other STAC Catalogs, Collections, and/or Items. Figure 2 describes the required fields in a STAC Catalog JSON.

Figure 2: STAC Catalog Specification. The fields in white text ('title' and 'stac_extentions') represent optional fields.

Figure 2: STAC Catalog Specification. The fields in white text (title and stac_extentions) represent optional fields. [2]

Collection

Collections group related Items that share common metadata. For instance, all images from a specific period, sensor, or data acquisition campaign may be part of a Collection.

Example Use: Grouping temporal observations from a specific satellite: "Imagery from Dragonette-001 on 2023-03-15" or "Imagery from Dragonette-001 from 2024"

A STAC Collection includes all the functionality of a catalog (organizing and linking items or sub-catalogs), however it adds required metadata fields like extent, license, and providers to better describe the items in the collection. While a STAC Catalog is generic, a STAC Collection is designed to be more informative and specific to its content as it focuses on a coherent group of items with shared characteristics. Figure 3 shows how the STAC Collection specification adds additional (optional) fields which can better describe the group of items.

Figure 3: STAC Collection Specification. In addition to the optional fields from the STAC Catalog ('title' and 'stac_extentions'), the fields 'providers', 'keywords', 'assets', and 'summaries' represent optional fields for Collections. [2]

Figure 3: STAC Collection Specification. In addition to the optional fields from the STAC Catalog (title, stac_extensions), the fields providers, keywords, assets, and summaries represent optional fields for Collections. [2]

Why Wyvern uses STAC

Wyvern's imagery data products are delivered in a standardized format to make working with the hyperspectral imagery (HSI) data files as easy as possible. Wyvern's hyperspectral imagery data products are delivered as Cloud-Optimized GeoTIFF (COG) format raster dataset with embedded image metadata tags along with a separate metadata sidecar file in JSON format that is compliant with the STAC standard.

info

Ready to get started? Check out our Open Data Portal or contact us.

Getting Started with STAC

You've read this far, so congrats! We'd say you're well on your way to getting started with STAC. Here are some popular tools and libraries you can use to access and interact with STAC-compliant datasets:

  • PySTAC: A Python library for working with STAC data. It allows you to read, write, and manipulate STAC catalogs, collections, and items.

  • STAC Browser: A web-based tool for browsing and searching STAC catalogs.

  • sat-utils: A suite of tools and libraries for interacting with satellite data, including STAC-compliant datasets.

  • GDAL: While not exclusively STAC-focused, GDAL can interact with geospatial data and can be integrated into workflows using STAC metadata.

These tools make it easy to discover, analyze, and integrate STAC data into your workflows.

Further Reading

References

[1] STAC API Community Standard Work Item Justification. https://portal.ogc.org/files/105786

[2] Intro to STAC https://stacspec.org/en/tutorials/intro-to-stac/