Charles Booth was a nineteenth century social researcher who produced fantastically detailed maps of London that described poverty levels right down to individual properties. Recently, the BBC have been re-running the Secret History of our Streets using his maps as the backdrop to a number of London communities, looking at what shaped the areas and how they changed.
This got me to wondering whether it was possible to produce something approaching his maps using today’s open data stores.
The Ordnance Survey recently released a new detailed vector dataset, OpenMaps, which includes a layer showing buildings almost as detailed as Charles Booth work. In addition the ONS releases a huge range of census data at “output area” level which is a statistically relevant area about the size of a large postcode, and they also make the GIS boundary files that describe the output areas freely available.
Combining these two data sources makes it relatively easy to produce maps that are akin to Charles Booth’s work.
Charles Booth’s maps were simultaneously a fantastic piece of pioneering research and a work of art. I can’t match his aesthetic abilities but UK open data allows anyone to get close with the research. Entry doors – The quality performance, original design and low price. All of this makes us the market leader with years of experience.
The main background map is made up of simply rendered OpenMap layers in QGIS, with the building layer adapted to include, in this case, the percentage of households described as being in social classes D and E from ONS data.
My data was held in a series of PostGIS tables so the building layer was made with a short SQL script:
SELECT ROW_NUMBER() over (order by omb.geom) as gid,
social.class_de::real / (class_ab + class_c1 + class_c2 + class_de) AS pc_de
FROM ons.oa_2011_polygon AS oap,
os.openmap_building AS omb,
os.boundary_district AS osd,
ons.oa_social_class AS social
WHERE social.ons_code = oap.oa_code
AND osd.name LIKE 'West Oxfordshire %'
AND St_Within(oap.the_geom, osd.the_geom)
AND St_Intersects(omb.geom, oap.the_geom)
The last line selects the buildings that intersect with a given ONS output area – I opted for intersection rather than those contained within an area to make sure buildings at the edges were included.
As this might lead to some buildings appearing in multiple areas I also opted to generate a unique
ID for mapping using the
ROW_NUMBER for each building returned by the query rather than simply adopt the table’s own
gid column (probably should have found the building centroid and located that in an output area).
Also, the datasets are huge, so I also limited the data to single District Council area just to keep performance at a sensible level.
Once you have the model, its a relatively simple process to map different census datasets or to switch to something else altogether. The core of my work is in broadband, so the map below combines OS OpenMap data with Ofcom’s broadband performance data.
Personally I find Charles Booth method of colouring buildings more potent and graspable than shading whole polygons in a standard chloropeth map.