#amtrak #convert #data #valid #vehicle #information #gtfs-rt

amtrak-gtfs-rt

Converts Amtrak Track-A-Train to valid GTFS-rt vehicle and trip information

16 releases

new 0.2.1 Apr 8, 2024
0.2.0 Mar 27, 2024
0.1.19 Feb 28, 2024
0.1.17 Jan 8, 2024
0.1.12 Dec 30, 2023

#1527 in Parser implementations

Download history 85/week @ 2023-12-18 150/week @ 2024-01-01 58/week @ 2024-01-08 11/week @ 2024-01-15 7/week @ 2024-01-22 39/week @ 2024-02-19 288/week @ 2024-02-26 46/week @ 2024-03-04 58/week @ 2024-03-11 48/week @ 2024-03-18 150/week @ 2024-03-25 117/week @ 2024-04-01

378 downloads per month
Used in 3 crates (2 directly)

AGPL-3.0

24KB
422 lines

amtrak-gtfs-rt

Decrypts Amtrak's GTFS-RT

A valid Amtrak GTFS structure must be passed into the function to work.

Here's an example of some working code! Note that prost version 0.11 should be used, as gtfs-rt does not use 0.12 yet.

extern crate amtrak_gtfs_rt;

use prost::Message;
use gtfs_structures::Gtfs;

#[tokio::main]
async fn main() {
    let gtfs = Gtfs::from_url_async("https://content.amtrak.com/content/gtfs/GTFS.zip")
    .await
    .unwrap();

    let client = reqwest::Client::new();
    loop {
        let amtrak_gtfs_rt = amtrak_gtfs_rt::fetch_amtrak_gtfs_rt(&gtfs, &client).await.unwrap();

        //extract the binary data
        let vehicle_data = amtrak_gtfs_rt.vehicle_positions.encode_to_vec();
        let trip_data = amtrak_gtfs_rt.trip_updates.encode_to_vec();

        std::thread::sleep(std::time::Duration::from_millis(500));
    }
}

This software package decrypts the Amtrak track-a-train json data and performs lookups of trip information in the GTFS schedule to match each vehicle with it's route_id and trip_id.

Pull requests are welcome!

Capital Corridor Exception

Note that the Metropolitan Transportation Commission also publishes Capital Corridor in their own feed. https://511.org/open-data/transit provides Capital Corridor as "CC". This data refreshes more often (and is closer in location & time), and shows locomotive numbers. For this reason, you may wish to remove Capital Corridor from this feed. Thus, we've included a function filter_capital_corridor() which takes in any gtfs_rt::FeedMessage and removes CC vehicles and trips.

Dependencies

~18–35MB
~557K SLoC