There Are No Roads in London
Today's #30DayMapChallenge is to use OpenStreetMap (OSM) data as your primary source.
To meet this challenge I decided to use OpenStreetMap data to explore the toponyms of London's streets, visualizing how different road types - Streets, Lanes, Alleys, Courts, Yards, and Avenues - are named and distributed across the City of London.
One of my favourite quiz questions is - 'How many roads are in the City of London?' As my map shows there is only one - Goswell Road. There used to be none - but in 1994 the eastern half of Goswell Road was brought under the administration of the City of London.
The reason the City of London has virtually no streets called “Road” is that the term wasn’t used as a name for thoroughfares until the late 16th century. Nearly all the streets in the City were named long before “road” became a common English word for a thoroughfare. If you create a similar street map for most cities in the UK you will probably notice something very similar - any 'historical' center of a city (with a road layout formed before the 16th Century) will probably have very few roads.
The Streets of London map highlights the City of London’s roads in distinct colors based on their suffix. The City of London’s administrative boundary is also displayed as a black polygon line to provide context. All roads are interactive and clicking on a road displays a popup with its name. A layer control menu allows you to toggle different road types on or off, and a color key helps match road types with their visual representation on the map.
How the Map Works
The map is built with MapLibre GL, a versatile open-source mapping library. All the road data is derived from OpenStreetMap using Overpass Turbo, a powerful query tool for OSM data. For example, to extract the linestring data for all roads ending with “Yard” inside the City of London, I used the following Overpass Turbo query:
[out:json][timeout:25];
// City of London administrative boundary (inside Greater London)
area["name"="City of London"]["boundary"="administrative"]["admin_level"="6"]->.searchArea;
(
way["highway"]["name"~"yard",i](area.searchArea);
);
out body;
>;
out skel qt;Here’s what this query does:
1. Selects the City of London administrative area using its boundary tag.
2. Filters all highway features whose 'name' contains the word 'yard' (case-insensitive).
3. Outputs the data in GeoJSON format suitable for processing in MapLibre GL.
Similar queries were written for other road types, such as “Street”, “Lane”, “Court”, etc. The results of each were then exported as GeoJSON files.



Comments