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>
insidedata
and put anfrequencies.csv
and anheader.json
in it. - Create your
frequencies.csv
according 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:15
or 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 theintermediates
list (required, ifintermediates
is set)frequency
= number of minutes between public transport services on this route (required, but in the caseopening-hours
does not include time ranges it can be left blank)
- The
header.json
file follows the specification here, without thelines
and theupdated
keys - 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.