Exploring STAC Datasets with Browser

I recently contributed some imagery to the panoramax project. It's like Street View but is open and free. Then I saw that the panoramax exposes STAC APIs. I wanted to know more about STAC, which led me down a rabbit hole.  

STAC, aka SpatioTemporal Asset Catalog specification, is a simple JSON-based specification that makes geospatial information openly searchable and crawlable. STAC also defines REST APIs along with the specification for data. In summary, The STAC specification consists of 4 semi-independent specifications. They are 

  1. STAC Item is the core atomic unit, representing a single spatio-temporal asset as a GeoJSON feature. It will have datetime, links, media, etc, as additional attributes.
  2. STAC Catalog is a JSON file with links to Items or other Catalogs. It helps organize and browse STAC Items or Catalogs.
  3. STAC Collection is an extension of the STAC Catalog with additional attributes such as the extents ( both temporal and spatial), license, keywords, providers, etc. All things in the collection share the same metadata. Note that an STAC Item can belong to only one STAC Collection. That way, they have specific metadata like licenses.
  4. API - Defines various RESTful endpoints that can be used to search and get Items, Catalogs, and Collections in a standard way. 

So, with a bunch of JSON files, you expose your spatiotemporal data to the world. You can hand code them if you like, but there are also libraries that you can use. The STAC spec doesn't say how these files must be stored. It just says they need to be web-accessible. The usual way is to store them as static files on AWS S3, Google Cloud, or a standard web server. I used a CouchDB database to store these JSONs, which are served as JSONs on the web. And it works.

STAC Schema
STAC Schema

I hand-coded a simple set with one catalog and item. I have them exposed to the web using CouchDB. I didn't need to implement the API. So, coding and publishing the static JSONs were the only required steps to expose STAC so that you can explore them using the STAC Browser.

STAC Browser is a web application that takes the catalog URL or API endpoint and allows you to browse and explore the STAC catalogs or APIs. Below, you can see screenshots of my panoramax catalog browsed using STAC Browser.

Panoramax catalog of my picture collections.
Panoramax STAC Catalog of my picture STAC Collections.

Panoramax collection of my picture items from a sequence. This has many image items.
Panoramax STAC Collection of my picture items from a sequence. This has many STAC items.
Panoramax Single Item in the collection. You can see all the details.
Panoramax Single STAC Item in the STAC Collection. You can see all the details.

Where will I use it? I am not sure yet. It is a simple but well-thought-out spec that a lot of folks use. I might expose some of the surveillance camera pictures I have taken or the PostBox collection I have as a STAC formatted dataset. That way, I don't have to build a non-standard API?

In the meantime, you can explore the catalogs I contributed to on panoramax using STAC Browser or the example catalog I hand-coded. If that's not enough, many valuable Public Static Catalogs are here to explore or use or for fun.

You can read this blog using RSS Feed. But if you are the person who loves getting emails, then you can join my readers by signing up.

Join 2,238 other subscribers

1 Response

  1. May 10, 2024

    […] wrote a blog post about STAC specifications. I think it's an interesting spec I would like to explore and maybe use with some of the projects I […]