https://github.com/hove-io/transit_model
Managing transit data with Rust
https://github.com/hove-io/transit_model
gtfs gtfs-conversion gtfs2netexfr gtfs2ntfs navitia netex netexfr ntfs rust transit transit-model
Last synced: 3 months ago
JSON representation
Managing transit data with Rust
- Host: GitHub
- URL: https://github.com/hove-io/transit_model
- Owner: hove-io
- License: agpl-3.0
- Created: 2017-12-19T18:14:12.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-05-13T12:17:22.000Z (about 1 year ago)
- Last Synced: 2024-05-18T05:40:39.639Z (about 1 year ago)
- Topics: gtfs, gtfs-conversion, gtfs2netexfr, gtfs2ntfs, navitia, netex, netexfr, ntfs, rust, transit, transit-model
- Language: Rust
- Homepage:
- Size: 4.21 MB
- Stars: 52
- Watchers: 22
- Forks: 28
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# transit_model
[](https://github.com/hove-io/transit_model/releases)
[](https://docs.rs/transit_model)
[](https://github.com/hove-io/transit_model/actions/workflows/continuous-integration-deb11.yml)
[](https://codecov.io/gh/hove-io/transit_model)
[](./LICENSE)**`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](examples) and
[documentation](https://docs.rs/transit_model) to discover them.Please check documentation attached to each crate:
* binary [**gtfs2netexfr**](gtfs2netexfr/README.md) converts [GTFS] data format
into [NeTEx]-France data format.
* binary [**gtfs2ntfs**](gtfs2ntfs/README.md) converts [GTFS] data format into
[NTFS] data format.
* binary [**ntfs2gtfs**](ntfs2gtfs/README.md) converts [NTFS] data format into
[GTFS] data format.
* binary [**ntfs2netexfr**](ntfs2netexfr/README.md) converts [NTFS] data format
into [NeTEx]-France data format.
* binary [**ntfs2ntfs**](ntfs2ntfs/README.md) checks and cleans a [NTFS]
dataset.
* binary [**restrict-validity-period**](restrict-validity-period/README.md)
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.```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]
[Rust]: https://www.rust-lang.org
[rustup.rs]: https://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](https://github.com/OSGeo/PROJ#installation)
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](CONTRIBUTING.md) to know more about the code or how
to test, contribute, report issues.## License
Licensed under [GNU Affero General Public License v3.0](LICENSE)
[GTFS]: https://gtfs.org/reference/static
[navitia]: https://github.com/hove-io/navitia
[NeTEx]: http://netex-cen.eu
[NTFS]: https://github.com/hove-io/ntfs-specification/blob/master/ntfs_fr.md
[NTFS changelog in French]: https://github.com/hove-io/ntfs-specification/blob/master/ntfs_changelog_fr.md
[PROJ]: https://proj.org
[`proj` crate]: https://crates.io/crates/proj
[`navitia/transit_model`]: https://hub.docker.com/r/navitia/transit_model
[`transit_model`]: https://crates.io/crates/transit_model