Introducing: Dynamic Route Maps!
goodservice.io is first in providing real-time subway route maps, and an easier way to view where delays, slow zones and service gaps are happening.
Anybody who has taken the New York City subway outside of weekday hours knows that its system map never gives you the whole story on how to ride it. Poor clueless tourists learn it the hard way, when they wait for a B train that is not going to show up at 81 St–Museum of Natural History on a weekend.
And that is just when the subway is running according to schedule. When planned service changes occur overnight and on weekends, to allow for track work, or when service disruptions are causing trains to re-route to get back on schedule—literally anything goes.
Sure, you can try to decipher the weekly Service Changes bulletin board posted at every subway station, or go to MTA’s own Weekender website to read about them, but it’s still difficult to figure out how to travel from a wall of text. The website Subway Weekender does a great job with publishing custom-drawn PDF maps of service changes for the upcoming week’s nights and weekend, but they’re not automated and not up-to-the-minute. It doesn’t necessarily help us if we want to know: has the A train started running local yet? With the current L project, has the M train stopped running into Queens and started running to the Upper East Side instead?
None of the other transit map apps have done this before. But look no further! goodservice.io now provides real-time individual route maps for every subway train in the New York City subway system.
How it works
In a previous blog post, I went in-depth on how goodservice.io uses MTA’s real-time transit data in standardized GTFS-RT format to derive train frequency data and in a later blog post, I discussed how I used the same data to detect train delays. While I was working with the data, I noticed that the data lists all upcoming stops for each active train. What was even more fascinating was that these lists incorporate planned service changes and in many cases, temporary re-routes too. For this feature, I wrote code that would aggregate and stitch all active trips’ upcoming stops together to come up with a general stop pattern for each route. Additional fancy algorithms were used to calculate if/when trains converge or diverge, regardless if it is part of the train’s normal schedule (A to Lefferts Blvd or Far Rockaway) or if it is a situation where trains are being re-routed around service disruptions (R trains running via 63 St or 53 St).
Service Issues Overlays
One of the common complaints I’ve been getting with previous iterations of goodservice.io is that the information and interface aren’t very accessible to general riders: if you’re not a huge subway nerd, you may not understand what it means when there’s a delay on 6 Avenue Local. Since these dynamic route maps give us a way to visualize how trains are run, it provided the perfect opportunity to incorporate goodservice.io’s existing data with route maps to visually highlight where issues are happening.
goodservice.io is an open-source project to provide New York City subway riders a more detailed and up-to-date status page using public APIs. Contributions are welcome on GitHub. Feedback can be directed to @_blahblahblah or @goodservice_io on Twitter.