A production-grade engineering reference for building reproducible, Python-driven photogrammetry pipelines for drone mapping. Every guide treats photogrammetry as a deterministic software-engineering discipline — strict data schemas, explicit geospatial alignment, and automated resource controls — so a survey that runs on a laptop today runs byte-for-byte the same on a fleet-scale processing farm tomorrow.
This is not another walkthrough of clicking through desktop mapping software. It is copy-ready Python for the failures that actually break mapping jobs: RAM exhaustion during dense matching, silent coordinate-reference-system drift, alignment convergence failures, out-of-memory kills, and batch-scaling bottlenecks — each with the root-cause explanation, a minimal reproducible fix, and the verification step that proves it worked.
- UAV operators & surveying technicians moving past black-box tools who need auditable, repeatable results.
- Python GIS developers wiring OpenDroneMap, OpenSfM, GDAL, PDAL, rasterio, and pyproj into a single inspectable pipeline.
- Mapping & infrastructure teams that need survey-grade accuracy, deterministic outputs, and diagnostics they can automate.
The site is organized into four complete workflows, from raw imagery to survey-grade raster deliverables:
- Core Photogrammetry Fundamentals for Python Pipelines — schema-enforced ingestion, EXIF GPS validation, coordinate reference systems in GDAL, OpenDroneMap automation, flight-overlap calculation, and batch structuring.
- Automated Image Alignment & Feature Matching Workflows — feature detection (SIFT/ORB), bundle-adjustment optimization, parallel matching, and memory-safe point-cloud handling for datasets too large to fit in RAM.
- Ground Control Point Optimization & Coordinate Sync — automated GCP detection, coordinate transformation with pyproj, residual-error distribution across orthomosaics, and survey-grade accuracy thresholds.
- DEM/DSM Generation & Raster Export Automation — rasterizing DSM and DTM surfaces from point clouds with PDAL, exporting Cloud-Optimized GeoTIFFs with rasterio, and deriving contours and hillshade with GDAL.
Each workflow pairs high-level architecture with deep-dive implementation guides and focused problem/fix pages — for example, resolving OpenDroneMap exit codes 1 and 137 (out of memory), fixing OpenSfM bundle-adjustment divergence, decoding GDAL "cannot allocate memory" on export, and diagnosing empty or black orthomosaic tiles.
- Runnable, validated code. Every snippet is syntactically valid Python 3.10+, written to drop straight into a pipeline.
- Failure-first. Pages lead with the concrete symptom you're seeing, explain the root cause, then give the narrowest fix and a verification check.
- Deterministic by design. Explicit CRS handling, pinned dependencies, and resource caps — same imagery and configuration, same output, every run.
- Densely cross-linked. Concepts link to the guide that implements them, so you can go as deep as the problem requires.
Static site generated with Eleventy, hand-authored inline SVG diagrams, server-rendered KaTeX for the math, and structured data (JSON-LD) on every page. Deployed on Cloudflare.
Start at www.dronephotogrammetry.org and follow the workflow that matches the problem in front of you.