Python code for simulating transit lines based on GTFS data
This project is inspired by @QuadMet on Twitter/X who created an animation of Portland, OR transit vehicles based off of GTFS data. They used the 'GTFS Map Generator' from Dan Snow (checkout some simulations of their the Chicago L Trains). However, that code was in R, and I don't know R, so I decided to redo it all in Python.
The following flags can be passed when using the command line:
--file
- Specify a GTFS ZIP file to use.
--url
- Specify a URL to get a GTFS ZIP file.
--date
- Specify the start date of the simulation in YYYY-MM-DD format.
--start-time
- Specify the start time of the simulation in hh:mm:ss format. The timezone used is that of the transit agency specified in the GTFS feed.
--end-time
- Specify the end time of the simulation in hh:mm:ss format. The timezone used is that of the transit agency specified in the GTFS feed.
--routes
- Declare which Route IDs should be displayed in the simulation.
--title
- The name to be used on the output GIF file.
Most of the heavy lifting is being done by gtfs_kit, which take in GTFS feed data and allows you to query it in a number of ways. The most important part of this is feed.locate_trips()
, which is able to figure out where transit vehicles are at a given point in time.
Matplotlib's FuncAnimation
is then used to animate the vehicles over an array of times
Most transit agencies will make their GTFS data availble for public download, so just try searching for " GTFS data". As an example, Sound Transit provides GTFS data for most transit agencies in the Seattle area on their website