dbt + Geospatial Transforming Spatial Data in the Modern Stack

This site exists to help analytics engineers, data platform teams, GIS backend developers, and spatial data scientists build production-grade spatial data pipelines using dbt, PostGIS, and DuckDB. It focuses on practical implementation, spatial accuracy, and pipeline reliability — not theoretical GIS concepts.

Each guide is structured around the realities of running spatial workloads inside a version-controlled, DAG-driven warehouse: enforcing CRS governance, materializing GiST indexes via post-hooks, isolating heavy spatial joins from the mart layer, and wiring topology checks into CI so coordinate drift never reaches production.

Coverage now runs from the first CREATE EXTENSION to the last mile: join and predicate tuning, warehouse-native engines such as BigQuery GIS and Snowflake, discrete global grids for engines with no spatial index, a serving tier for tiles and feature APIs, and the observability that keeps a healthy pipeline from quietly becoming an expensive one.

What you'll find here

Core Fundamentals & Architecture

The execution boundaries that separate a brittle GIS script from a reproducible dbt pipeline. Choose the right spatial adapter, set up PostGIS or DuckDB, design dependency graphs, validate geometry, tune the joins that dominate every build, and run the same models on BigQuery GIS or Snowflake when the data already lives there.

Spatial Data Architecture & Governance

Treat geometry, topology, and coordinate systems as first-class citizens. Set CRS governance policy, document spatial lineage, monitor feed freshness, version schemas, scope access, serve tiles and feature APIs without exposing the marts, and keep an eye on what all of it costs.

Advanced Spatial Macros & UDF Patterns

Compile-time abstraction vs. runtime execution. Build reusable spatial macros, keep them portable across warehouses, optimize proximity joins, use index hints intelligently, run incremental spatial materializations at scale, and replace geometry predicates with H3 or S2 grid keys where an engine has no spatial index.

Newest work on the site

Designed for the modern analytics stack

Every page assumes you already speak SQL, Jinja, and DAGs. Code samples target PostGIS, DuckDB Spatial, Snowflake GEOGRAPHY, and BigQuery GEOGRAPHY — with explicit notes when behaviour diverges.