Awesome
transit_model
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:
- binary gtfs2netexfr converts GTFS data format into NeTEx-France data format.
- binary gtfs2ntfs converts GTFS data format into NTFS data format.
- binary ntfs2gtfs converts NTFS data format into GTFS data format.
- binary ntfs2netexfr converts NTFS data format into NeTEx-France data format.
- binary ntfs2ntfs checks and cleans a NTFS dataset.
- binary restrict-validity-period restricts the validity period of a NTFS dataset and purges out-of-date data.
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
andline_group_links.txt
). - The field
trip_short_name_at_stop
instop_times.txt
introduced in versionv0.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