Here at TOPP I’ve been working on ways to better present and manipulate New York City bus scheduling data.
Google Transit has the MTA’s bus timing data so that they can do trip planning. But the MTA for some reason won’t let them release it. I filed a FOIL request with the MTA for that data. They didn’t send me the GTFS data, what Google uses internally to describe schedules, which I assume Google generates internally. But they did send me the complete (I hope) schedule and route data for New York City Transit (I’m still waiting for MTA Bus Company data).
The data is in a weird format — a text file with fixed-width undelimited fields. This required some work to parse. And we’ve still got a lot of unknown fields. I suspect that many of the unknown fields are for MTA internal use, but every time I think I understand everything we need to know, I discover that there’s something I missed.
The one thing I know I don’t know is how to figure out what the names are on routes that have more than one path. For example, the M14 [PDF] can go along Ave A or along Ave D, and the headsign on the real bus says M14A or M14D, depending on what path it’s on. The data just says M14 A-C-D (where C is an obsolete route, according to Wikipedia). It does have a list of headsigns (that’s the sign at the top of the bus), but they don’t specify a letter. Google can’t figure this out either — if you ask Google for a public transit route from (say) 14 St at 7th Ave to 14th St at Ave A, it will give you a bus route called M14AD.
Want to help? Here are the tools. You’ll need the data from the MTA. We would love to give you the whole thing, but we’re not sure the MTA would approve (even though it would be noninfringing). But here is a data file for the M14.
We could also just manually enter path letters for headsign ids. This would be a hassle, but if you’re bored, this would be a useful task — don’t worry about what format it’s in, just send us a spreadsheet or a patch or something. Even if you know nothing about computers, you can probably do this. Just make some sort of mapping from route id to path letter.