Full write-up
Methods
Every method described here is implemented (or explicitly pending) in the project repository — this page is a distillation of docs/, not a separate spec.
City selection
The 14-city candidate pool spans four of India’s five broad regions (North, West, South, East, Central — Northeast is omitted for now, flagged for the coverage-check step rather than silently dropped), three population tiers (megacity >4M, large 1–4M, mid-size 0.3–1M), and five qualitative economic tiers, using state-level per-capita NSDP ranking from the RBI Handbook of Statistics on Indian States as a proxy.
Critically, cities were selected before checking imagery availability. The final N=4 study sample is not fixed at selection time — it will be drawn from the candidate pool once coverage is measured (see /coverage), preserving stratification variance while deliberately retaining at least one low-coverage, low-economic-tier city so the study can say something about coverage bias rather than discarding the evidence for it.
Road-network universe
For each city, a drive-network graph is pulled from OpenStreetMap via the Overpass API (osmnx), centered on the city and clipped to a fixed radius. Road geometry is then sampled at fixed spacing to produce a universe of points that represents “every place a street-level photo could plausibly exist,” independent of whether one actually does. This road-network universe is the denominator for every coverage and infrastructure statistic on this site — see /cities for which cities currently have one built.
Imagery coverage measurement
Coverage is measured, not assumed, using Mapillary’s vector coverage tiles queried against each road sample point — a tile-density lookup, not raw image download, kept inside Mapillary’s generous tile-endpoint budget. See /coverage for status; this step is currently blocked on an API token.
Annotation protocol
Five target attributes — sidewalk presence, road surface type, street vegetation, street lighting, and building frontage density — are labeled per street-level frame using a shared five-way label set (positive / negative / uncertain / not_visible / unusable). Each attribute was deliberately scoped to what a careful human annotator can judge from a single monocular frame; road width, crosswalk-level detail, and drainage indicators were cut from an earlier, broader spec because they cannot be reliably inferred this way. Full detail on /vision.
Every labeling batch reserves a fixed 10% double-annotated overlap sample so inter-rater agreement (Cohen’s kappa) can be reported per attribute rather than asserted.
Coverage-bias correction
Missingness in imagery coverage is treated formally, via Rubin (1976)’s MCAR/MAR/MNAR taxonomy, rather than ignored. A propensity model estimates each road point’s probability of having usable imagery from observable covariates (road class, population density, built-up degree, nightlights, distance to center), feeding inverse-probability weighting and post-stratification corrections (Little, 1993; Seaman & White, 2013). A masking experiment on a well-covered city tests whether the correction actually recovers ground truth under a known missingness mechanism. Full detail on /bias.
Cross-city evaluation
Every model is evaluated three ways — random split, spatial split, and full city holdout — because non-spatial validation on geospatial imagery is known to inflate apparent accuracy via spatial autocorrelation leakage (Ploton et al., 2020). Full detail on /generalization.
Limitations
Populations used for stratification are 2011 Census of India figures — the most recent full national census available, since India’s 2021 census was postponed and has not been conducted as of this writing. Cities have grown since 2011; this is a real limitation, not corrected with an estimate.
Economic tier is a documented qualitative placeholder (relative state ranking, not exact per-capita NSDP figures), because the RBI Handbook source is a PDF that could not be machine-read for this pass. Anyone extending this work as a quantitative covariate should pull exact figures from rbidocs.rbi.org.in first.
“Street View for Whom?” (Visokay et al.) is cited in the literature review with a confidence flag — confirmed only via secondary sources, not a directly verified primary source — and should be re-checked before appearing in the paper.
What is explicitly not fabricated
Coverage numbers, image counts, capture dates, model accuracy, and per-city infrastructure statistics all come from a results file produced by a script under src/, traceable to a real API call or dataset. If a number ever appears on this site or in the paper without a backing results file, that is a bug in the site, not a rounding choice — see /data.