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.

shell 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):

sh make install_proj_deps

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

sh 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:

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