Project Awesome project awesome

Transit

Data standards, APIs, apps, tools, datasets, and research around open source technology of public transit.

Collection 1.7k stars GitHub

Producing Data

GTFS Converters

extract-gtfs-pathways

Command-line tool to extract pathways as GeoJSON from a GTFS dataset.

extract-gtfs-shapes

Command-line tool to extract shapes as GeoJSON from a GTFS dataset.

GTFS-OSM-Sync

A Java tool for synchronizing data in GTFS format with OpenStreetMap.org.

gtfs-parser

The GTFS-PARSER library is a library to allow javascript to parse gtfs and create geojson on client or server.

gtfs-service-area

Compute a transit service area from static GTFS. Results are output as single-layer .geojson files. Dockerized version of gtfs-to-geojson.

GTFS-route-shapes

A Python script to generate a single geoJSON shape for each transit route in a GTFS archive.

gtfs-to-geojson

Javascript tool that converts transit data in GTFS shapes and stops into geoJSON. This is useful for creating maps of transit routes.

gtfs2gps

An R package that converts public transportation data in GTFS format to GPS-like records in a data.table, where each row represents the timestamp of each vehicle at a given spatial resolution.

gtfs2emis

An R package to estimate the emission levels of public transport vehicles based on General Transit Feed Specification (GTFS) data.

gtsf

general transit (GTFS) simple (geographic) features (sf) in R. can be used to convert from GTFS to Shapefile, GeoJSON, and other formats through GDAL.

hafas-generate-gtfs

A Javascript tool to generate GTFS dumps from HAFAS endpoints.

Hafas2GTFS

Hafas2GTFS converter written in Python, optimized for SBB HAFAS feeds.

kml-to-gtfs-shapes

Javascript tool to convert polylines from a KML file into a GTFS shapes.txt file. Hosted on GitHub here.

NeTEx-to-GTFS Converter Java

Converts NeTEX datasets into GTFS datasets. The input NeTEx datasets are required to follow the Nordic NeTEx Profile.

o2g

A simple tool to extract GTFS feed from OpenStreetMap.

Open-Transport SYNTHESE Convertors

Converts French-Transmodel, SIRI, NETeX, HAFAS, HASTUS, VDV452, and more.

onebusaway-gtfs-to-barefoot

A Java tool to create a Barefoot mapfile from a GTFS file.

onebusaway-vdv-modules

A Java library for working with transit data in the VDV format, including converting VDV-452 schedule data into GTFS.

osm2gtfs

Turn OpenStreetMap data and schedule information into GTFS.

transit_model

A Rust library to convert to/from the following formats: GTFS, NTFS (for Navitia, see Software for Creating APIs), TransXChange (UK specification), KV1 (NL specification), NeTEx (EU specification).

transloc-gtfs-rectifier

Python application that attempts to assign GTFS stopids to TransLoc IDs using TransLoc's API (TransLoc doesn't provide GTFS stopids in their API).

Transmodel and IFF to GTFS

Imports and syncs (Transmodel) BISON Koppelvlak1, IFF (a format written by HP/EDS, somewhat similiar to ATCO CIF) to import timetables of the railway networks. The internal pseudo-NETeX datastructure allows to export to GTFS and there are proof-of-concepts to export to other formats such as NETeX, GTFS and IFF.

TransXChange to GTFS converter

TransXChange to GTFS converter written in Objective-C.

UK2GTFS

R package that converts UK format TransXchange (bus, metro, tram, ferry) and CIF (rail) timetables to GTFS.

GTFS Data Collection and Maintenance Tools

bus-router

Python script that generates missing shapes.txt for GTFS using routing from Google Maps Directions API or OSRM.

gtfs-blocks-to-transfers

A Python tool to convert GTFS blocks, defined by setting trip.block_id into a series of trip-to-trip transfers (proposal).

GTFS Editor

A (self-hosted) web-based GTFS editing framework. (Note: this project has been deprecated in favor of IBI Data Tools).

GTFS Editor for Vagrant

Quickly set up the GTFS editor (above) using Vagrant.

static-GTFS-manager

A (self-hosted) browser-based user interface for creating, editing, exporting static GTFS (see related post).

TransitWand

An open source web and mobile application for collecting transit data. Use it to create GTFS feeds, capture passenger counts or generate GIS datasets.

IBI Data Tools

A web application that handles GTFS editing, validating, quality checking, and deploying to OpenTripPlanner. (Combines and builds upon the functionality of the deprecated

Data-Tools Server

Server for IBI's GTFS data management platform.

IBI Data Tools Infra

A tool to quickly setup and run a local instance of the above IBI Data Tools project.

pfaedle

Precise map-matching for GTFS using OpenStreetMap data

GTFS shape mapfit

Python tool that fits GTFS shape files and stops to a given OSM map file. Uses pymapmatch for the matching.

gtfs-station-builder

UI tool to help build the internal structure of stations (including pathways.txt)

GTFS Text-to-Speech Tester

A command-line tool that reads GTFS stop names out loud using Text-to-Speech to determine which need Text-to-Speech values for ttsstopname in stops.txt.

Spare GTFS-Flex Builder

A free tool that helps transit agencies easily create, manage, and export their transportation data in GTFS-Flex format.

Amarillo

Aggregates and enhances carpooling-offers and publishes them as GTFS(-RT)

Uttu

Back-end for Nplan, a simple timetable editor.

Gtfs Data Manager

and GTFS Editor.

GTFS Validators

gtfs-accessibility-validator

Validates the presence of accessiblity-related fields and files in a GTFS file. Can be a command line tool or node.js package.

Conveyal's gtfs-validator

A Java-based GTFS validator based on the OneBusAway GTFS Modules, runs in Java and is faster than the Google provided one.

Conveyal's gtfs-lib

Conveyal's successor to their own gtfs-validator, a Java-based library for loading and saving GTFS feeds of arbitrary size with disk-backed storage.

GTFS Data Package Specification

A Data Package specification with validation accomplished with Good Tables. Includes a data package, schemas, tests, and uses South East Queensland GTFS data as an example.

gtfstidy

A Go-based tool to tidy and validate GTFS feeds.

gtfsclean

A tool for checking, sanitizing, and minimizing GTFS feeds. Fork of gtfstidy, with some additional fixes that haven't been merged upstream yet.

gtfs-validator-api

This Python package is a thin wrapper around MobilityData/gtfs-validator that handles intermediate files produced and finds gtfs-validator's output file so it can be given a specific name or returned as a string.

GTFSVTOR

An open-source GTFS validator implemented in Java licensed under GPLv3 maintained by Mecatran.

MobilityData's gtfs-validator

A open-source GTFS validator canonically following the GTFS spec implemented in Java licensed under Apache v2.0 maintained by MobilityData.

Transit App's gtfs-fares-v2-validator

A Python tool that validators GTFS-Fares-v2 data based on the draft specification.

Transport Validator

An open-source validator implemented in Rust. Used by the French National Access Point.

GTFS Realtime Convertors

SIRI to GTFS-realtime

A Java-based command-line utility to convert from the SIRI format to GTFS-realtime

OrbCAD SQL Server to GTFS-realtime

A Java-based command-line utility that extracts vehicle positions and trip updates information from an OrbCAD SQL Server and exports them to the GTFS-realtime TripUpdates and VehiclePositions formats.

NextBus API to GTFS-realtime

A Java-based command-line utility to convert from the NextBus API format to GTFS-realtime. Note that NextBus now directly offers a GTFS-realtime API for their products. See Cubic site and this FAQ.

Syncromatics API to GTFS-realtime

A Java-based command-line utility to convert from the Syncromatics API format to GTFS-realtime TripUpdates and VehiclePositons.

KV6,15,17, and ARNU to GTFS-realtime

Java-based tool to process incoming KV6,15,17 and ARNU and match them to static transit data present in a RID integration database. It then proceeds to export this data as ARNU RITinfo, GTFS(realtime) and KV78turbo

WMATA BusPositions API to GTFS-realtime

Java-based tool to convert from WMATA's BusPositions API and Alert RSS feeds from MetroAlerts to GTFS-realtime TripUpdates, VehiclePositions, and Alerts feeds.

SEPTA API to GTFS-realtime

Java-based tool to convert SEPTA's real-time bus and rail data to GTFS-realtime

CTA API to GTFS-realtime

Java-based tool to convert CTA's Train Tracker data to GTFS-realtime.

Detroit DOT to GTFS-realtime

Extract real-time info from DDOT's TransitMaster installation (database) and convert to GTFS-realtime

Live Transit Event Trigger

Extracts data from Ride On's OrbCAD database and export as GTFS-realtime.

SoundTransit to GTFS-realtime

Convert text file feed from Sound Transit to GTFS-realtime

Civic Transit

Screen-scrapes KCATA’s TransitMaster WebWatch installation to produce a GTFS-realtime feed.

gtfs-realtime-translators

A Python-based tool to translate custom arrival API formats to GTFS-realtime. As of July 2019 it supports LA Metro and SEPTA.

Transloc API to GTFS-realtime

A Node.js based tool to convert the Transloc API to GTFS-realtime.

hafas-gtfs-rt-feed

A Javascript tool to generate a GTFS Realtime feed from a HAFAS endpoint.

GTFS-realtime to SIRI-Lite

A Rust webserver to convert multiple GTFS-RT feeds to a SIRI-Lite API.

GTFS-realtime VehiclePositions to GTFS-realtime TripUpdates (TransitClock)

Java application that can consume raw vehicle positions and generate prediction times in formats such as GTFS-realtime. Formerly known as "Transitime".

GTFS Realtime Utilities

bus_kalman

A Kalman Filter used to interpolate bus travel times using NYC MTA real-time data.

Concentrate

Combines realtime transit information from multiple sources into single output files. Maintained by Massachusetts Bay Transportation Authority (MBTA).

gtfs-realtime-test-service

A tool for mocking GTFS-realtime feed content (e.g., for use in testing a GTFS-realtime consuming application).

GTFS-realtime Munin Plugin

Provides a Munin plugin for logging information about a GTFS-realtime feed.

GTFS-realtime Nagio Plugin

Provides a Nagios plugin for monitoring a GTFS-realtime feed

GTFS-realtime Printer

Java-based utility to print out information from a GTFS-realtime file or URL.

gtfs-rt-admin

An admin tool for managing GTFS-RT service alerts (JavaScript and Java).

gtfs-rt-differential-to-full-dataset

Javascript tool to transform a continuous GTFS Realtime stream of DIFFERENTIAL incrementality data into a FULL_DATASET dump.

gtfs-rt-dump

Converts protocol buffer format to plain text for easy viewing of a GTFS-realtime feed in plain text (for debugging purposes)

gtfs-rt-inspector

Web app to inspect & analyze any (CORS-enabled) GTFS Realtime feed. Open-source on GitHub.

GTFS Data Pipeline for TfNSW Bus Datasets

A data pipeline developed for the TfNSW's GTFS Static and Realtime datasets. The datasets generated using the pipeline have been used to validate the performance of TfNSW's Transit Signal Priority Request via Public Transport Information and Priority System (PTIPS).

manual-gtfsrt

A Go-based tool that serves a GTFS-RT feed created from editable JSON.

print-gtfs-rt-cli

Javascript tool to read a GTFS Realtime feed from stdin, print human-readable or as JSON.

transitcast

Uses GTFS and GTFS-RT vehicle position feed generating an estimated transition time it takes for each vehicle to move from scheduled stop to scheduled stop recording these an "observedstoptime" table. These records can later be used to train a machine learning model to make vehicle travel predictions. Created by TriMet as part of an FTA IMI project.

transit-feed-quality-calculator

A Java project that uses the gtfs-realtime-validator to assess the quality of a large number of transit feeds, fetching the feed URLs from a global directory (TransitFeeds.com/OpenMobilityData.org).

Transit Network Model

A tool to generate predictions using GTFS-realtime VehiclePositions, a particle filter, and a Kalman Filter.

GTFS Realtime Display

Analyse, monitor and maintain GTFS Realtime data. Example instances

Pilot or development stage

CurbLR

A specification for curb regulations.

Dyno-Demand

A GTFS-based travel demand data format focusing on individual passenger demand suitable for dynamic network modeling developed by San Francisco County Transportation Authority, LMZ LLC, and UrbanLabs LLC.

Dyno-Path

(Under development - see this post) Data for individual passenger trajectories.

GTFS-plus

A GTFS-based transit network format for vehicle and capacity data suitable for dynamic transit modeling developed by Puget Sound Regional Council, UrbanLabs LLC, LMZ LLC, and San Francisco County Transportation Authority.

GTFS-ride

An open, fixed-route transit ridership data standard developed through a partnership between the Oregon Department of Transportation and Oregon State University.

GTFS-stat

An extension to a GTFS transit network with additional files that contain performance data developed by UrbanLabs LLC and San Francisco County Transportation Authority.

GMNS

General Modeling Network Specification: A format for sharing routable road network files designed to be used in multi-modal static and dynamic transportation planning and operations models. Volpe/FHWA partnership with Zephyr Foundation.

IXSI

interface for exchanging information between a travel information system and a sharing system (carshare, bikeshare).

MTLFS

Managed and Tolled Lanes Feed Specification: Proposal for a schema that comprise the Managed and Tolled Lanes Tolling Feed Specification (MTLFS) and defines the fields used in all of those files developed by Santa Clara Valley Transportation Authority.

MaaS API

A set of open documents and test suite that defines a MaaS-compatible API.

OMX: The Open Matrix data file format

A structured collection of two-dimensional array objects and associated metadata, for possible use in the transportation modeling industry.

OJP

Open Journey Planner.

OSDM

Open Sales and Distribution Model: Aims to substantially simplify the booking process for customers of rail trips and to lower complexity and distribution costs for distributors and railway carriers. Contains a specification of an offline model and on-line API. Maintained by the International Union of Railways (UIC).

shared-row

A specification for right-of-way (ROW) for a SharedStreets Reference.

TIDES

Transit ITS Data Exchange Specification (TIDES) is a proposed effort to create standard data structures, APIs, and data management tools for historical transit ITS data including AVL, APC and AFC Data.

Prism

Prism is a tool to extract public transport data from OpenStreetMap.

Open Street Map Public Transport Parser

Open Street Map Public Transport Parser

Using Data

code-cushman-001

Much faster than the code-davinci-002 model, can perform simple tasks like code completion and generation.

TNExT

Transit Network Explorer Tool (TNExT) is a web-based software tool developed for the visualization, analysis, and reporting of regional and statewide transit networks in the state of Oregon.

Next Train API

Serves any GTFS feed as a JSON API. Transit agencies and developers alike can deploy the open source code to their own Heroku server.

AC Transit RestroomFinder

Pinpoints the nearest authorized restroom for bus operator and field staff, using GPS and on-screen map.

AC Transit Training and Education Department (TED) application

This application supports the District's training operations for transportation and maintenance employees, primarily in the positions of Bus Operators and Heavy Duty Coach Mechanics (Apprentice and Journey), although the system supports new courses and apprenticeship programs.

AC Transit Customer Relations application (CusRel)

Public transit ticketing system for customer issues and feedback with: inter-departmental routing with notifications, department/person assigments, simple workflow, ticket searching, pre-canned reports, daily reminders and more.

TransAM

An open-source asset management platform for public transportation agencies.

RidePilot

An open-source Computer Aided Scheduling and Dispatch (CASD) software system to meet the needs of small scale human service transportation agencies.

Route Trends

An R Shiny app to ingest ridership time series, and return seasonal, trend, and residual components according to STL methodology and forecasts including uncertainty based on those components. Sponsored by Metro Transit (Minneapolis-St. Paul).

Web Apps (open source)

OpenTripPlanner Client GWT

A Google Web Toolkit-based web interface for OpenTripPlanner

OpenTripPlanner.js

A Javascript-based client for OpenTripPlanner (no longer under development)

OTP-UI React Component Library

React Javascript component library, which can be used to build trip planner webapps. See the Storybook for a demo.

GTFS-realtime Alerts Producer Web Application

A Java-based web application for producing GTFS-realtime Service Alerts.

HRT BUS Web app

HRT Bus API publishes real time bus data from Hampton Roads Transit through an application programming interface for developers to make apps from it.

Transit-Map

Web app that animates vehicles (markers) on a map using the public transport timetables to interpolate their positions along the routes (polylines).

Transitive.js

Creates a customizable web map layer of transit routes using Leaflet or D3.

Google I/O Transport Tracker

Shows shuttle arrival times for Google I/O conference, based on the open-source transport-tracker project. Note: To implement this yourself, you need a Google Maps APIs Premium Plan license.

1-Click

A virtual “trip aggregator” that assembles information on a wide variety of available modes: public transit, private, rail, rideshare, carpool, volunteer, paratransit, and walking and biking.

Bustime

Public transport real-time monitoring with WebSocket updates. Open-source on GitHub.

MBTA tile-server

Scripts to create a Docker container that encapsulates all the elements necessary to develop map tiles for use on MBTA.com

Cadê Meu Busão

Realtime tracking transit buses from Belo Horizonte, Brazil. Open-source on GitHub.

MBTA tile-server

Scripts to create a Docker container that encapsulates all the elements necessary to develop map tiles for use on MBTA.com

Native Apps (open source)

Tiramisu Transit

An adaptive mobile transit app that shows real-time bus arrival information developed and deployed by Carnegie Mellon University. Written using Ionic framework. No longer maintained.

KDE Itinerary

App (Desktop and Android) for planning trips. It can find public transport routes, store them offline, add events to your trips, see the floor plan of train stations, and much more. Souce Code, GitHub

MACS Transit Android App

A bus tracker app for Android devices for the MACS Transit system in Fairbanks, Alaska. Uses RouteMatch APIs.

Next Train - Connecticut

A React-native mobile app for searching train schedules published by the Shore Line East transit agency in Connecticut. Relies on a deployment of the Next Train API.

Offi Directions

An Android app that provides trip planning, schedules, live departure times, and disruption information for transport authorities in Europe and beyond.

OneBusAway Apps - [Fire Phone]

(source code)

OneBusAway Apps - [iOS]

(source code)

OneBusAway Apps - [Windows Phone]

(source code)

OneBusAway Apps - [Alexa skill]

(source code)

OpenTripPlanner Android

An Android app for OpenTripPlanner

OpenTripPlanner iOS

An iOS app for OpenTripPlanner

opentripplanner-client-library

A Kotlin Multiplatform library for making API requests and parsing responses from an OpenTripPlanner v2 server for trip plans, bike rental info, and server metadata for Android, iOS, and web.

Transportr

An Android app that uses public-transport-enabler in order to connect to many different transport networks worldwide.

Trufi App

A cross-platform Flutter app that uses OpenTripPlanner

Visualizations

All Transit

Interactive GTFS route and schedule animation (for U.S. cities) using Mapbox GL JS, Deck.gl and Transitland. Github repository here.

fastest-bus-analysis-in-the-west

A python Pandas script that combines Ridership/APC, Swiftly speed and dwell data, bus stop inventory, GTFS, and geospatial shapes to create a stop by stop, route by route, time grouping filterable dataset for cross-analyses. The dataset is then visualized in Tableau to help VTA Planners find places to make bus and rail network faster and more reliable through speedups methods like stop consolidation and dedicated lanes.

gtfspy-webviz

Web application for animation and visualization of GTFS data using gtfspy.

gtfs-visualizations

Open-source NodeJS application for visualizing the routes of GTFS datasets.

Mapnificent

Shows areas you can reach with public transport in a given time. Open-source on GitHub, live at https://www.mapnificent.net/.

Simple Transit Map

An online example of how to host and update a webmap.

Simple Transit Site

An online example of how to create a transit website all from your gtfs on Github

Toronto Transit Explorer

A Java application that visualizes transit, biking and walking accessibility across the city of Toronto. Uses a modified version of R5 for routing.

Transit Vis

A visualization tool to display performance metrics derived from the King County Metro GTFS-RT feed (OneBusAway API). Viewable here. Used for this paper.

TransitFlow

Animate GTFS data around the world using Processing and Transitland.

GTFS Viz

A web app that visualizes GTFS Data on the browser at scale without a backend on the client side using duckdb-wasm .