transit_model 
transit_model is a Rust crate managing transit data by implementing the NTFS
model v0.9.1 (used in navitia). See the
section NTFS: Level of Support for more details about the
level of support of the NTFS standard.
This repository also provides :
- (incomplete) GTFS to NTFS and (soon) NTFS to GTFS conversion.
- (incomplete) Generation of transfers. .
- Merge [NTFS] (https://github.com/CanalTP/ntfs-specification/blob/master/ntfs_fr.md).
Compile
Compile for KV1
The KV1 format needs a additional dependency called PROJ
which allows the transformation of localization coordinates.
crates.io provides a
proj crate which is a binding to the C
library (version 6.1.0). This means you need PROJ version
6.1.0 installed on your system. See PROJ installation
instructions.
PROJ is configured as a feature of the transit_model
crate. Once PROJ is installed on your machine, you need a
few more dependencies for building transit_model.
apt install -y clang libssl-dev
cargo build --features=proj
Now, you should be able to use the converter kv12ntfs. Enjoy!
Using PROJ
If you want to use PROJ in your code, you can if you
activate the proj feature (cargo build --features=proj). Then don't forget
to protect your code with #[cfg(feature="proj")].
Benchmarking
A few benchmarks are available if you want to compare performance of a new feature or of an optimization. Benchmarking functionality is only available in Rust Nightly so to run them, you can do the following.
cargo +nightly bench --all-features
Of course, if you need to run one specific bench, you can refer to a specific
bench name in benches/.
rustup run nightly cargo bench read_kv1 --features proj
Converting from GTFS to NTFS
NTFS needs a Dataset and a Contributor.
Default ones are provided by the command but you can pass a json file that contains some information for creating a Dataset and a Contributor as explained in the documentation.
Tests
NTFS: Level of Support
transit_model is partially supporting v0.9.1 of NTFS (see CHANGELOG in
French).
From the standard, some of the functionalities are not fully supported:
- Management of pathways introduced in version
v0.8is not supported - No support for all periodic description (files
grid_calendars.txt,grid_exception_dates.txt,grid_periods.txtandgrid_rel_calendar_line.txt) - No support for Line Groups (files
line_groups.txtandline_group_links.txt)
License
Licensed under GNU General Public License v3.0