As I had the data, here’s the new service diagram.
Here’s the changes to the service on London Overground from Monday. The link to West Croydon is restored, but everything else is cut back, sometimes at lot (one train to Enfield Town, Cheshunt each hour)
As the Bakerloo has been restored to end of it’s line I’ve updated this diagram to show the line still working. I’ve also fixed the bug that made the district line the wrong colour and I’ve moved the “2 trains per hour” messages to the key.
These are fantastic @briantist
Are you drawing them by hand or using an algorithm to figure it all out?
Thank you. That’s very kind!
I’ve written a system that does produce live line diagrams, which you can see here whoosh.freeview.tv/html/demo/LO (it uses SouthEastern font as it is in live use on their trains).
However, this one was created using CorelDraw! as I trying to reproduce something that could be use to replace the in-car diagram that people on the Overground squint. I showed my thinking here - Overground map without the bad stuff
Very cool It seems we’re both doing the same thing, but you’re a lot further along than I am! Are you relying solely on Predictions data from the Unified API, or can I deduce from your posts elsewhere on the forum (and from your code!) that there’s some TrackerNet and possibly Network Rail involved too?
It’s a mash up of every source I could find, but the central driving core is a Darwin Pushport https://wiki.openraildata.com/index.php/Darwin:Push_Port from NRE (“National Rail Enquires”). This gives you up-to-the-second data changes, which means the timing of arrivals and departures is spot-on.
There’s also a lot of “StationsXML” in there too - https://www.nationalrail.co.uk/static/documents/Stations_XML_Feed_v1.3.pdf
Ah good old Darwin. An absolute firehose. Has to be said that the TfL Unified API is easier to consume…!
True. Darwin uses STOMP for which PHP has an extension, so I found it quite easy to do. The main problem is restarting the consuming process even if something goes wrong. I also had a memory leak problem at one point which took days to track down.
The problem with the push port is that it doesn’t push the seconds, only hours and minutes, so if you need the seconds you have to call the SOAP interface to get the full record.
The TfL bus countdown stream - http://countdown.api.tfl.gov.uk/interfaces/ura/stream_V1 - is much easier to code with as it’s just an HTTP connection. It’s only failing is the random insertion of linefeed characters into the stop names!
It’s a shame that there isn’t a general TfL stream connection as it would be useful for doing live tube/tram/dlr displays without having to do so much polling.
Have you tried the SignalR stream? I’m not sure if PHP supports SignalR but you could do it with something like Node.js or, of course, .NET (it’s a Microsoft technology)
https://blog.tfl.gov.uk/2015/12/07/unified-api-part-5-aot-arrivals-of-things/ fairly low down on the page is a great example.
There seems to be a SignalR specification, so I might have a quick go at quick PHP class to use it. https://github.com/dotnet/aspnetcore/blob/master/src/SignalR/docs/specs/HubProtocol.md