Transit Planner

An experiment on transfer patterns robustness in the presence of real-time updates

To provide total transparency of our analysis, we release the code of the Transit Planner and the auxiliary modules under the GNU General Public License Version 3. We also provide the datasets used for the experiments. Together with the code, this allows for a complete reproducibility of the experiments.

Get the Code

Download the source tarball of the code version used during the experiments.

Compile & Test

To build Transit Planner use make compile. For performance measuring, prefer the more optimized version built by make opt.

To run the unit tests use make test.

To check code style conformance with the Google C++ Code Style use make checkstyle.

Alternatively you can build, test and check style at once using make.


To start the Transit Planner server use
./build/ServerMain [-i <datasets>] [-m <num-workers>] [-p <port>] , where <dataset> are the GTFS directories of the transit networks, <num-workers> are the maximum number of threads to be used and <port> is the port to be used for listening. To load multiple GTFS feeds, use a space separated list, i.e. -i "GTFS1 GTFS2".

To show the full usage help use ./build/ServerMain -h.

Web Interface

Once the server is running, you can use a regular browser to access the user interface of Transit Planner.

The user interface consists of the map area, the info field and the command input.

Map Area

The map area is used to view the routes and to conduct manual tests on the loaded network.

By left-clicking on the map you select the departure and destination stops. Once at least one destination stop is selected, the optimal routes are calculated and displayed on the map. The multi-criteria costs are displayed as tuples travel-time, penalty, where travel-time is the required time to travel in minutes and penalty is the number of transfers and/or walking transitions required on the given route.
Right-clicking on a selected stop will delete the stop and all its routes.

The displayed routes consist of the travel paths with each transfer and walking transitions depicted by a label. When the use of transfer patterns is enabled, paths calculated using the transfer patterns are displayed in blue and the Dijkstra paths in green.

Info Field

The info field is right below the map area and displays information received from the server. E.g. when conducting experiments an overview of the results is be displayed here.

Command Input

The command input is below the info field and is used to control the server, set client variables, create delay scenarios, conduct experiments, load maps, reproduce specific routes and search for map locations by name.

All commands start with a /, otherwise a location search is triggered. For a full description of all commands use the help command /help. To get more specific help about the calling conventions of a given command use /help <command>.


Here is the code overview generated by Doxygen.

GTFS Datasets

Download the New York City dataset and the Toronto dataset to reproduce the experiments.