All Projects → CanalTP → transit_model

CanalTP / transit_model

Licence: AGPL-3.0 License
Managing transit data with Rust

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to transit model

retro-gtfs
Collect real-time transit data and process it into a retroactive GTFS 'schedule' which can be used for routing/analysis
Stars: ✭ 45 (+36.36%)
Mutual labels:  transit, gtfs
transitime
TheTransitClock real-time transit information system
Stars: ✭ 60 (+81.82%)
Mutual labels:  transit, gtfs
Onebusaway Application Modules
The core OneBusAway application suite.
Stars: ✭ 174 (+427.27%)
Mutual labels:  transit, gtfs
open-bus
🚌 Analysing Israel's public transport data
Stars: ✭ 65 (+96.97%)
Mutual labels:  transit, gtfs
theweekendest
Real-time New York City subway service map
Stars: ✭ 51 (+54.55%)
Mutual labels:  transit, gtfs
R5
Routing engine for multimodal (transit/bike/walk/car) networks with a particular focus on public transit.
Stars: ✭ 153 (+363.64%)
Mutual labels:  transit, gtfs
concentrate
Concentrate: combine realtime transit files
Stars: ✭ 23 (-30.3%)
Mutual labels:  transit, gtfs
Transitland Datastore
Transitland's centralized web service API for both querying and editing aggregated transit data from around the world
Stars: ✭ 101 (+206.06%)
Mutual labels:  transit, gtfs
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 (+42.42%)
Mutual labels:  transit, gtfs
mapzen-gtfs
Python library for reading and writing GTFS feeds
Stars: ✭ 27 (-18.18%)
Mutual labels:  transit, gtfs
Rrrr
RRRR rapid real-time routing
Stars: ✭ 134 (+306.06%)
Mutual labels:  transit, gtfs
gtfs-utils
Utilities to process GTFS data sets.
Stars: ✭ 19 (-42.42%)
Mutual labels:  transit, gtfs
Gtfs To Html
Build human readable transit timetables as HTML or PDF from GTFS.
Stars: ✭ 119 (+260.61%)
Mutual labels:  transit, gtfs
transitland-atlas
an open directory of mobility feeds and operators — powers both Transitland v1 and v2
Stars: ✭ 55 (+66.67%)
Mutual labels:  transit, gtfs
Peartree
peartree: A library for converting transit data into a directed graph for sketch network analysis.
Stars: ✭ 116 (+251.52%)
Mutual labels:  transit, gtfs
nepomuk
A public transit router for GTFS feeds (currently only static) written in modern c++
Stars: ✭ 22 (-33.33%)
Mutual labels:  transit, gtfs
Mobility Explorer
Understand transportation networks around the world using Transitland open data and Valhalla routing engine APIs
Stars: ✭ 31 (-6.06%)
Mutual labels:  transit, gtfs
Tidytransit
R package for working with the General Transit Feed Specification (GTFS)
Stars: ✭ 84 (+154.55%)
Mutual labels:  transit, gtfs
transxchange2gtfs
tool to convert transxchange data into a GTFS feed
Stars: ✭ 26 (-21.21%)
Mutual labels:  transit, gtfs
goodservice
Website that detects headway discrepancy on New York City Subway system using live countdown clocks
Stars: ✭ 26 (-21.21%)
Mutual labels:  transit, gtfs

transit_model

GitHub release (latest by date) Crates.io API documentation GitHub Workflow Status Codecov Code Coverage License: AGPL v3.0

transit_model is a Rust crate to manage, convert and enrich transit data.
This is done by implementing the NTFS model (used in navitia).

This repository regroups crates that offer enabler-libraries and binaries to convert and enrich transit data.

Additionally, transit_model is itself a library providing various functionalities. Please refer to the code, examples and documentation to discover them.

Please check documentation attached to each crate:

Usage with Docker

For all the binaries mentioned above, it is also possible to use them with Docker. All the binaries are part of the image navitia/transit_model which is tagged alongside the crate transit_model. Let's use gtfs2ntfs as an example.

mkdir output-ntfs/
docker run \
	--volume "${PWD}/tests/fixtures/gtfs:/gtfs" \
	--volume "${PWD}/output-ntfs:/ntfs" \
	navitia/transit_model \
	gtfs2ntfs \
	--input /gtfs \
	--output /ntfs

Setup Rust environment

transit_model is developed in Rust.

If you want to contribute or install binaries, you need to install a Rust environment: see rustup.rs

PROJ dependency

Based on PROJ, the proj crate allows the transformation of localization coordinates.

Some transit_model's crates (see each documentation) use PROJ.
So it must be installed on the system to compile and use those crates.

PROJ for binaries

The proj crate requires PROJ.

If your system has pkg-config and a sufficiently new version of PROJ installed, it will be used. Otherwise, the crate falls back to building PROJ from source, which requires some build time dependencies.

To install PROJ build time dependencies, you can execute the following command (On Debian systems):

make install_proj_deps

You can also install the required PROJ version system-wide to avoid full rebuild (ex: cargo clean):

make install_proj

PROJ installation instructions may help, too.

Using PROJ and transit_model as a developer

proj crate is a binding to the C library.

PROJ is configured as a feature of the transit_model crate.
So to use it for coding, the proj feature must be activated (cargo build --features=proj).
Then specific code should be conditionally enabled with #[cfg(feature="proj")].

NTFS Level of Support

transit_model is supporting most of NTFS format.
From the standard, some of the functionalities are not fully supported:

  • No support for Line Groups (files line_groups.txt and line_group_links.txt).
  • The field trip_short_name_at_stop in stop_times.txt introduced in version v0.10.0 (see NTFS changelog in French) is not supported.

Contributing

Please see CONTRIBUTING to know more about the code or how to test, contribute, report issues.

License

Licensed under GNU Affero General Public License v3.0

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].