Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tmelliott/transitr
An R package for constructing and modelling a transit network in real time to obtain vehicle ETAs
https://github.com/tmelliott/transitr
gtfs gtfs-realtime r transit
Last synced: 12 days ago
JSON representation
An R package for constructing and modelling a transit network in real time to obtain vehicle ETAs
- Host: GitHub
- URL: https://github.com/tmelliott/transitr
- Owner: tmelliott
- Created: 2018-07-16T02:25:19.000Z (over 6 years ago)
- Default Branch: develop
- Last Pushed: 2023-06-06T11:05:35.000Z (over 1 year ago)
- Last Synced: 2024-08-01T00:38:30.900Z (3 months ago)
- Topics: gtfs, gtfs-realtime, r, transit
- Language: C++
- Size: 5.22 MB
- Stars: 22
- Watchers: 4
- Forks: 0
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# transitr
[![Travis build status](https://travis-ci.org/tmelliott/transitr.svg?branch=develop)](https://travis-ci.org/tmelliott/transitr)
[![codecov](https://codecov.io/gh/tmelliott/transitr/branch/develop/graph/badge.svg)](https://codecov.io/gh/tmelliott/transitr)The goals of `transitr` are to make it easy to __load GTFS data__ into a database,
construct a __transit network__ of roads and intersections,
and __model vehicles in real-time__ from an API feed to update the network
and __generate ETAs__.# install
`transitr` is not (yet) on CRAN, so for you would need to use `devtools`:
```r
devtools::install_github('tmelliott/transitr')
```# usage
__Still under development!__
This here is just for demonstration of what it could be like at some point
in the future.```r
library(transitr)
library(magrittr)## Create a database, construct network, and connect to a realtime feed
dbname <- "realtime.db"
nw <- create_gtfs("https://cdn01.at.govt.nz/data/gtfs.zip", db = dbname) %>%
construct() %>%
realtime_feed("https://api.at.govt.nz/v2/public/realtime/vehiclelocations",
with_headers("Ocp-Apim-Subscription-Key" = "mykey"),
response = "protobuf")## Set the parameters and then run the model
nw %>%
set_parameters(n_core = 2,
n_particles = 500,
gps_error = 5) %>%
model()
```Once running, you can launch a new R session and view the shiny app:
```r
transitr::view_realtime("realtime.db")
```# mock data server
In order to facilitate model development and checking, there's also a mock data server
in the `simulations` directory.To install:
```bash
cd simulations
yarn## or if you don't use yarn
npm install
```To start the server, you need first an archive of vehicle position feeds,
```bash
ls archive | grep vehicle | head -n 5
# vehicle_locations_20180911050001.pb
# vehicle_locations_20180911050031.pb
# vehicle_locations_20180911050102.pb
# vehicle_locations_20180911050132.pb
# vehicle_locations_20180911050201.pbyarn start
# yarn run v1.9.4
# $ node mock_server.js
# Mock GTFS server running on port 3000!
```Now you can run the model with the local server, which will automatically serve
the next file with each request.
```r
## assumeing you've constructed with simulation flag:
## $ make FLAGS="-DSIMULATION"
## simulation history will be saved in a `history` directory
dir.create("history")## set some process ID for the server to recognise (allows running multiple simulations simultaneously)
pid <- "test1"
nw <- load_gtfs("fulldata.db") %>%
realtime_feed(sprintf("http://localhost:3000/%s/vehicle_positions", pid),
response = "protobuf") %>%
set_parameters(n_core = 1,
n_particles = 2000,
gps_error = 10)nw %>% model()
```