#Mobroute
Mobroute is a general purpose FOSS public transportation router
(e.g. trip planner) Go library and CLI that works by directly ingesting
timetable (GTFS) data from transit agencies themselves (sourced from
the Mobility Database). After
data has been fetched, routing calculations can be run offline, and
locally / on-device (as opposed to making a network call). Overall,
Mobroute aims to offer an opensource framework (both CLI & library)
for integrating data-provider-agnostic GTFS public transit capabilities
(integrated GTFS ETL, GTFS multisource support, and routing algorithm)
into applications to get users from point-a to point-b via public transit
without comprising privacy or user freedoms.
In addition to the Mobroute Go library & CLI, the related subproject,
the Transito app offers fully integrated
routing functionality on mobile devices (Android & Linux) utilizing
Mobroute's Go library.
The Mobroute & Transito projects overall are currently
in active development but generally currently usable
on mobile & via
the CLI and looking for more users &
testers. Mobroute & Transito work in many well-connected metros which
have publicly available GTFS data, to name a few: Lisbon, NYC, Brussels,
Krakow, and Bourges. You can see sample routes at the automated test
results page, check for your metro
here, and see details on the Transito mobile app
here.
#Documentation:
- Mobroute Doc: CLI Userguide, Go Library Userguide, Available GTFS Feeds, Tunable Parameters, Development, Contribute, Roadmap
- Project Management: Bugtracker, Mailing List
- CI: Test Results (master), Test Results (by commit), Generated APKs, Builds
- Related: Transito (Mobile App), Mobsql (GTFS-to-SQLite ETL library)
#Project Overview / Featureset:
- Well-executed singlemodal public transportation routing via GTFS data
- Project focuses on implementing only GTFS routing providing for algorithmic & codebase simplicity
- Other routers bill themselves as "multimodal"; Mobroute is proudly singlemodal (doesn't integrate automobile/OSM/PBF data)
- Overall.. does one thing well: public transportation routing
- Integration of automatic GTFS dataimport & ETL out-of-the-box via the Mobility Database
- Frees user from having to source & manually download/import GTFS zip archives
- System automatically downloads the data needed for a routing requests upon use
- Supports using multiple GTFS sources independently and in combination for single routing requests
- See Mobsql for details on ETL pipeline, uses SQLite under the hood
- Efficient algorithmic routing via the Connection Scan Algorithm (CSA)
- Being a singlemodal router lends Mobroute's design to implementation simplicity
- The well academically studied CSA algorithm is utilized: see paper details here
- CSA is non-graphbased, simple, and Mobroute's CSA implementation is well tested
- Targeted to on-device and offline usage
- Designed to be used on-device and offline once data is fetched
- Run your routing request right on your mobile device for the privacy conscious
- Fully thought-out small, simple, & modular design supporting library, CLI, & mobile usage
- Built in Go, the design of the project is small and modular
- 3 primary components:
- Mobsql (GTFS-to-SQLite ETL pipeline: CLI + Go Library)
- Mobroute (Core routing algorithm via CSA: CLI + Go Library)
- Transito (Graphical mobile application for Android & Linux)
- Mobsql and Mobroute can be used as both a CLI OR as a Go library in your application
- Transito, Mobroute's mobile application is written in Go (via Gio) and uses Mobroute's Go Library
#Architecture:
The Mobroute project is composed of 3 separate codebases / smaller projects:
- Mobsql: is a GTFS-to-SQL ETL tool which
pulls GTFS sources from the MobilityDB into a SQLite database. It exposes
both a CLI & a Go library (consumed by Mobroute).
- Mobroute: is the core routing tool.
This project handles interfacing the Mobsql Go Library and then once
the DB is loaded, opens the DB and performs routing calculations
(currently via the Connection Scan Algorithm). It exposes both a CLI &
a Go library ( consumed by Transito).
- Transito: is a simple Android & Linux GUI
app to use Mobroute. It allows querying from/to via Nominatim and
performing routing calculations on-the-go via Mobroute's underlying
routing mechanism (note this implicitly integrates Mobsql as well).
#Funding
This project is funded through NGI0 Entrust,
a fund established by NLnet with financial
support from the European Commission's Next Generation
Internet program. Learn more at the NLnet project
page.