Data Sources
1. Core spatial datasets
These datasets form the backbone of the quantitative analysis
(bus stop density, 500 m Euclidean coverage, network-based walking coverage,
nearest-neighbour distances, and KDE surfaces).
1.1 City boundaries
New York City
Borough boundaries from NYC Open Data
(NYC Borough Boundaries; used to define the built-up area of the five boroughs).Singapore
Planning area polygons from the 2019 Master Plan on data.gov.sg,
aggregated to the national extent.Amsterdam
Administrative areas from Open GEO-Data Amsterdam
(Gemeente Amsterdam – stadsdelen / neighbourhood boundaries).Shanghai
City boundary from Simplemaps (Shanghai polygon extracted from a global cities dataset).
This polygon includes some non-built-up land and water areas, but is used as an approximation of the municipal extent due to the lack of free official GIS boundary data.
1.2 Bus stops
New York City
Bus Shelters dataset from NYC Open Data.
This represents the locations of bus shelters rather than every physical stop pole, but coverage is high and spatially consistent, and is therefore used as a proxy for bus stops.Singapore
Bus Stop Locations from the Land Transport Authority (LTA) via data.gov.sg, including official stop codes and coordinates.Amsterdam
OpenStreetMap bus stops (highway=bus_stop) retrieved via the
Overpass API. These were clipped to the Amsterdam municipal boundary.Shanghai
OpenStreetMap bus stops (highway=bus_stop) retrieved via the
Overpass API, then clipped to the (Simplemaps-based) city boundary.
1.3 Street networks (for network-based coverage)
Network-based walking coverage requires a walkable street network for each city. These were obtained from:
- OpenStreetMap (OSM) street data
Retrieved automatically via OSMnx, using thegraph_from_place()method withnetwork_type = "walk"to filter pedestrian-accessible paths.
For each city, the resulting networks typically include:
- pedestrian paths,
- sidewalks and crossings,
- local streets and connectors,
- bridges and underpasses where mapped in OSM.
They generally exclude private or unmapped passages, which may cause network-based accessibility estimates to be conservative in some areas.
Data limitations
- OpenStreetMap data (Amsterdam, Shanghai) may miss a small share of minor stops, especially in peripheral areas.
- NYC bus shelters under-represent stops without shelters, but capture the main passenger hubs and urban corridors.
- OpenStreetMap street networks may be less detailed in industrial or peri-urban zones, leading to slightly understated network-based coverage.
- The Shanghai boundary is broader than the actual built-up area, including river surfaces and some industrial / rural land. This is noted explicitly in the Shanghai city profile and should be kept in mind when comparing densities across cities.
2. Derived indicators
All indicators in the analysis were computed from the datasets above.
Area (km²)
Total area of each city’s boundary polygon in a projected CRS.Number of stops
Count of bus stops inside each city boundary.Bus stop density (stops per km²)
Simple ratio of total stops to total area.500 m Euclidean coverage ratio / area
For each city, 500 m circular buffers were generated around all stops, dissolved into a single coverage polygon and intersected with the boundary. The coverage ratio is:Coverage_500m = (Area within 500 m of any stop) / (Total city area)
500 m network-based coverage ratio / area
For each city, a walkable street network was built from OSMnx.
Bus stops were snapped to the nearest network nodes, and all nodes reachable within 500 m along the network were identified using shortest-path distances. The corresponding road segments were buffered into polygons and intersected with the city boundary:Coverage_network = (Area within 500 m walking distance along the street network of any stop) / (Total city area)
Nearest-neighbour statistics
Using a KDTree on projected coordinates, the distance from each stop to its nearest other stop was computed. From this distribution the mean, median, 90th percentile, minimum and maximum distances were summarised.Kernel density estimation (KDE)
A 2D Gaussian kernel density was fitted to stop locations for each city to visualise high- and low-density corridors in the maps.
3. Contextual reference maps and images
The project also uses several illustrative bus maps and photographs to provide qualitative context for interpreting the spatial indicators. These do not enter the quantitative calculations, but they help relate the patterns to each city’s transport system.
3.1 Overview page images
New York City bus photograph
Image of an MTA bus in service, used on the “Why these four cities?” page to illustrate the NYC network.
Source: Bloomberg – “Free NYC buses complicated by bond-paying pledge”.Singapore bus network map (
image/Singapore_Lines.png)
Stylised bus route map produced by the Land Transport Authority (LTA), used to show the structure of the island-wide network.
Source: Land Transport Authority, Singapore – Bus Route Map.Amsterdam bus photograph / schematic (
image/ams_bus.png)
Image illustrating GVB-operated buses in Amsterdam.
Source: GVB / Amsterdam public transport promotional materials.Shanghai bus network overview (
image/Shanghai_Lines.png)
Screenshot of the bus and transit network from Google Maps Transit layer, cropped to the core urban area.
Source: Google Maps – Transit (Shanghai).
3.2 City profile reference maps
Each city-specific page includes one additional reference map of the local bus system:
New York City – Manhattan bus map
(image/manhattan-bus-map.png)
Extract from the official MTA Manhattan Bus Map, used as a high-density reference to explain the strong clustering of stops in Manhattan.
Source: Metropolitan Transportation Authority (MTA) – Official Manhattan Bus Map.Singapore – island-wide bus routes
(image/Singapore_Lines.png)
LTA’s bus route map showing trunk corridors, expressways and cross-island links. This helps interpret the KDE results and the relatively short nearest-neighbour distances.
Source: Land Transport Authority, Singapore – Bus Route Map.Amsterdam – GVB bus network
(image/Amsterdam_Lines.png)
Map of GVB bus lines in greater Amsterdam, highlighting the dense radial routes around the historic centre and links to peripheral districts such as Bijlmer and Slotervaart.
Source: GVB / Amsterdam bus network map.Shanghai – Google Transit bus network
(image/Shanghai_Lines.png)
Google Transit view of Shanghai’s bus network within the main urban municipality, showing radial corridors from the inner ring roads towards the suburbs and connections to metro and railway hubs.
Source: Google Maps – Transit layer for Shanghai.
These contextual materials are cited to acknowledge their origin and to clarify that they serve only as visual references, while all quantitative results (densities, coverage, nearest-neighbour distances, network-based coverage and KDE surfaces) are based exclusively on the open spatial datasets listed in Sections 1 and 2.