---
title: "AutoGeoRef places 78% of Sanborn sheets — and refuses the ones it cannot justify"
locale: "en"
url: "https://irz.fr/en/articles/autogeoref-sanborn-refuse-uncertainty-en"
markdown_url: "https://irz.fr/en/articles/autogeoref-sanborn-refuse-uncertainty-en.md"
category: "tech"
tags: ["AutoGeoRef", "Sanborn", "cartography", "georeferencing", "RANSAC", "archives", "GIS"]
published_at: "2026-08-31T09:00:00.000Z"
author: "Léa Perrin"
translation: "https://irz.fr/fr/articles/autogeoref-sanborn-refuser-incertitude-fr.md"
---

# AutoGeoRef places 78% of Sanborn sheets — and refuses the ones it cannot justify

AutoGeoRef automates the first placement of Sanborn maps without confusing an estimate with truth. Its most useful mechanism may be its ability to refuse a sheet.

A Sanborn sheet knows plenty about a building: shape, construction, use, lot boundaries and nearby streets. What it lacks is the first thing a GIS wants: **a place to put the page on Earth**.[4](https://www.loc.gov/collections/sanborn-maps/about-this-collection/)

At Library of Congress scale, that missing coordinate becomes a bulk problem: the Sanborn package exceeds 50,000 map records and 440,000 images.[3](https://data.labs.loc.gov/sanborn/) A researcher can open the scans. That does not make them automatically overlayable on present-day Chicago.

Matt Hendrick built AutoGeoRef to avoid repeating that placement manually for page after page.[1](https://github.com/matt-hendrick/autogeoref) The interesting part is not a vision model somehow “understanding” an old map. The model does not actually place the sheet.

It reads clues. **Deterministic code then proposes, challenges and sometimes rejects the placement.**

## The model reads

AutoGeoRef first makes a smaller copy that a vision reader can take in at once. The reader marks street names, positions and directions; later geometry returns to the full-resolution pixel frame.[1](https://github.com/matt-hendrick/autogeoref)[2](https://autogeoref.com/walkthrough)

Two crossed labels on paper suggest a junction. The program then asks where those two street names meet in modern geometry. One point now has two coordinate systems: pixels on the historical page and geographic coordinates in the current city.[2](https://autogeoref.com/walkthrough)

With enough pairs, AutoGeoRef can search for a transformation between paper and ground.

> **The model does not georeference the map**
> Four-stage pipeline showing the historical scan, vision reading street names, deterministic lookup of modern intersections and a transformation fitted with validation gates
> - VISION READS · CODE PLACES
> - SCAN
pixels
no coordinates
> - VISION
street names
+ axes
> - MATCH
modern
intersections
> - FIT
transform
+ gates
> - A bad reading can be rejected without changing the historical scan.
> AutoGeoRef uses the model to extract visual clues. Placement then moves through a reproducible pipeline.

The split changes what happens when a read is wrong.

If the reader sees `WALLACE` where the sheet says `W. LAKE`, the mistake becomes an inconsistent street proposal. AutoGeoRef's walkthrough documents exactly that case: the first read produces too few useful corners and the fit is refused. A stronger reader can try again, but **the acceptance rules are not loosened to rescue the page**.[2](https://autogeoref.com/walkthrough)

## RANSAC is not enough

The first placement goes through RANSAC: sample a few correspondences, calculate the transform they imply, then make the remaining points prove that they belong to the same answer. In the project's worked example, the search runs 5,000 trials and treats points within 25 metres as agreeing with a candidate model.[2](https://autogeoref.com/walkthrough)

RANSAC discards plenty of bad pairs. A page can still be neatly aligned to the wrong block.

A handful of internally consistent intersections can support a mathematically tidy transformation in the wrong place. A parallel street one block away may produce a disturbingly plausible answer.

The project surrounds that fit with seven separate refusal gates. A sheet cannot be mirrored; its scale and rotation need to fit the rest of the volume; stretching is bounded; anchors need to occupy enough of the page instead of forming a narrow line. A leave-one-out check also asks whether removing a single anchor destroys the solution.[2](https://autogeoref.com/walkthrough)

A small residual is therefore not independent evidence. The same points can build a model and then congratulate it.

## The volume checks the sheet

One page is easy to fool. The whole bound atlas is harder.

Atlas sheets are not independent samples. They were printed in the same book, at scales and orientations that do not change arbitrarily, and AutoGeoRef uses that mundane physical fact as evidence. An initial pass establishes the volume's behaviour, then later placements need to remain inside compatible windows.[2](https://autogeoref.com/walkthrough)

The volume can also help a page that has too little evidence of its own. Once scale and orientation are sufficiently established by the volume, a sheet with too few useful intersections can sometimes be solved mostly as a translation. Fewer anchors become meaningful because four of the transformation's unknowns have already been constrained.[2](https://autogeoref.com/walkthrough)

Crucially, that sheet can retain the fact that its orientation came from the volume rather than from its own evidence.

That provenance tells more than a lone confidence percentage.

“Placed” hides the method. “Strict accept”, “rescued using volume parameters” and “reviewer-verified” describe **why the result exists**.

## When the present contradicts the past

The revealing case is the sheet for which the software cannot find a convincing answer.

The matcher eventually compares two historical objects: an old sheet and a city that has spent a century changing underneath it.

Highways erase blocks. Urban renewal removes streets. Names change. Shorelines are filled. Parks, rail yards and the old Chicago World's Fair site provide few modern intersections corresponding to what the sheets once described.[1](https://github.com/matt-hendrick/autogeoref)

A street that cannot be found in 2026 may be evidence of demolition or renaming, not a broken matcher.

Forcing an answer would effectively make the 2026 street grid judge the 1905 one, then blame the archival sheet for everything the city changed later.

AutoGeoRef leaves some sheets unpublished instead. Its export documentation says flagged sheets are excluded. Human corrections carry a separate `reviewer-verified` status and can be distinguished from automatic accepts.[1](https://github.com/matt-hendrick/autogeoref)

> **Do not collapse three different truths**
> Three separate layers showing an intact historical scan, georeferencing ground control points with status metadata, and the modern street network used for comparison
> - THE TRANSFORM IS A LAYER, NOT A REWRITE
> - 1 · SCAN
historical pixels
source intact
> - 2 · GCP
proposal + status
inspectable
> - 3 · CITY
current network
that changed
> - A placement error can be corrected in layer 2 without erasing the old document or the city's later changes.
> Keeping the transformation separate from the scan makes a placement revisable without manufacturing a new historical source.

## 5.4 metres from a human

Chicago's numbers also make the demo harder to oversell.

Across 35 Chicago volumes that can be compared with human georeferencing on OldInsuranceMaps.net, AutoGeoRef reports publishing 78% of 3,773 sheets. The typical difference from the human placement is **5.4 metres**.[1](https://github.com/matt-hendrick/autogeoref)

That should not be rewritten as “5.4 metres of absolute error.” OldInsuranceMaps.net is a **human reference**, created through a crowdsourcing workflow documented by Adam Cox, rather than perfect geodetic ground truth.[5](https://doi.org/10.1080/15420353.2024.2326812)

The median still hides an uncomfortable tail: **10.8% of published sheets in that Chicago comparison are more than 15 metres from the human placement**.[1](https://github.com/matt-hendrick/autogeoref)

The project notes that a standard Chicago lot is about 25 feet, or 7.6 metres, wide. Fifteen metres can therefore move a historical building by multiple lots.[1](https://github.com/matt-hendrick/autogeoref)

So AutoGeoRef is better described as a strong starting position than a cartographic oracle. **It removes much of the first-pass labour while leaving doubtful sheets visible as doubtful.**

## Publish the uncertainty

The exports preserve that caution after the placement run ends.

In `gcps/p<N>.json`, the sheet keeps the pairs that pin it down: a source-image pixel on one side, a WGS84 coordinate on the other. The project also generates IIIF Georeference annotations that target the Library of Congress image service instead of redistributing a newly baked “corrected” raster.[1](https://github.com/matt-hendrick/autogeoref)

A different viewer can redo the warp instead of trusting a baked rectified image.

A baked rectified image can hide the decision. Ground control points expose it: these are the correspondences that produced this particular placement.

A researcher can move a point, swap a reference dataset, recalculate and compare the new placement with the old one.

For archives, scientific datasets or any system aligning old documents to modern reference data, that may be AutoGeoRef's most reusable idea: **automate the proposal without automating away the conditions under which the proposal is valid**.

Perhaps the strongest feature is that `REJECTED` is a real output. A later researcher can find the sheet, see why it failed or passed, and try again with better evidence.

## References

1. [Matt Hendrick, AutoGeoRef — README and source code](https://github.com/matt-hendrick/autogeoref)
2. [AutoGeoRef, How a scanned atlas becomes a map](https://autogeoref.com/walkthrough)
3. [Library of Congress, Sanborn Maps data package](https://data.labs.loc.gov/sanborn/)
4. [Library of Congress, Sanborn Maps Collection](https://www.loc.gov/collections/sanborn-maps/about-this-collection/)
5. [Adam Cox, Toward a Georeferencing Commons: A Crowdsourcing Case Study and the Creation of OldInsuranceMaps.net, Journal of Map & Geography Libraries, 2024](https://doi.org/10.1080/15420353.2024.2326812)
