The public transport travel times are obtained from GTFS data downloaded from gtfs.de. The files are converted to MATSim using the extension Pt2Matsim (https://github.com/matsim-org/pt2matsim) and Skim matrices are created using the extension from SBB (https://github.com/SchweizerischeBundesbahnen/matsim-sbb).
The coverage of the GTFS datasets was limited, in particular, for local public transports (ÖPNV in German), as seen in Figure 1. In order to complete the data (see Figure 2), we obtained public transport schedule data from various alternative sources:
- Individual GTFS datasets not included in the original set in gtfs.de: oublic transport agencies MDV, VMT, VVW
- OpenStreetMaps data, converted to matsim schedules using the extension pt2matism (see Osm2TransitSchedule tool). This tool converts stops and lines to MATSim schedule objects but do not add departure times and services. We fill these data follwoing some assumptions derived from existing data, including frequencies of services by type (local bus, regional bus, etc.) and speeds by type of services. Unless otherwise is specified, we used the following assumptions:
- Speed v, as a funtion of the distance d between stops:
- If d < 50 m, the next stop is skipped (duplicate in the original data)
- If d > 50 & d < 800, v = 30 km/h. A detour factor 1.3 is applied to the beeline distance.
- If d > 800, v = 50 km/h. A detour factor 1.3 is applied to the beeline distance.
- Operating times: from 6:00 to 21:40.
- Frequency: 20 min between consecutive services.
- Speed v, as a funtion of the distance d between stops:
Figure 1 - original data from gtfs.de. There are areas without public transport data (no red links).
Figure 2 - Post-processed data addded to the original data (in blue)

