Gopher Rodeo

Woolymap

Context

The Woolwich Ferry is a free ferry boat service operated by Transport for London, and the eastern-most Thames river crossing in London. The ferry is advertised as operating a regular service every day of the week, although this isn't always the case. The Woolwich Ferry takes cars, lorries, motorbikes and pedestrians.

The Woolwich Ferry is part of TfL and so has "departure boards" and service information on the TfL website. However these do not reflect the frequency, timetable or status of the service in reality. For instance if there is a two-boat service then a ferry can be expected to depart every 15 minutes, but if there is a one-boat service then a ferry can be expected every 30 minutes. Also more recently the service just hasn't run over the weekend at all.

To try to correct this situation I resolved to create an app of some sort to show recent and predicted departures, as well try to create integrations that audit departures and arrivals and then use these to better predict the actual service expected on a particular day.

Web App

For this early part I started looking into AIS tracking websites, to track the Woolwich Ferry boats. As there were no free APIs available I decided to just scrape websites instead. This gave me some rudimentary departure and arrival information, which I was able to capture into a departure board.

I was then able to use averages to predict when the next departure from a particular port might be. Finally I created tables for this, and also integrated TfL Jam Cams to provide a view to what the queues at the Woolwich Ferry look like right now. I created a website called Woolymap to display all this information.

You can find it at the link below.

Woolymap

Journey Audits

I wanted to try to create APIs and integrations that could provide a simple audit of all of the arrivals and departures for each day. To do this I used IBM Cloud, as it has free cloud functions and object storage. I created functions that run on a schedule and create object storage files that store departures and arrivals as JSON.

Unfortunately these audits stopped working in April 2022, as IBM Cloud Functions were deprecated in favour of IBM Cloud Code Engine. In order for these to continue I need to migrate the existing functions to Code Engine.

AIS Tracking

I realised that I lived close enough to the Woolwich Ferry to actually track the raw AIS signals themselves, without using an intermediary. I got a Raspberry Pi and an AIS hat, along with an antenna. I could pick up AIS signals with it but unfortunately the data was not particularly reliable. One of the boats didn't send a direction at all, sometimes the signal would say that the boat was underway, when it had actually stopped. I had to build some logic to figure out if the boat was docked or not. I ended up leaving this disconnected for a long time but while it was running it would happily track and plot each boat. I should have kept this running for longer, to capture more data.