Skip to content

Repository files navigation

Connection Scan Algorithm

TravisnpmDavid

Implementation of the Connection Scan Algorithm in TypeScript.

Additional features not in the paper implementation:

  • Various fixes in order to improve the quality of results.
  • Calendars are checked to ensure services are running on the specified day
  • The origin and destination may be a set of stops
  • Interchange time at each station is applied
  • Pickup / set down marker of stop times are obeyed
  • Multi-criteria journey filtering
  • Transfers (footpaths) can be used

Usage

It will work with any well formed GTFS data set.

Node +11 is required for all examples.

npm install --save connection-scan-algorithm

Depart After Query

Find the first results that depart after a specific time

const{GtfsLoader, JourneyFactory, ConnectionScanAlgorithm, ScanResultsFactory, TimeParser, MultipleCriteriaFilter, DepartAfterQuery}=require("connection-scan-algorithm");constgtfsLoader=newGtfsLoader(newTimeParser());constgtfs=awaitgtfsLoader.load(fs.createReadStream("gtfs.zip"));constcsa=newConnectionScanAlgorithm(gtfs.connections,gtfs.transfers,newScanResultsFactory(gtfs.interchange));constquery=newDepartAfterQuery(csa,newJourneyFactory(),[newMultipleCriteriaFilter()]);constresults=query.plan(["TBW"],["NRW"],newDate(),9*3600);

TODO

  • Short circuit connection scan once all destinations found
  • Fake trip ID for transfers to (removes branch)
  • Only scan transfers for stops once (avoid re-scan when time is improved)

Contributing

Issues and PRs are very welcome. To get the project set up run:

git clone git@github.com:planarnetwork/connection-scan-algorithm
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.

License

This software is licensed under GNU GPLv3.

About

No description, website, or topics provided.

Resources

Stars

14 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages