Skip to content

Google Summer of Code 2017

Sean Barbeau edited this page May 10, 2017 · 42 revisions

Integration of Bikeshare Information into an Open-source Transportation App

The General Transit Feed Specification (GTFS) has revolutionized multi-modal information and open transit data. Started as a simple way to represent fixed route transit systems by TriMet in Portland, Oregon and Google in 2005, GTFS data is now shared publicly by over 1,500 transit agencies worldwide, according to Transitland.

There are exciting new developments in the world of bike share that could potentially mirror the success of the GTFS data format. The General Bikeshare Feed Specification (GBFS) was launched by the North American Bikeshare Association (NABSA) in 2016 as a standardized way for apps to access information about the availability and location of rental bikes, as well as the capacity of racks where bikes can be returned.

However, unlike the launch of the GTFS format, there currently aren't any open-source tools or projects that demonstrate how GBFS data can be consumed and visualized in a mobile app.

This Google Summer of Code project will help accelerate the adoption and utilization of the GBFS format by implementing open-source tools to consume the data format and visualize it in an existing open-source transportation app. We plan to use OpenTripPlanner to consume a GBFS feed, and then share that data with the OneBusAway open-source apps - a sample architecture diagram for this is below (source Google Drawing):

image

Tasks:

  1. Integrate GBFS data in OpenTripPlanner - This task will add support to consume GBFS data in the OpenTripPlanner project and make it available via the OpenTripPlanner REST API. This step is important as it allows mobile apps to request bikes and hubs in a particular geographic region (vs. all bikes in a city, which is supplied by GBFS). The team will also need to coordinate with the team that TriMet is leading for their Mobility On Demand Sandbox project, as the integration of GBFS into OTP is also part of their roadmap. David Emory from Conveyal has implemented GBFS support as part of the TriMet project in this branch. The Center for Urban Transportation Research at USF did some existing preliminary work on GBFS. However, at this point the above Conveyal branch should take priority.
    • Set up OpenTripPlanner GBFS branch with two different systems from the GBFS directory. We should choose one floating bike-based rental system (I'd suggest USF Share-A-Bull in Tampa, FL) as well as a rack-based bike rental system (I'd suggest BIKETOWN in Portland, OR).
    • Review existing real-time configuration documentation for OTP. Create step-by-step documentation for setting up and configuring a GBFS system with OpenTripPlanner, building on the existing documentation.
    • Determine if an API call to get bikes without a particular bounding box (geographic "square") is supported (I don't believe it is). We'll need this for OBA app, so if it doesn't exist implement it.
  2. Visualize bikeshare data in the OneBusAway mobile app - The OneBusAway Android open-source app already has basic support for trip planning via an OpenTripPlanner server. This project would integrate bikeshare data by pulling the data from OpenTripPlanner and displaying on the map in the app. Currently only transit trip plans are supported in OneBusAway - this project would also extend trip planning support to include bike/bikeshare.

Resources

Expected skillset for a student working on this project includes:

  • Java (Android is preferred)
  • Maven
  • Git (and preferably Github)

Expected completed coursework includes typical introductory Computer Science classes, for example:

  • Data structures
  • Object-oriented programming
  • Introduction to algorithms

Mentors for this project are:

Questions about this project should be directed to the onebusaway-developers group or the OneBusAway Slack Group (and specifically the #gsoc-2017 channel). Questions specific to OpenTripPlanner are best directed to the OpenTripPlanner Developers Group.