gtfsmerge merges multiple GTFS zip files into a single zip.
- Transfers are created for stops that are close to each other
- Duplicate stops, agencies and routes are assumed to be the same stop and only output once.
- Calendars, calendar dates, trips and stop times are re-indexed.
- Identical calendars are merged into a single entry.
- Any calendars or calendar dates in the past are removed along with their corresponding trips
- Any calendar dates without a calendar are converted to a calendar
- Any unused stops are removed
- Routes can be removed based on their type (Bus, Rail, etc)
- This tool does not currently process any of the fares files. Please raise an issue if you would like this feature.
Please note that zip/unzip and node 11.x or above are required.
gtfsmerge is a CLI tool that can be installed via NPM:
sudo apt-get install nodejs zip
npm install -g gtfsmerge
It can be run by specifying the input and output files as CLI arguments:
gtfsmerge input1.zip input2.zip output.zip
You can specify the distance (in kilometers) that should be used add transfers for nearby stops:
gtfsmerge --transfer-distance=2 input1.zip input2.zip output.zip
Stops with the same ID in different files are assumed to be the same stop but it is possible to add a prefix if this is not the case:
gtfsmerge --stop-prefix=input1_stop input1.zip modified-input1.zip
gtfsmerge modified-input1.zip input2.zip output.zip
Routes can be removed based on their type:
gtfsmerge --remove-route-types=0,1,4 input1.zip input2.zip output.zip
Issues and PRs are very welcome. To get the project set up run
git clone git@github.com:planarnetwork/gtfsmerge
npm install --dev
npm test
If you would like to send a pull request please write your contribution in TypeScript and if possible, add a test.
This software is licensed under GNU GPLv3.