I-GUIDE Summer School 2026 · Research Project

The map is not the territory — and we can measure the gap.

OpenStreetMap is superb where many people map and stale where few do. This project builds an end-to-end pipeline that detects that spatial bias with airborne LiDAR and NAIP imagery, quantifies it from city blocks to all 102 Illinois counties, and corrects it — machine-proposing fixes that the mapping community itself later confirmed.

2 regionsUIUC campus · Colorado Springs
102 countiesstatewide Illinois gradient
375,754road segments analyzed
3,434buildings detected from LiDAR
Plate I · The Problem

Volunteered maps have a geography of neglect

In 2019, OpenStreetMap held only 58.3% of the buildings on a university campus tile — and 29.1% in a Colorado Springs residential neighborhood. The omissions are not random: completeness collapses below 0.3 on residential strips while institutional cores sit near 1.0. Whole subdivisions were missing. Downstream users — disaster response, urban analytics, accessibility research — inherit this bias invisibly. Airborne LiDAR sees every roof regardless of who lives under it, which makes it an objective referee.

OSM vs LiDAR building comparison map for the UIUC campus tile
UIUC campus, 2 × 2 km. Left: matched (green) vs missing (red) buildings. Right: the gridded completeness surface — the spatial-bias map.
Plate II · Method

Seven stages, one reproducible notebook

Every stage is a documented script; one notebook runs them all, downloads its own data, and executes unmodified on the I-GUIDE JupyterHub.

RS referenceLiDAR → DTM, 3,434 buildings, 23,915 trees; DGCNN mIoU 0.768
Optical checkNAIP land cover; LiDAR fusion splits buildings from pavement
DetectOSM 2019 vs RS consensus: omissions, support, bias maps
ValidateOSM 2026: did the community confirm our detections?
Scale102-county quality gradient, Census-normalized
Correctpropose → score → prioritize machine fixes
Generalizerepeat on a second region, no retuning
Plate III · Findings

Seven results that survive two regions

58.3%

Omissions are real and spatially structured

OSM 2019 held 58.3% of campus buildings by count (79.4% by area): big institutional buildings get mapped, small residential structures don't.

LiDAR building detection
64–75%

Remote sensing sees gaps years early

By 2026 the community had independently filled 64% of our campus detections and 74.8% in Colorado Springs — they were real buildings all along.

Temporal validation map
99.6%

Roads are fine; buildings and attributes are not

Nearly all road length has pavement evidence in both regions — the TIGER import solved geometry. Only 3.3% of statewide segments carry a speed limit.

NAIP land cover segmentation
ρ = 0.70

Quality follows contributors, not need

Edit recency correlates strongly with population density. Several rural counties were last touched in 2008; urban counties in 2016.

Illinois county choropleth
0.84

Machine correction works — hybrid wins

Rule-regularized LiDAR footprints + a learned acceptance scorer: 84% of the top-50 campus proposals were later confirmed by the community.

Proposal gallery vs community polygons

The method generalizes to harder data

Colorado Springs: ground-only LiDAR at a quarter of the point density, semi-arid landscape — the detection variant transfers with zero retuning.

Colorado Springs building detection
821

Correction winners flip with label volume

With 83 training labels, rules beat the U-Net; with 821, the U-Net wins geometry (IoU 0.769) and the learned scorer hits a perfect top-50.

Colorado Springs proposal gallery
Cook →

A deployment map, not just a diagnosis

Staleness × population exposure ranks where correction pays off first: Cook, Lake and Winnebago counties top the Illinois list.

Deployment priority choropleth
Plate IV · Two Study Regions

A campus and a suburb, seven years of community mapping

Green: mapped in OSM 2019. Blue: our detected gaps that the community filled by 2026 — independent confirmation. Red: still missing today, shipped as ranked correction proposals.

UIUC Campus

QL1 · 20 pts/m² · classified
UIUC temporal evolution
58.3% → 81.9% complete · 64% of gaps community-filled · 195 proposals outstanding

Colorado Springs

~5 pts/m² · ground-only
Colorado Springs temporal evolution
29.1% → 81.3% complete · 74.8% of gaps community-filled · 379 proposals outstanding
metricUIUC campusColorado Springs
OSM 2019 completeness (count / area)58.3% / 79.4%29.1% / 67.6%
gaps community-filled by 202664%74.8%
completeness today81.9% / 91.8%81.3% / 91.9%
road length with pavement evidence99.6% (major)99.9%
Plate V · Correction

From diagnosis to review-ready fixes

Because the community later filled most detected gaps, every machine proposal can be scored against what mappers actually drew — no manual labels. Three approaches compete on held-out ground: rule regularization, a learned U-Net, and a hybrid with a gradient-boosted acceptance scorer. Proposals carry OSM-ready tags but remain research artifacts under the OSM Automated Edits Code of Conduct.

GeometryConfidenceUIUC (83 labels)Colorado Springs (821 labels)
A rulesregularized footprintthreshold tiersIoU 0.677 · P@50 0.62IoU 0.662 · P@50 0.46
B learnedU-Net (NAIP + CHM)mask probabilityIoU 0.589IoU 0.769
C hybridsame as AGBM acceptance scorerAUC 0.738 · P@50 0.84AUC 0.985 · P@50 1.00

The practical recipe: start with rules while labels are scarce, swap in learning as community confirmations accumulate, and always rank the human-review queue with the learned scorer.

Colorado Springs deployment map of ranked proposals
Colorado Springs: 379 still-unmapped buildings, ranked by learned acceptance score for human review.
Plate VI · Data & Reproducibility

Everything is public, fetchable, and re-runnable

One command (python src/prepare_data.py) stages every input from public storage. The notebook is pre-executed — every figure on this page regenerates from scratch.

@software{vgi_spatial_bias_2026,
  title   = {Detecting and Correcting Spatial Bias in VGI Using Remote Sensing},
  author  = {Yang, Yifan and contributors},
  year    = {2026},
  url     = {https://github.com/rayford295/vgi-spatial-bias},
  note    = {I-GUIDE Summer School 2026 project}
}