CROWDSENSING LABUniversity of Houston

Crowdsensed mapping after disasters

Proteus

After a disaster, volunteers walk the area with their phones. Proteus checks every GPS fix against the other volunteers and the pre-disaster map, and keeps only the roads that people could actually travel.

Area

A downtown-style street grid, rotated like central Houston.

The disaster
10%

Click a road on the map to destroy or restore it.

Volunteers
16
300
3 m
Loading…
Proteus settings · changes re-run Proteus on the same traces
10 m
3
15°
20 m
–of junctions reached by ≥ 3 volunteers
–of GPS fixes verified
–of passable roads recovered
–of the Proteus map is passable
–of destroyed roads removed
–intersections detected

Everything runs in your browser: a JavaScript port of the reference implementation simulates the volunteers, then runs point-wise verification, intersection detection and map combination.

Method

Four stages from noisy traces to a usable map

Crowdsensed data is inconsistent: phones are noisy, volunteers wander, and two roads can look connected when they cross at different levels. Proteus never trusts a single trace. Each stage below can be shown on the map above.

  1. 1 · Collect

    Send volunteers out with rules

    The area is divided into cells and volunteers are spread across them. They stay inside their box, keep to the centre of the road, and circle every intersection before choosing an exit.

    Algorithm 1 · movement rules 1–4
  2. 2 · Verify

    Keep only confirmed points

    A GPS fix counts only if at least three other volunteers recorded a fix within θ of it, and it lies within θ of a pre-disaster road. Runs of verified fixes become verified edges.

    Algorithm 2
  3. 3 · Connect

    Find the real intersections

    Circling an intersection leaves a small loop in the combined traces. Proteus looks for those loops and collapses each into one junction, so crossings without a loop, like a footbridge over a road, stay separate.

    Algorithms 3–4
  4. 4 · Combine

    Confirm the pre-disaster map piece by piece

    The old map is cut into short sub-edges. A sub-edge stays only if at least two verified edges agree with it: aligned within ω and overlapping for most of their length.

    Algorithms 5–6

Results

Tested on two very different parts of Houston

The paper evaluates Proteus with an agent-based simulation on Downtown Houston, a regular street grid, and the University of Houston campus, a network of curving footpaths. The “x-edge” models need x volunteers to confirm each edge. Three confirmations are the practical minimum; two leave large gaps.

Research directions

Do you want to work on this type of problem?

Then contact me at rsarbajna@uh.edu. Proteus has so far been tested in simulation, and the projects below move it toward real deployments. Each one starts from code that already exists in the repository.

Contact Raunak Sarbajna

Code & data

Reference implementation and published data

The Python package implements Algorithms 1–6, the volunteer simulator and every experiment in the paper. It runs on real GPS traces as well as simulated ones.

Run it
git clone https://github.com/RaunakDune/proteus-implementation
cd proteus-implementation && pip install -e ".[analysis]"
proteus simulate --grid 6,6,100 --agents 24 --steps 1000 --out sim/
proteus run --map premap.csv --traces traces.csv --out out/
Cite
@article{sarbajna2026proteus,
  title   = {Proteus: A system for combining paths collected using crowdsensing},
  author  = {Sarbajna, Raunak and Eick, Christoph F. and Ni, Jianyuan},
  journal = {GeoInformatica},
  volume  = {30},
  eid     = {7},
  year    = {2026},
  doi     = {10.1007/s10707-026-00567-1}
}