Inspired by the work of John Ogilby (1600-1676), I wanted to create a modern day map in the style of Britannia, the first British road atlas in 1675.
Or to be more precise:
Britannia, Volume the First: or an Illustration of the Kingdom of England and Dominion of Wales: By a Geographical and Historical Description of the Principal Roads thereof.
Covering 23,000 miles the atlas depicts road routes all over England and Wales, by a unique style of depicting the places on route, with river crossings, counties and signposts to nearby towns.
Using FME (of course) and Ordnance Survey open data, I set about making an updated version the plate above, which is a route from London to Banbury, following the modern roads as closely as possible. Or as quickly as possible. Rather than a painstaking replica of the original, I wanted to create a data driven workspace that creates the panels from the route itself.
Full res version here (36mb)
To replicate the route as closely as possible, I used the ShortestPathFinder and fed it a point to point From-To line from London, (stopping at Shepherds Bush, Acton, Ealing, Uxbridge, Amersham, Aylesbury) and a road network filtered to include the ‘A roads’. Satisfying to see how little has changed in 342 years! A route using motorways would be interesting to see but would not pass through towns in the same way.
To make it as fast as possible I have used FeatureReaders, which only read the other map features (water features, buildings, place names, etc) that intersect the input path. This way the workspace can automate the production of plates, for anywhere in Great Britain.
To create the panels, I used a Tiler to divide a rectangle into 7 columns, scaled them and then offset the vertices to make them more scroll shaped.
The nearby places, eg ‘to Chelsea’ were also made with the ShortestPathFinder, with junctions on the main route that had roads to multiple towns being aggregated together and comma separated. For example, ‘to Isleworth, Teddington, Twickenham’.
To coerce the real world route into the panels, I first divided the route into 7 sections (Snipper) and replaced each section with its bounding box. Then, using the Chopper (1 vertex) and LeftRightSpatialCalculator I was able to create a set of control points that mapped the vertices of the route sections to those of the panels.
The map features (route, roads, label points, rivers, buildings) were then clipped to the route bounding boxes and fed into the AffineWarper to get them in the right place. Finally the map was rendered in the MapnikRasterizer.
Slightly beaten to the post by R J Andrews’ excellent data vis in an Ogilby style.