CASA0029 Urban Data Visualisation
In 2014, London closed 10 fire stations and cut 552 firefighter posts. 1.3 million emergency calls later, what has changed?
Living in London, fire engines are a familiar sight, rushing past with sirens on, several times a day. This raises a natural question: are there really that many fires? And are they concentrated in the busy city centre? To find out, we made two assumptions going in:
In our data exploration, both assumptions turned out to be wrong. Since 2014, London Fire Brigade has answered over 1.3 million calls, but only 14% in 2025 were actual fires. The share of real fires has fallen steadily, while Special Service calls have surged from 30% to 41% of all incidents. The brigade is being reshaped by demands that have nothing to do with flames.
The composition of emergency calls is itself a signal, one that tells us how a city's pressures are changing over time.
London Fire Brigade answers over 100,000 calls a year, but what those calls actually are has changed fundamentally. Three trajectories have emerged since 2014, each telling a different story about what the city is asking of its emergency services.
False alarms account for nearly half of all call-outs, with 77% triggered by Automatic Fire Alarms in commercial buildings and institutions, a systemic infrastructure failure that has generated over 600,000 wasted responses since 2014. Real fires, meanwhile, have fallen by nearly half, reflecting the success of building regulations and smoke alarm adoption; yet dwelling fires remain the dominant category, stubbornly concentrated in residential areas. The sharpest growth has come from a third direction entirely: Special Service calls have surged from 30% to 41% of all incidents. Forced entries are up 127%. Agency assists, supporting the police, NHS, and other overstretched services, have increased nearly tenfold. These are not fire emergencies. They are distress signals from an ageing population and a public sector under pressure.
Nearly 1 in 2 calls is a wasted trip.
Fire incidents have dropped significantly since 2014. Building regulations and smoke alarms are working. Dwelling fires dominate.
Special service now accounts for 41% of all calls. Since 2014, forced entries have grown +127% and agency assists are nearly 10× higher (560 in 2014, 5,427 in 2025). The brigade increasingly handles incidents that are not fires at all.
Together, these three trajectories expose a structural mismatch at the core of London's emergency system. The brigade is being asked to absorb demand it was never designed for, while simultaneously losing nearly half its operational capacity to wasted trips. Fire incidents declining is a resilience success, but it does not mean the system is under less pressure. It means the nature of that pressure has changed, and the infrastructure has not kept pace.
Knowing what the brigade responds to is only half the picture. The other half is where. Emergency calls do not distribute evenly across London, their spatial patterns reveal the underlying geography of urban risk, infrastructure, and social need.
Mapping 1.3 million incidents at 250m grid resolution reveals three completely distinct spatial signatures. Fire density concentrates in inner London's residential corridors, with sharp hotspots along the Thames and in east London boroughs. False alarm density clusters around commercial and institutional zones, the CBD, hospital campuses, and office districts, reflecting the geography of AFA-equipped buildings. Special service density spreads the widest, extending into outer boroughs and growing there fastest.
Ward boundaries are administrative units that can mask significant internal variation, a single ward may contain both dense commercial streets and quiet residential estates. A uniform 250m grid avoids this aggregation bias, revealing sub-ward spatial heterogeneity that would otherwise be invisible.
The three maps make the mismatch visible: the system's historical infrastructure was built around the fire density pattern, concentrated in the centre. But special service demand is spreading outward, into areas the network was not designed to serve at scale.
Risk is shaped by both hazard and vulnerability. The 250m grid reveals where incidents concentrate; response time reveals how quickly help arrives.
Response time is the most direct measure of a fire service's effectiveness. But London is not uniformly served, the time it takes for the first pump to arrive varies dramatically across the city, and those variations follow a clear spatial logic.
The ten slowest boroughs are all in outer London, with Hillingdon averaging over 379 seconds, more than six minutes. The ten fastest are concentrated in inner London, where station density is highest. The map makes the gradient visible: response times increase outward from the centre in a pattern that mirrors station coverage rather than population need. Every outer borough in the top-ten slowest list has also seen Special Service demand grow by over 80% since 2014.
Response time is not just an operational metric, it is a measure of where the system's capacity is concentrated and where it falls short. The geography of slow response maps almost exactly onto the geography of growing demand. This is the spatial mismatch at the core of London's resilience gap.
Is the mismatch between growing demand and slow response a coincidence, or a structural pattern? Plotting every borough simultaneously reveals the answer.
Boroughs in the upper-right quadrant, the Danger Zone, face both the fastest-growing Special Service demand and the longest response times. Without exception, these are outer London boroughs: Hillingdon, Havering, Bromley, Harrow, Sutton. Inner London boroughs cluster in the lower-left: lower growth, faster response. The pattern is systematic, not random.
This is a correlation, not a proven causal chain, longer response times in outer boroughs reflect historical station placement and geographic coverage, not a direct consequence of demand growth. But the coincidence of both pressures in the same places creates a compounding risk.
The Danger Zone visualises the core resilience challenge: the places experiencing the greatest increase in demand are the same places least equipped to absorb it quickly.
If the spatial mismatch is real, when did it emerge? The indexed trend chart traces the divergence over time, revealing both its scale and its acceleration.
Across all three incident types, outer London has grown faster than inner London since 2014. The divergence accelerated sharply after 2020, COVID-19 disrupted demand patterns and the recovery did not restore the pre-pandemic distribution. Special Service calls in outer London have more than doubled since 2014, while inner London growth sits at 89%. False alarms grew 35% in outer boroughs versus 26% in inner ones. Even fire incidents, which declined overall, fell faster in inner London than outer.
The outward shift is not a temporary fluctuation, it is a structural redistribution of where London's emergency demand is generated. The station network, designed for a city where demand concentrated at the centre, has not reoriented to match. This is the absorptive capacity problem: the system's geography is becoming misaligned with the city's actual needs.
The previous three sections traced the contours of spatial mismatch: response times vary across London, and demand is shifting outward. But these two threads have not yet been placed side by side. What we kept wondering was whether the places with the most fires are also the places where help arrives fastest. The answer is not as tidy as one might expect. Some areas carry the double burden of high fire density and slow response; others have low fire risk yet sit within dense station coverage. This misalignment has a legible spatial structure. The bivariate map is designed to make that structure visible.
The map reveals a clear spatial split. Inner London, particularly the east and south-east, concentrates orange cells, high fire incident rate combined with slow response. These are areas where the double burden is most acute. The teal cells, high fire rate but fast response, cluster around central London where station density is highest. Much of outer London sits in lighter shades: lower fire rates, but response times that are already slow and growing.
This map makes the equity dimension of urban resilience visible. The communities facing the highest fire risk are not always the same communities that receive the fastest response. Where the two pressures coincide, orange cells in deprived east London corridors, the system's absorptive capacity is at its most strained.
Spatial mismatch is not the only way the system leaks capacity. Nearly one in two calls turns out to be a false alarm, and each wasted trip pulls resources away from wherever a real emergency might be happening at the same moment. Part of the reason response times are slow in some areas is simply that the trucks are already out — responding to fires that do not exist. What makes this particularly striking is the arithmetic: cutting automatic alarm malfunctions by even a third would effectively free up significant operational capacity without adding a single new station.
Between 2014 and 2025, AFA malfunctions generated 601,000 false call-outs, equivalent to 450,000 firefighter hours, or 51 years of continuous deployment. The left chart shows the paradox clearly: AFA false alarm volumes have risen even as real fires declined, meaning the gap between wasted and genuine responses has widened. The right chart shows that false alarms have consistently accounted for around 45, 50% of all calls throughout the period, with only a modest decline emerging after 2022. The system has not solved this problem, it has adapted around it.
Every AFA call-out is a unit of capacity diverted from genuine emergencies. In a city where Special Service demand is surging and outer borough response times are already stretched, this chronic inefficiency is not a background noise, it is a structural vulnerability.
A system under strain spatially is also under strain temporally. Monthly data reveals that different incident types peak at the same time, July stacks outdoor fires on top of flooding, while December piles forced entries, flooding, and agency assists together. A flat staffing model has no slack for either month.
Summer brings outdoor fires to green-space boroughs in south and outer London. Winter stacks flooding and forced entries in inner-city and riverside boroughs. Toggle between seasons to see the shift.
Summer peaks in outer south and west London, Bromley, Croydon, Hillingdon, where green space is most abundant.
Flat year-round across all wards, with higher rates in deprived inner-city areas regardless of season.
Concentrates along Thames corridor, Woolwich, Barking, Tower Hamlets, reflecting proximity to water and ageing drainage.
Clusters in deprived inner-city wards, Newham, Hackney, Tower Hamlets, reflecting social isolation regardless of season.
Concentrated in inner London where NHS and police pressure is highest. Winter peaks signal system-wide strain across public services.
London Fire Brigade answers over 100,000 calls a year. Fewer than 1 in 7 are actual fires. Here is what 1.34 million calls reveal.
The brigade's identity has shifted. Forced entries, flood response, and agency assists now define its workload more than firefighting does.
New demand has migrated outward, to exactly the parts of London where stations are fewest and response times longest.
Seasonal peaks do not distribute evenly. July and December stack multiple incident types simultaneously, a flat staffing model cannot absorb either.
Drawing on Meerow et al. (2016), urban resilience asks whether a system can absorb, adapt to, and transform under stress. London's emergency data suggests the answer is mixed.
London's fire service has quietly become something else, a flexible backstop for a city whose other systems are under strain. The data does not suggest failure. It suggests a system being stretched in ways that were not planned for, and that the geography of that stretch is uneven in ways that matter.
The London Fire Brigade responds to over 100,000 incidents a year, yet fewer than one in ten is an actual fire. This project repositions LFB incident data as an urban sensor, a longitudinal record capable of tracing how structural forces such as demographic ageing, climate stress, and public sector restructuring have reshaped emergency demand between 2014 and 2025. Drawing on urban resilience (Meerow et al., 2016), we argue that each incident type maps to a distinct pressure on the city: fires to building safety, flooding to climate adaptation, forced entries to care gaps in an ageing population, and agency assists to systemic shifts in public service delivery. The research is organised around three escalating questions: (1) How has the composition of LFB incidents shifted, and has the Brigade effectively become a multi-function emergency service? (2) Is growing Special Service demand concentrating in outer London, where station coverage is thinnest? (3) Do different incident types follow distinct seasonal rhythms that overlap in ways a flat-staffed system cannot absorb?
Primary dataset (LFB Incident Records, 2009 to 2026). 1,952,560 incident records from three LFB open data releases on the London Datastore: a CSV for 2009 to 2017 (988,279 records) and two Excel files covering 2018 to 2023 (670,635) and 2024 onwards (293,646). Each record holds 36 fields, including incident category (IncidentGroup, SpecialServiceType, StopCodeDescription), temporal markers (CalYear, DateOfCall, HourOfCall), spatial identifiers (ProperCase borough, IncGeo_WardCode, Easting_rounded and Northing_rounded at 50m precision), PropertyCategory, IncidentStationGround, and FirstPumpArriving_AttendanceTime.
Supplementary datasets. (1) London ward boundary shapefile, 2018 vintage (LondonDataStore, Statistical GIS Boundary Files for London), used for the seasonal ward map. The 2018 vintage matches the ONS ward codes used by LFB from 2018 onwards. (2) Fire station locations (Open Data Institute, theodi/FNR_Analysis), used to map the 102 currently active stations after removing the 10 stations closed in 2014 and one duplicate water station; per-station incident counts come from the LFB IncidentStationGround field. (3) GLA Ward Profiles and Atlas (LondonDataStore), used as a secondary reference for borough demographic context.
All processing was conducted in Python with pandas, geopandas, pyproj and shapely. The three source files were concatenated after harmonising column names and data types. Records missing CalYear, date, or Easting and Northing were dropped from spatial analysis; borough labels were standardised to the official GLA convention (for example "And" to "and", "Upon" to "upon").
Different chapters use different temporal windows. The yearly composition, three trajectories, 250m grid density layers and seasonal ward map use 2014 to 2025 (post-station-closure window). The response time grid uses 2009 to 2025 to maximise sample size per cell. Fire station incident totals use 2018 to 2025, the period over which IncidentStationGround is consistently populated. Partial-year 2026 records are excluded throughout.
For all grid layers, each incident's Easting_rounded and Northing_rounded were floored to a 250m British National Grid cell, then reprojected from EPSG 27700 to WGS84 with pyproj. Cells with fewer than three incidents were dropped, and colour scales clip at the 95th percentile to prevent outlier cells from flattening the rest of the map. The seasonal ward layer was built by spatially joining incident points to the 2018 ward polygons in EPSG 27700, then aggregating by ward code and season.
Technology stack. Python (pandas, geopandas, shapely, pyproj) for data cleaning, aggregation, coordinate transformation, 250m grid generation, and spatial joins; vanilla JavaScript with D3.js v7 for the animated Special Service slope chart and the borough scatter plot; Chart.js v4 for stacked area, horizontal bar, and doughnut charts; Mapbox GL JS for 250m grid density maps with 95th percentile colour capping, the synchronised triple map view, the response time heatmap, and the bivariate map (fire density × response time, 3×3 colour matrix); Scrollama and GSAP with ScrollTrigger for scrollytelling triggers and chapter entry animations; Three.js r128 for 3D particle sphere backgrounds between chapters; GitHub Pages for deployment.
Spatial analysis. The site combines spatial analysis at three resolutions. (1) Four 250m × 250m grid layers cover the Greater London BNG extent (easting 500,000 to 565,000; northing 155,000 to 205,000) and aggregate fire density, false alarms, special service density, and average first pump attendance time, all reprojected to WGS84 via pyproj. Cells with fewer than three records are dropped and colour scales clip at the 95th percentile. (2) The Chapter 2 bivariate map encodes fire density and response time on the same 250m cells, classifying each variable into tertiles client-side and mapping the combinations onto a 3×3 colour matrix. The response time grid additionally overlays the 102 active fire station points. (3) Borough-level analysis drives the special service growth versus response time scatter (with a danger zone annotation for outer boroughs facing both pressures) and the inner versus outer London divergence chart, using the GLA inner London statistical definition. (4) Ward-level seasonal analysis spatially joins incident points to the 2018 LondonDataStore ward shapefile and aggregates by ward, season, and incident type.
Visualisation design. The site is a three chapter scrollytelling narrative on a dark background with orange and teal accents. Chapter transitions are interleaved with Three.js 3D particle scenes that visually bridge each chapter shift. The reader moves from incident composition (Chapter 1) to spatial mismatch (Chapter 2) to seasonal stacking (Chapter 3), with each chapter combining a sticky graphic and scroll-triggered text. Interaction is structural rather than decorative: a year slider with play button cycles the triple density maps from 2014 to 2025, sub-category pills filter each grid by incident type, a draggable side panel ranks the slowest and fastest boroughs with name search, a station toggle overlays the 102 active stations on the response time map, and a custom five-button type fan on the Chapter 3 ward map switches between incident types under summer and winter views. Animations are timed to data transitions, not page decoration.
(1) The analysis is descriptive, not causal: outer London demand growth coincides with the 2014 closures, but population change, climate, ageing, and inter-agency demand remain uncontrolled confounders. (2) LFB coordinates are rounded to 50m and some early records carry only postcode-level precision, so cell assignments hold uncertainty where postcodes straddle boundaries. (3) The 250m grid is one resolution without sensitivity testing; finer or coarser cells could change which patterns surface. (4) Response time is averaged across all incident types per cell, so a cell mean may reflect the local mix rather than geographic accessibility. (5) The seasonal map defines summer as May to September and winter as November to March, leaving April and October unclassified and masking shoulder dynamics. (6) The inner versus outer split uses a custom 14 borough definition, one of several defensible standards, so the divergence magnitude is partly definitional.
Claude (Anthropic) and ChatGPT (OpenAI) assisted in scaffolding the scrollytelling structure, drafting initial Chart.js, D3, and Mapbox boilerplate, and reviewing the code for bugs. The data preparation scripts were drafted with AI assistance and reviewed by the team. All analytical claims appearing in the text were computed directly from the source data files using the Python scripts in the repository, and were cross-checked against the script output.
Bridge backgrounds use photographs from Unsplash by Dominik Sostmann, Glen Carrie, Joy Stamp, Lukas Hron, Matt C J, Thula Na, and Abhishek Tewari, distributed under the Unsplash licence.
CASA0029 Urban Data Visualisation · UCL 2025/26