Data Graphics London

Mapping London’s Cycling Census Dataset


The London Cycling Census Map is an interactive map I’ve created, showing traffic flows on key corridors in central London. The counts were collected by Transport for London in around 170 locations, in April. TfL released some sample statistics from the dataset in a report published on their website, but the original dataset was not released – however Andrew Gilligan, the Greater London Authority’s cycling commissioner, obtained the data and forward it on to a number of people, including (indirectly) me. I took the data, consolidated it, and created this map. The most tedious bit was pointing the arrows in the right direction!

There are three time periods for which you can show data: AM Peak (7am to 10am), PM Peak (4pm to 7pm) and All Day (which is, I believe, a 24-hour sample.) which is from 6am to 8pm. The locations chosen are generally ones where high numbers of cyclists travel, so some roads which have high numbers of other vehicles, but not bicycles, e.g. Oxford Street, are not included.

Cycling along key corridors in London is highly time dependent – in the below extract, morning (red) and evening (green) flows for cyclists are compared. Cyclists generally travel away from Clerkenwell, to the east and the west, in the morning, returning to it in the evening. The other travel modes generally don’t show this directionality on this road – cars in particular generally travel in both directions during both peaks. I would hypothesis that the cyclists are accessing this road from Goswell Road, which unfortunately wasn’t included in the census.


So what does the data show?

  • There are several roads where there are more bikes on the streets than any other type of vehicles.
  • Bicycle flow is highly direction, unlike that for most other forms of transport.
  • There are certain routes which are popular with certain kinds of traffic. There are four main east/west corridors in central London. Cars dominate the north-most (Euston Road) and the south-most (Victoria Embankment) ones. Taxis heavily use Holborn, while cyclists mainly use Old Street/Theobald’s Road. You can see all four of these corridors in the map extract at the top of this article.
  • Equivalent north-south links show little separation of vehicle types.
  • Elephant & Castle remains a complicated junction with large numbers of cyclists and buses, depending on the direction, road and time of day.

A note on the arrows

The map uses the vector styling capabilities of OpenLayers, with a custom SVG “arrow” symbol. Symbols in OpenLayers are always positioned with their centre over the location point, so to have them pointing away from the location, I had to add a hidden stalk to each arrow – you can see the stalk when clicking on it. My custom SVG for the arrows is:

OpenLayers.Renderer.symbol.arrow = [1, 0, 0, -3, -1, 0, 0, -0.5, 0, 3, 0, -0.5];

I’m using 0, 0 as the point on the arrow that corresponds to the underlying location – but it doesn’t need to be that, i.e. the location of 0, 0 does not affect where OpenLayer actually pins your symbol on your point location.

And finally…

Red arrows are taxis, blue arrows are buses. Proof, perhaps, of the oft-quoted saying that it’s a battle to find a London taxi driver willing to go south of the river:


The map was created as an output of EUNOIA, a European Union funded project to model travel mobility in major European cities using novel datasets. UCL CASA is the UK university partner for the project.

You can view the map here.
View alternative version of the map – uses OpenCycleMap as a basemap.
Download the data here which I have augmented with bearings.

10 replies on “Mapping London’s Cycling Census Dataset”

Hi – yes, it’s just using OpenLayers with an OpenLayers.Layer.Vector layer – nothing too sophisticated. If I did it again, I would use a OpenLayers.Vector.GeoJSON object, using a GeoJSON file with styling information included, rather than reading in a CSV file via AJAX and manually styling it.

The process of pointing the arrows in the right direction was manual – assigning angles from the approximate directions – so if your dataset didn’t do that, you’d need to do that too.

I want to find a way of estimating the total distance travelled, by bike, broken down by London Borough. This is in order to compare cyclist KSI data, by borough, with the number of cyclists. This is to distinguish between those who have low numbers because they’re safe, and those who have low numbers because everyone is too scared to cycle!

Any ideas?


Hi Oliver, great map! Think I’ve found an error in the location of a data point. Old Brompton Road is shown as being outside West Brompton station. I presume it’s meant to be further into Central London.

Hi Alex – yes, could well be. I’m just going on the locations provided by the source, I wasn’t involved in the collection. So it’s likely an error with TfL.

Awesome job with the maps!

I’ve downloaded the dataset to play a little with it, and I have been having a little trouble in going from easting/northing to longitude/latitude, do you have any obvious advice for doing so?

Thanks. You need to reproject from EPSG:27700, which is British National Grid as defined by Ordnance Survey , to EPSG:4326, which is WGS84 latitude/longitude.

If using OpenLayers, you need to specify the Proj4 definition of EPSG:27700 manually – also if reprojecting/transforming to Google Mercator (aka EPSG:900913) you need to “round robin” through EPSG:4236 – you can’t go direct. See the Javascript source for example.

If you want to just get the lat/lons – use QGIS and import in the data as a new point/X-Y layer. Then reproject, and then create a couple of calculated columns containing the lat and lon.

As ever, a brilliant map. There’s lots of English data for per day bike traffic, annual average I suppose. Here in the London borough of Barnet it’s for 92, I think, locations. The DfT puts it out on

How flaky the data is, I don’t know. I was meaning to call up Barnet’s Highway Strategy people. I did, just now, but they’ve just been outsourced, so I felt it wasn’t the time for an interesting chat. The DfT site says it’s done by manual counts, but there’s an induction loop for the counter just down the road from me. The counter just up the road (in Herts. ) has an induction loop too.

Jeremy Parker

Leave a Reply

Your email address will not be published. Required fields are marked *