City Planner ← Open the planner

Methodology

City Planner ranks where a city should add public infrastructure — toilets, benches, bike parking, drinking water and more — by combining how far people have to walk to the nearest existing asset with how disadvantaged the surrounding area is. This page explains exactly how the numbers are produced, what data sits behind them, and where the method falls short.

The score: Total Equity Score (TES)

Every analysis unit (a small neighbourhood cell) gets a Total Equity Score from 0 to 100. A higher Score means the area is better served — the gap is small. A lower Score means it is underserved and higher-need.

TES = 100 × (1 − GapScore × EquityIndex) GapScore and EquityIndex are each normalised to the 0–1 range within a city.

Because GapScore and EquityIndex are multiplied, a unit only scores badly when it is both poorly served and disadvantaged. A well-off area with a long walk to the nearest bench, or a deprived area that already has good coverage, both land in the middle of the scale. The places that rise to the top of the priority list are the ones where need and gap coincide.

GapScore — walking-network distance

GapScore measures how far residents actually have to walk to reach the nearest existing asset of the chosen type. Distances are computed over the real pedestrian network — streets, paths and crossings drawn from OpenStreetMap — using a shortest-path (Dijkstra) search, not a straight-line "as the crow flies" radius. Walking around a rail line, a river or a motorway is counted, so the gap reflects the trip a person would really make.

The resulting walking distance for each unit is normalised to 0–1 across the city: the unit with the worst access sits near 1, the best-covered unit near 0.

EquityIndex — who is affected

EquityIndex weights the gap by how much it matters. It blends two ingredients per unit — local socioeconomic deprivation and demand density (how many people or points of interest are nearby) — and rescales the result so that the least disadvantaged areas keep a small but non-zero weight:

EquityIndex = 0.1 + 0.9 × mean(deprivation, demand density) Both inputs are normalised 0–1 within the city before averaging.

The 0.1 floor means even comfortable, busy areas are never treated as worth zero — a gap there still counts, just less. The 0.9 span lets the most deprived, most-used areas carry close to full weight.

Selecting locations — greedy near-optimal

Once every unit is scored, City Planner chooses a budget of n new locations that reduce the total weighted gap the most. It does this greedily: it repeatedly adds the single candidate location that delivers the largest remaining improvement, then re-evaluates, because placing one new asset changes the gap for every nearby unit.

The objective is submodular (each additional asset helps a little less than the last), and for that class of problem the classic result of Nemhauser, Wolsey & Fisher (1978) guarantees the greedy selection reaches at least 1 − 1/e ≈ 63% of the best possible improvement of any selection of the same size. In practice it usually does far better; the guarantee is a worst-case floor, and it lets the tool stay fast and interactive instead of solving an intractable exact optimisation.

How the coverage percentage is measured

The headline coverage figure is the demand-weighted share of analysis units that sit within the 500 m service distance of an asset. To keep that number consistent with the walking-network gap map, the existing-coverage baseline uses the same network walking distance as GapScore — not a straight line. New candidate locations are matched to nearby demand with a fast straight-line search whose radius is shrunk by a circuity factor of ≈ 1.35 (a typical urban street-network detour ratio, after Boeing 2019), so "reachable in a straight line" approximates "reachable on foot." Without that correction a straight-line radius would overstate how much each new site really covers. The in-app what-if planner uses the same 1.35 factor for its live straight-line estimate, which is clearly labelled as an approximation of the rigorous network figure.

Deprivation data, per city

Deprivation is the one input that has to come from each country's own statistics, so the source and vintage differ by city. The tool normalises each source within its own city, so scores are relative within a city and should not be compared one-to-one across cities.

CityDeprivation sourceVintage
Paris INSEE FILOSOFI (localised disposable-income / poverty indicators) 2019
Antwerp Statbel BIMD (Belgian Index of Multiple Deprivation) 2011 — noticeably older than the others; treat with extra caution
London ONS Index of Multiple Deprivation (IMD) 2019
Antwerp's deprivation layer dates from 2011. Neighbourhoods can change a great deal in a decade, so Antwerp results carry more uncertainty than Paris or London and should be read as indicative rather than current.

Asset & network data

Existing assets (the toilets, benches, bins, water points and so on already on the ground) and the pedestrian network both come from OpenStreetMap, used under the Open Database License (ODbL). OSM is community-maintained and richly detailed in city centres.

Limitations — read these before you act on a result