The comprehensive, practitioner-focused resource for automated spatial data validation and quality control. → spatial-data-validation.com
Bad geometry, mismatched projections, and silent schema drift are the quiet failure modes of every geospatial program — they corrupt analysis, break pipelines, and fail audits long after the data has shipped. This site is a growing library of in-depth, production-tested guides that show you how to catch those problems automatically, before they reach downstream consumers. Every article pairs the underlying standards (ISO 19157, OGC Simple Features, INSPIRE) with runnable Python and SQL you can lift straight into your own pipeline.
It is written for the people who own spatial data quality: GIS analysts, QA engineers, data stewards, platform teams, and compliance officers — from a single analyst cleaning a parcel layer in QGIS to a platform team running validation across millions of features a day.
Over 50 interlinked guides across four areas, each building from fundamentals to production:
- Core QC fundamentals & standards — geometry and topology validity, coordinate reference system (CRS) precision, and attribute schema enforcement: the contracts every dataset must satisfy, grounded in OGC and ISO 19157.
- Governance & compliance — turning quality objectives into enforceable policies, aligning with INSPIRE and ISO 19157, scoping audits, and assigning stewardship with a RACI matrix.
- Validation pipeline architecture — DAG design, GeoPandas rule engines, Dask batch scaling, Celery async queues, automated geometry remediation, continuous-integration gates, error classification, and observability with data lineage.
- Tooling & framework selection — practical, workload-driven comparisons: PostGIS vs GeoPandas at scale, Airflow vs Prefect, Shapefile vs GeoPackage vs GeoParquet, and declarative validation with Pydantic and Great Expectations.
Every page carries a hand-drawn architecture or data-flow diagram, a step-by-step procedure with verification checks, a failure-mode reference, and structured data for search — no fluff, no stock imagery, no paywall.
- Runnable, not hand-wavy — real Python and SQL that executes, with expected output and verification steps, not pseudocode.
- End-to-end — the full lifecycle, from a single invalid polygon to a lineage-tracked, audit-ready pipeline running in continuous integration.
- Standards-anchored — grounded in OGC, ISO 19157, and INSPIRE, then translated into code.
- Fast and accessible — a static, dependency-light site that passes automated performance, accessibility (WCAG 2 AA), structured-data, and link-integrity checks on every build.
If you work with geospatial data, bookmark spatial-data-validation.com, share it with your team, and star this repository to follow along as coverage grows.
- Eleventy static site generator
- Content authored in Markdown under
content/ - Nunjucks layouts and partials in
_includes/ - Vanilla CSS in
assets/css/ - Deployed to Cloudflare Pages
content/ Markdown articles (one index.md per URL)
_includes/ Base layout, article/section layouts, header & footer partials
assets/ CSS, icons, images, service worker, manifest
index.njk Home page
sitemap.njk Generated sitemap.xml
.eleventy.js Eleventy configuration (filters, transforms, passthroughs)
npm install
npm run build # build the site into _site/
npx @11ty/eleventy --serve # local dev server with live reloadnpm run deploy # build, then publish to Cloudflare Pages via WranglerDeployment reads Cloudflare credentials from a local .env file, which is not part
of this repository. Create your own .env with CLOUDFLARE_API_TOKEN and
CLOUDFLARE_ACCOUNT_ID to deploy.
Content and code © the site maintainers. All rights reserved unless a LICENSE
file states otherwise.