I have recently worked on a project with WRI (World Resources Institute) and Kochi Metro in Kerala, India (KMRL) to convert their scheduling data to the global standard
static GTFS format.
The first phase of the project was about the data conversion. I wrote a python program that took in KMRL's XML data files and some configuration files, and created a static GTFS feed as output. The fact that the agency itself is fully on board and has dedicated one person on the inside for regular follow-up, has really helped get this project going.
On 17 March this year, Kochi Metro Rail Ltd became India's first transit agency to officially publish static GTFS feed of their system as open data.
See it visualized on a global GTFS feeds map called TRAVIC. (zoom in to kochi and press fast forward. Can adjust time of day.)
Phase 2 of the project aimed higher : we started work on a program with a graphical user interface that would automate several manual processes and help KMRL update their data as the network grows, publish updated feeds on their own without having to rely on any external entity, and very importantly for their case, integrate bus and ferry routes of Kochi in the near future to build towards a unified public transport dataset and facilitate integrated ticketing. As we progressed into this we realised the potential this can have if we generalise it so that any transit agency can use it.
Sharing with you the output of that work so far:
The program runs in the browser (actually, please use Chrome or Chromium and no mobile!) as a website with a server backend created by a Python 3 program. It manages the data in a portable internal database and publishes fresh GTFS feeds whenever wanted.
Note: If you want to make edits, imports or exports, the password is second paragraph > second line > fifth word of this email. And I won't maintain this instance (made a throwaway one to share with big mailing lists) so go ahead and mess with it at own expense.
Note: while it's compatible to publish this program on a free heroku account, it is currently not designed for multi-user use, esp for editing/importing where simultaneous sessions can mess things up.
Apart from editing existing GTFS feed, with this it's possible to design a transport system's static GTFS feed from scratch.
---------------------
Invitation for Collaboration
It would be great to get your feedback on this. Inputs from coders, veteran GTFS experts as well as beta testers is most welcome.
Note that this project has started with aiming at simple transit systems, so many sections are simplified to begin with and right now it is oriented for Indian city transit agencies. Especially regarding fare rules, it is targeted at the station pairs model in
Example 6 on this explainer wiki.
There is more that can be done with enhancements and integrations, and there are still some
limitations that need to be resolved. I'm documenting all I know in the issues section. So I'm reaching out for inviting collaborations on the coding and beta testing front. One motive behind open sourcing is that the community can achieve far more with this project than what any private individual or group can. There's also scope to
integrate many other GTFS innovations happening. Please visit the github repo and engage!
Quick links: