Skip to main content

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-step stac-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

ScenarioSetup
Publish a curated catalogPoint your rasters' metadata at stac-catalog, generate + load, and serve through the bundled STAC stack.
Feed STAC GIS CoreLoad the generated Collections/Items into Core's pgSTAC/STAC API, or run the stack standalone.
Self-host a public catalogExpose 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

PageWhat it covers
InstallationInstall the stac-catalog package and its optional extras
Getting startedLocal end-to-end run: start the stack, generate, load, browse
ConfigurationConfig file, precedence, sources, environment variables
CLI referencegenerate, load, sync, every option, and --prod
MetadataInput tables, filename convention, fields, grouping, dates, depth, styles
DeploymentThe Docker stack, local vs. production, networking, persistence

License

STAC Catalog is licensed under the Apache License, Version 2.0.