A mobile web application and SMS interface demonstrating "multi-modal" trip planning for the city of New Orleans, allowing a user to get directions through the city while "on the go" using any combination of walking, bicycling, and public transit. Most mapping providers (i.e. Google, Bing Maps, Mapquest) can provide directions of this form, but they are typically limited to a single mode of travel. This application is specifically designed to address the need of bicyclists who might like to incorporate public transit into their daily travels, while simultaneously demonstrating the power of open data sources. Realizing that many people do not necessarily have access to a mobile phone with a web browser, we provide an alternate interface for directions via SMS text message.
This code was written for the Good Idea For New Orleans project, in partnership with BikeEasy and Transport For Nola with the aim of making "making bike transportation easier and safer". It leans heavily on open source software and open data.
The webapp is available at:
http://bikebusnola.com/
It provides a mobile-centric interface for trip planning. It's primary goal is speed, ease-of-use, and broad device support. The webapp uses Google's static maps for displaying locations, with external links to fully interactive maps.
A user can ask for directions via text message by texting (504) 322-4900
. An example of possible text message commands are
4600 Freret to Superdome
directions from 4600 Freret to Superdome by bike
bus directions from 4600 Freret to Superdome
4600 Freret to Superdome by bike bus depart at 3:40
Texting HELP
to the service provides some brief instructions.
A web interface to SMS, which allows you to emulate the sending and receiving of text messages without actually using a phone, is available at:
http://bikebusnola.com/sms-test
bikebus is written in Python and uses the web.py framework. The webapp acts as a front-end to a server running the OpenTripPlanner software, which provides routing and direction services. The app queries OpenTripPlanner through the REST API and formats the response in a web or text friendly format.
Place names must be geocoded to geographic coordinates in latitude,longitude form before being passed into OpenTripPlanner. Currently, the project uses the Google geocoder, but any other geocoder can easily be swapped in. See geocoder.py for more details
Text messaging is provided via Twilio
OpenTripPlanner software uses street data from OpenStreetMap. Transit data is supplied in GTFS format by the New Orleans RTA
A requirements.txt
file lists all of the required dependencies for running the webapp. Virtualenv is recommended.
TODO: wsgi/apache conf instructions here
This code is in the public domain. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.
Contributions of any form are welcome.
Joel Carranza - [email protected]