London Transport Zones drawn by using ConcaveHull method on Google Map

I needed to draw the TfL zones on a Google map and I wasn’t going to do them by hand!

This is

Here’s the JSON used to create it.

[{"intid":1,"forArray":[{"lat":51.509,"lng":-0.197},{"lat":51.52,"lng":-0.17},{"lat":51.523,"lng":-0.164},{"lat":51.523,"lng":-0.157},{"lat":51.525,"lng":-0.138},{"lat":51.528,"lng":-0.135},{"lat":51.531,"lng":-0.126},{"lat":51.531,"lng":-0.123},{"lat":51.532,"lng":-0.106},{"lat":51.526,"lng":-0.089},{"lat":51.532,"lng":-0.077},{"lat":51.515,"lng":-0.072},{"lat":51.511,"lng":-0.075},{"lat":51.505,"lng":-0.085},{"lat":51.501,"lng":-0.094},{"lat":51.494,"lng":-0.1},{"lat":51.499,"lng":-0.112},{"lat":51.501,"lng":-0.125},{"lat":51.486,"lng":-0.123},{"lat":51.489,"lng":-0.134},{"lat":51.492,"lng":-0.156},{"lat":51.494,"lng":-0.183},{"lat":51.492,"lng":-0.194},{"lat":51.509,"lng":-0.197}],"strLineColour":"#FAFBFF","strTocFull":"Zone 1"},{"intid":2,"forArray":[{"lat":51.523,"lng":-0.26},{"lat":51.532,"lng":-0.243},{"lat":51.549,"lng":-0.222},{"lat":51.547,"lng":-0.205},{"lat":51.549,"lng":-0.192},{"lat":51.55,"lng":-0.183},{"lat":51.557,"lng":-0.178},{"lat":51.556,"lng":-0.165},{"lat":51.555,"lng":-0.151},{"lat":51.557,"lng":-0.138},{"lat":51.565,"lng":-0.135},{"lat":51.564,"lng":-0.129},{"lat":51.565,"lng":-0.106},{"lat":51.571,"lng":-0.096},{"lat":51.565,"lng":-0.073},{"lat":51.562,"lng":-0.057},{"lat":51.547,"lng":-0.056},{"lat":51.547,"lng":-0.039},{"lat":51.544,"lng":-0.026},{"lat":51.545,"lng":-0.009},{"lat":51.541,"lng":-0.004},{"lat":51.529,"lng":0.006},{"lat":51.514,"lng":0.008},{"lat":51.506,"lng":0.016},{"lat":51.487,"lng":-0.009},{"lat":51.482,"lng":-0.011},{"lat":51.469,"lng":-0.017},{"lat":51.466,"lng":-0.014},{"lat":51.469,"lng":-0.023},{"lat":51.465,"lng":-0.038},{"lat":51.467,"lng":-0.053},{"lat":51.47,"lng":-0.069},{"lat":51.455,"lng":-0.088},{"lat":51.453,"lng":-0.102},{"lat":51.463,"lng":-0.114},{"lat":51.465,"lng":-0.13},{"lat":51.462,"lng":-0.138},{"lat":51.453,"lng":-0.148},{"lat":51.464,"lng":-0.17},{"lat":51.461,"lng":-0.188},{"lat":51.459,"lng":-0.211},{"lat":51.461,"lng":-0.216},{"lat":51.49,"lng":-0.214},{"lat":51.493,"lng":-0.222},{"lat":51.493,"lng":-0.225},{"lat":51.494,"lng":-0.236},{"lat":51.495,"lng":-0.255},{"lat":51.523,"lng":-0.26}],"strLineColour":"#B5DBCC","strTocFull":"Zone 2"},{"intid":3,"forArray":[{"lat":51.514,"lng":-0.32},{"lat":51.53,"lng":-0.293},{"lat":51.527,"lng":-0.284},{"lat":51.544,"lng":-0.276},{"lat":51.554,"lng":-0.25},{"lat":51.58,"lng":-0.239},{"lat":51.583,"lng":-0.226},{"lat":51.572,"lng":-0.194},{"lat":51.587,"lng":-0.165},{"lat":51.607,"lng":-0.124},{"lat":51.607,"lng":-0.12},{"lat":51.597,"lng":-0.11},{"lat":51.59,"lng":-0.103},{"lat":51.577,"lng":-0.098},{"lat":51.583,"lng":-0.075},{"lat":51.605,"lng":-0.071},{"lat":51.602,"lng":-0.054},{"lat":51.581,"lng":-0.033},{"lat":51.583,"lng":-0.02},{"lat":51.569,"lng":-0.007},{"lat":51.568,"lng":0.008},{"lat":51.552,"lng":0.026},{"lat":51.552,"lng":0.045},{"lat":51.539,"lng":0.051},{"lat":51.515,"lng":0.061},{"lat":51.51,"lng":0.072},{"lat":51.491,"lng":0.055},{"lat":51.487,"lng":0.031},{"lat":51.463,"lng":0.028},{"lat":51.45,"lng":0.013},{"lat":51.452,"lng":-0.001},{"lat":51.434,"lng":-0.02},{"lat":51.45,"lng":-0.046},{"lat":51.427,"lng":-0.054},{"lat":51.418,"lng":-0.073},{"lat":51.432,"lng":-0.104},{"lat":51.438,"lng":-0.128},{"lat":51.411,"lng":-0.122},{"lat":51.408,"lng":-0.154},{"lat":51.418,"lng":-0.178},{"lat":51.415,"lng":-0.192},{"lat":51.41,"lng":-0.214},{"lat":51.445,"lng":-0.207},{"lat":51.467,"lng":-0.241},{"lat":51.468,"lng":-0.267},{"lat":51.465,"lng":-0.286},{"lat":51.489,"lng":-0.289},{"lat":51.51,"lng":-0.288},{"lat":51.501,"lng":-0.307},{"lat":51.499,"lng":-0.314},{"lat":51.514,"lng":-0.32}],"strLineColour":"#DEEBA3","strTocFull":"Zone 3"},{"intid":4,"forArray":[{"lat":51.506,"lng":-0.379},{"lat":51.542,"lng":-0.345},{"lat":51.558,"lng":-0.336},{"lat":51.581,"lng":-0.317},{"lat":51.594,"lng":-0.286},{"lat":51.603,"lng":-0.264},{"lat":51.613,"lng":-0.25},{"lat":51.618,"lng":-0.185},{"lat":51.63,"lng":-0.179},{"lat":51.638,"lng":-0.166},{"lat":51.634,"lng":-0.101},{"lat":51.625,"lng":-0.061},{"lat":51.609,"lng":0},{"lat":51.617,"lng":0.044},{"lat":51.618,"lng":0.075},{"lat":51.613,"lng":0.092},{"lat":51.566,"lng":0.112},{"lat":51.538,"lng":0.102},{"lat":51.491,"lng":0.121},{"lat":51.465,"lng":0.102},{"lat":51.438,"lng":0.07},{"lat":51.417,"lng":0.044},{"lat":51.409,"lng":0.017},{"lat":51.406,"lng":0.003},{"lat":51.409,"lng":-0.041},{"lat":51.398,"lng":-0.049},{"lat":51.397,"lng":-0.075},{"lat":51.392,"lng":-0.088},{"lat":51.378,"lng":-0.154},{"lat":51.381,"lng":-0.245},{"lat":51.385,"lng":-0.261},{"lat":51.455,"lng":-0.32},{"lat":51.471,"lng":-0.367},{"lat":51.506,"lng":-0.379}],"strLineColour":"#EBDACA","strTocFull":"Zone 4"},{"intid":5,"forArray":[{"lat":51.467,"lng":-0.423},{"lat":51.503,"lng":-0.421},{"lat":51.561,"lng":-0.411},{"lat":51.577,"lng":-0.397},{"lat":51.593,"lng":-0.381},{"lat":51.603,"lng":-0.357},{"lat":51.592,"lng":-0.334},{"lat":51.62,"lng":-0.303},{"lat":51.614,"lng":-0.275},{"lat":51.651,"lng":-0.195},{"lat":51.663,"lng":-0.094},{"lat":51.648,"lng":-0.053},{"lat":51.655,"lng":-0.031},{"lat":51.633,"lng":0.01},{"lat":51.627,"lng":0.047},{"lat":51.568,"lng":0.129},{"lat":51.544,"lng":0.166},{"lat":51.492,"lng":0.152},{"lat":51.436,"lng":0.126},{"lat":51.389,"lng":0.074},{"lat":51.376,"lng":0.01},{"lat":51.375,"lng":-0.092},{"lat":51.363,"lng":-0.093},{"lat":51.357,"lng":-0.17},{"lat":51.344,"lng":-0.199},{"lat":51.355,"lng":-0.214},{"lat":51.413,"lng":-0.284},{"lat":51.44,"lng":-0.34},{"lat":51.467,"lng":-0.423}],"strLineColour":"#B0C2E6","strTocFull":"Zone 5"},{"intid":6,"forArray":[{"lat":51.47,"lng":-0.491},{"lat":51.547,"lng":-0.478},{"lat":51.63,"lng":-0.433},{"lat":51.61,"lng":-0.37},{"lat":51.668,"lng":-0.177},{"lat":51.684,"lng":-0.107},{"lat":51.694,"lng":0.114},{"lat":51.593,"lng":0.234},{"lat":51.559,"lng":0.252},{"lat":51.448,"lng":0.179},{"lat":51.346,"lng":0.131},{"lat":51.325,"lng":-0.101},{"lat":51.316,"lng":-0.138},{"lat":51.309,"lng":-0.169},{"lat":51.324,"lng":-0.239},{"lat":51.357,"lng":-0.308},{"lat":51.47,"lng":-0.491}],"strLineColour":"#ECC1EC","strTocFull":"Zone 6"}]
  

Here’s the same thing but with “Zones” 7 to 9 on it

1 Like

Very good. I see you’ve tactically avoided the Tram zone! That would add in a horrible web in Wimbledon & Croydon!

1 Like

Thanks!

Thankfully… the trams aren’t shown on the map that I’m re-creating. Does TfL know that it’s showing East Croydon National Rail station as being in the Tram zone on the http://content.tfl.gov.uk/london-rail-and-tube-services-map.pdf ?

It’s just odd that this problem was fixed about Morden when Diamond Geezer pointed it out…
https://diamondgeezer.blogspot.com/2016/06/the-new-new-tube-map.html !