Historical maps & georeferencing
Putting scanned old maps on today's grid: control points, transformations, warping, accuracy, and measuring what has changed since.
A scanned map is a picture until someone says where its pixels are. Georeferencing does that with ground control points — places that exist on the old sheet and in modern data — and a transformation fitted to them. The guides here work through it on the Ordnance Survey six-inch sheets of Rutland, surveyed in the 1880s, against OpenStreetMap today.
The hard part is not the software. It is choosing points that really are the same place a century apart, picking a transformation that predicts rather than merely fits, and measuring the accuracy honestly: leave-one-out error, not residuals. On the Oakham sheet that error is tens of metres, and any change you measure on an old map has to be larger than it.
The concepts explain control points, transformations and the accuracy of the original surveys; the how-to guides download, georeference, overlay, mosaic and digitise real sheets; and the fixes cover maps that land in the wrong place, fold at the edges or hide behind a black border.
🧭 Start with the concepts
The ideas the how-to guides below assume you already have.
- Georeferencing Explained: Turning a Scanned Map into Spatial Data
- Ground Control Points Explained: What Makes a Good One
- Georeferencing Transformations Explained: Affine, Polynomial and Thin-Plate Spline
- How Accurate Is a Historical Map? Measuring Survey Error
- Old Map Projections Explained: What Grid Was a Historical Map Drawn On?
⚙️ Then do the task
Step-by-step walkthroughs with code you can copy and adapt.
- How to Find and Download Scanned Historical Maps in Python
- How to Pick Ground Control Points for a Scanned Map in Python
- How to Georeference a Scanned Map with GDAL in Python
- How to Compare Georeferencing Transformations in Python
- How to Georeference an Early County Map in Python
- How to Draw a Distortion Grid on an Old Map in Python
🔧 When it breaks
The errors this topic produces, with the cause explained rather than just the command.
Related topics
Subjects that keep coming up alongside this one, most overlap first.