This script generates timetable information for a bus system based on frequencies to a json suitable for the use with osm2gtfs. As a starting point, xamanu/timetable-csv2json has been used, but then changed quite a lot to support a more general and specific input format. In some near future, could be integrated into osm2gtfs to support frequency data.
Please make sure you use Python 3 to run it.
- Create a folder
<folder>insidedataand put anfrequencies.csvand anheader.jsonin it. - Create your
frequencies.csvaccording to the following scheme, separated by commas:ref= your public transport route number (as used in OSM, required)from= the first stop (as in OSM, required)to= the last stop (as in OSM, required)via= an intermediate stop (as in OSM, required when present in OSM data)intermediates= intermediate stop names (as in OSM), separated by a;(not required)opening-hours= opening hours, subset from the OSM opening_hours specification, should look like{Weekday(-{Weekday})} {start_hour:start_min}(-{end_hour:end_min}), for exampleMo-Sa 07:15-12:30,Tu 15:15or evenTu 12:30|14:00, separated by a;(required)exceptions= the dates (ISO 8601) which are excluded from the service, separated by a;(not required)duration= the time the public transport service needs to fulfill the route (required)intermediate-durations= the time the public transport service needs from the first stop to the respective intermediate stop, separated by a;, has to be exactly as long as theintermediateslist (required, ifintermediatesis set)frequency= number of minutes between public transport services on this route (required, but in the caseopening-hoursdoes not include time ranges it can be left blank)
- The
header.jsonfile follows the specification here, without thelinesand theupdatedkeys - Run
python3 convert.py -f <folder>
There is also an alternative method of expressing frequencies: by the times, the public transport service passes in one hour.
This alternative approach can be used with the -h or --per_hour flag when running the script (but you have to be sure, that all the rows for frequency inside frequencies.csv follow this approach)
This program is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
