Skip to content

planarnetwork/connection-scan-algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Connection Scan Algorithm

Travis npm David

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");

const gtfsLoader = new GtfsLoader(new TimeParser());
const gtfs = await gtfsLoader.load(fs.createReadStream("gtfs.zip"));
const csa = new ConnectionScanAlgorithm(gtfs.connections, gtfs.transfers, new ScanResultsFactory(gtfs.interchange));
const query = new DepartAfterQuery(csa, new JourneyFactory(), [new MultipleCriteriaFilter()]);
const results = query.plan(["TBW"], ["NRW"], new Date(), 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

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •