All Projects → nicomazz → fastgtfs

nicomazz / fastgtfs

Licence: GPL-3.0 license
A pure Rust library that provides GTFS parsing, navigation, time table creation, and real-time network simulation.

Programming Languages

rust
11053 projects
typescript
32286 projects

Projects that are alternatives of or similar to fastgtfs

european-transport-operators
NOT UP-TO-DATE ANYMORE, UNMAINTAINED. CHECK european-transport-feeds INSTEAD. List of european long-distance transport operators, available API endpoints, GTFS feeds and client modules.
Stars: ✭ 47 (+123.81%)
Mutual labels:  gtfs, public-transport, gtfs-feed
pt2matsim
Package to create a multi-modal MATSim network and schedule from public transit data (GTFS or HAFAS) and an OSM map of the area.
Stars: ✭ 29 (+38.1%)
Mutual labels:  gtfs, public-transport
retro-gtfs
Collect real-time transit data and process it into a retroactive GTFS 'schedule' which can be used for routing/analysis
Stars: ✭ 45 (+114.29%)
Mutual labels:  gtfs, public-transport
linked-connections-server
Express based server that exposes Linked Connections.
Stars: ✭ 12 (-42.86%)
Mutual labels:  gtfs, public-transport
gtfs-utils
Utilities to process GTFS data sets.
Stars: ✭ 19 (-9.52%)
Mutual labels:  gtfs, public-transport
gtfstools
General Transit Feed Specification (GTFS) Editing and Analysing Tools
Stars: ✭ 31 (+47.62%)
Mutual labels:  gtfs, public-transport
matsim-sbb-extensions
matsim swiss rail
Stars: ✭ 23 (+9.52%)
Mutual labels:  public-transport
NavigationRouter
A router implementation designed for complex modular apps, written in Swift
Stars: ✭ 89 (+323.81%)
Mutual labels:  navigation
pygac
A python package to read and calibrate NOAA and Metop AVHRR GAC and LAC data
Stars: ✭ 14 (-33.33%)
Mutual labels:  navigation
godot 2d navmesh generator
Godot plugin that generates a 2D navigation mesh from collsion nodes.
Stars: ✭ 35 (+66.67%)
Mutual labels:  navigation
leaflet-layer-tree-plugin
No description or website provided.
Stars: ✭ 31 (+47.62%)
Mutual labels:  navigation
graphhopper-ios
iOS Port of the GraphHopper road routing engine
Stars: ✭ 67 (+219.05%)
Mutual labels:  navigation
algos
A collection of algorithms in rust
Stars: ✭ 16 (-23.81%)
Mutual labels:  rust-crate
easyRNRoute
https://medium.com/@kevinle/comprehensive-routing-and-navigation-in-react-native-made-easy-6383e6cdc293#.nttfeeq3p
Stars: ✭ 25 (+19.05%)
Mutual labels:  navigation
UT Framework
Various advanced tools built for Unreal Engine 4
Stars: ✭ 45 (+114.29%)
Mutual labels:  navigation
react-native-weather
This project is to explore React Navigation (Drawer, Tab, and Stack Navigators). And explore best practices around styling, design, and collaborating with designers for better UX for building great apps.
Stars: ✭ 51 (+142.86%)
Mutual labels:  navigation
shortcut
Quickly make and use shortcuts in your shell for easy navigation
Stars: ✭ 17 (-19.05%)
Mutual labels:  navigation
navdatareader
Navdatareader is a command line tool that uses the atools fs/bgl and fs/writer to store a full flight simulator scenery database into a relational database like Sqlite or MySql.
Stars: ✭ 35 (+66.67%)
Mutual labels:  navigation
AI
使用深度强化学习解决视觉跟踪和视觉导航问题
Stars: ✭ 16 (-23.81%)
Mutual labels:  navigation
kul
A unique textual notation that can be used as both a data format and a markup language and that has powerful extensibility of both lexical syntax and semantics, and a Rust library for parsing it.
Stars: ✭ 12 (-42.86%)
Mutual labels:  rust-crate

tests Contributors Forks Stargazers Issues MIT License


FastGtfs

fastgtfs-cover

A pure Rust library that provides GTFS parsing, navigation, time table creation and real time network simulation. Already in production with the beta of this android app.


View Web assembly demo · View App Demo · Report Bug · Request Feature

Table of Contents

About The Project

This library is the core of the Venice Navigation&timetables app. The app aims to provide services using GTFS data completely offline. In this way, tourists without an internet plan do not have to worry about public transport. This library was all originally written in C++. To learn RUST, I decided to write it all again (so, yes, this is my first rust project). It has been cross-compiled for Android, and provides several features to the app:

  • Navigation from point A to B, with a slightly modified version of Microsoft's RAPTOR algorithm. This version takes care of real walking path distances and average person preferences when choosing a solution.

  • Creation of timetables for routes with heterogeneous trips. To do that, I do a topological sort on the different trip paths.

  • Simulation of the entire network. Given a trip and a time, it is possible to get the bus's exact position by using interpolation. In the android app, it is possible to see a simulation of the entire Venice bus and water-bus network.

  • Merge of several datasets into a unique data structure.

  • Optimized queries over merged GTFS datasets. See gtfs_data.rs for this.

  • Serialization and deserialization of the raw data structure using Google's flatbuffers. In this way, there is a huge compression. The Android app uses this feature. Every time the app is started, it reads the binary data (in the flatbuffer format) directly into the final data structure, avoiding the slow txt parsing. The parsing requires more time and generates the serialized binary data.

  • Walk time calculator. It uses "HERE" APIs to precompute the real walking times between each stop and the 40 nearest ones. This is done with the walk_distance_calculator crate. It uses parsed stop positions. This is then used in the navigation algorithm.

There are a few basic tests, where they are really needed. From the Android app, it seems it works well!

Usage

For the usage, refer to the tests folder.

License

Distributed under the GNU General Public License v3.0 License. See LICENSE for more information.

Contact

Nicolo' Mazzucato - @nicomazz

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].