STAC Catalog
STAC Catalog (stac-catalog) is a Python toolkit that turns structured
raster metadata — a CSV file or a Google Sheet — into valid
Spatio-Temporal Asset Catalog (STAC) Collections and
Items, loads them into pgSTAC, and serves them through a ready-made
Docker stack (pgSTAC + STAC FastAPI + TiTiler + STAC Browser).
It is not a browser or a fork of stac-browser. It is the ingestion pipeline that builds a clean, STAC-compliant catalog from the metadata you already keep in spreadsheets, so you can browse and query your rasters without hand-writing STAC JSON.
:::info Where STAC Browser fits
The Docker stack bundles the upstream
radiantearth/stac-browser as the
human-facing front end, plus
TiTiler for raster rendering and
previews. stac-catalog is the tool that generates and loads the data those
services serve.
:::
How it works
CSV ────────────┐
├──> normalized metadata (DataFrames)
Google Sheets ──┘ ↓
stac-catalog
↓
Collections + Items (STAC JSON)
↓
pgSTAC
↓
STAC FastAPI
↙ ↘
STAC Browser TiTiler
CSV and Google Sheets are just source adapters: both are normalized into the same internal tables before generation, so the STAC builder does not depend on where your metadata lives.
Features
- Two metadata sources — CSV files and Google Sheets, normalized to the same internal model.
- Collections & Items — grouped and non-grouped datasets, including grouped Data Cube variables and dimensions.
- COG inspection — reads Cloud Optimized GeoTIFFs to derive geometry, CRS, resolution, dtype, nodata, scale, offset, file size, and checksum.
- Filename-based parsing — derives product, statistic, resolution, dates, region, EPSG, version, depth, and variants from conventional raster names.
- Data Cube metadata — variables, depth (z) axis, positional statistics, and variants.
- Rich STAC fields — DOI, citation, providers, catalogs, and more.
- Style assets — QML and SLD linked to matching raster variables.
- TiTiler integration — thumbnails, colormaps, and rescaling written into the STAC assets.
- Validation — input metadata is validated before generation, with clear row-level error messages.
- Loading — pgSTAC upsert via
stac-catalog load, or a generate-and-load one-stepstac-catalog sync. - Production loading — run database-dependent commands inside the private
Docker network with
--prod, keeping PostgreSQL off the public network. - Docker Compose stack — pgSTAC, STAC FastAPI, TiTiler, and STAC Browser
in one
docker compose up.
How it fits into STAC GIS
| Scenario | Setup |
|---|---|
| Publish a curated catalog | Point your rasters' metadata at stac-catalog, generate + load, and serve through the bundled STAC stack. |
| Feed STAC GIS Core | Load the generated Collections/Items into Core's pgSTAC/STAC API, or run the stack standalone. |
| Self-host a public catalog | Expose STAC FastAPI + STAC Browser + TiTiler behind a reverse proxy; keep the database private (see Deployment). |
💡 STAC GIS Core is the full platform (storage, app, AI). The Catalog is the lightweight, spreadsheet-driven tool that produces STAC metadata and a serving stack. You can use the Catalog on its own to publish any set of rasters as a STAC catalog.
Documentation map
| Page | What it covers |
|---|---|
| Installation | Install the stac-catalog package and its optional extras |
| Getting started | Local end-to-end run: start the stack, generate, load, browse |
| Configuration | Config file, precedence, sources, environment variables |
| CLI reference | generate, load, sync, every option, and --prod |
| Metadata | Input tables, filename convention, fields, grouping, dates, depth, styles |
| Deployment | The Docker stack, local vs. production, networking, persistence |
License
STAC Catalog is licensed under the Apache License, Version 2.0.