Use a STAC to catalogue all imagery assets¶
Context and Problem Statement¶
We need a way to:
- Store metadata about all the imagery in OpenAerialMap.
- Query the metadata, ideally using filters.
- Use an API for discoverability of assets, allowing various downstream components to load in imagery easily.
Historically OpenAerialMap used a MongoDB metadata database to store imagery info.
While this worked, it was a custom schema and API that required ongoing maintenance, and it was difficult for external tools to consume without writing bespoke integrations.
The STAC Spec (Spatio-Temporal Asset Catalogue) is now a well established, community-driven approach to cataloguing various geospatial assets.
There are numerous tools built around STAC, from pre-built web UIs, Python modules to discover and read imagery, etc.
Considered Options¶
I think we only really considered STAC, as it's the primary standard built for geospatial metadata cataloguing.
Decision Outcome¶
We chose STAC as the only sane option in 2025!
Consequences¶
- ✅ Interoperability: Many existing clients and libraries can query and parse STAC, removing the need for us to maintain bespoke things.
- ✅ Discoverability: STAC API implementations (e.g., PySTAC, stac-fastapi) allow easy filtering by time, location, and metadata attributes.
- ✅ Future-proofing: The STAC community continues to evolve the spec, adding extensions for new metadata needs (e.g., processing levels, cloud storage locations). Should also reduce maintenance burden as a result.
- ❌ Not many downsides. Possible learning curve with STAC, but lots of resources available online. It's also bit more complex than our simple metadata schema previously.