During the event of the World Port Days the Port of Rotterdam organized their first hackathon. The goal was to create an application using recently opened datasets from the port: data about the position of ships and geo-information about the port. Our team built the Maelstrom app, which visualizes the risk of congestion on the water.
The event started on Saturday the 7th of September in a building of the Hogeschool van Rotterdam. After a few introductory talks about the Port of Rotterdam, their goals and the content of the data sets provided, we were off to start with the hacking. We soon decided to make an application focused on the positions of the ships.
Congestion risk prediction
We figured that the positions of the ships at the current moment in time is interesting, but not really new. We searched for an application which enables all actors involved, such as the port authority and the captains of vessels and barges themselves, to be informed and react to the situation. This should be very valuable to the industry, since delays and extra fuel consumption cost a lot of money, simply stated. So, it is worthwhile to know what is happening in the port at the moment of estimated arrival of a ship, in order to react to and control that situation. Since one of the data properties made available is the Estimated Time of Arrival (ETA) of the ships at the specific berth (“docking location”), this seemed as a natural starting point for our application.
Using these ETA’s, which are calculated real-time and continuously updated by the port authority and are thus very reliable information, you can predict the situation in the port for the next 48 hours. This means you can not only see the current situation in the port, already real-time, but also the situation in the future. The precise location of each ship, docked at a specific berth and properties of that ship can be used to calculate and aggregate the overall activity for the port. When zoomed in on a location, one could obtain a value indicating the risk of congestion: a situation with many large and heavy ships in a small area with complicated movements is easy subject to congestion and delays. The risk on that congestion is what we wanted to visualize.
Bird-eye: Where will there be problems?
Our first goal was to visualize the overall “bird-eye view” situation of the port. We chose to use a Google Maps view, combined with a heatmap layer. This allows use to create a fuzzy indication of activity for a specific window of time, as the image below shows.
The dark red spots indicate a high amount of activity at the spot and thus represent areas of high risk for congestion or delays. Activities which involve larger and heavier ships have a higher factor, since these are (probably) harder to maneuver through the port.
Local: Is there room for a ship?
Besides the overall bird-eye view, we also wanted to visualize the precise activities of each berth, or docking location. To do so, one can enable the drawing of the berths on top of the heatmap. Berths with an activity in the current selected time frame are red and the ones with no activity are gray. Selecting one of these markers fills a view with the timeline of that berth (using the Vis.js library). This allows specific search for activity in the port.
An extension we would like to implement is a visual combination of local activities relative to the selected berth. That could be realised by a heatmap-like graph as a background for the timeline.
A small video demo of the current Maelstrom app is stated below, which shows all the functionality currently provided, which are explained by small annotations.
So, with these two visualization in place, we can look at the whole picture of Maelstrom.
Practical application in the port
Right now, the coordination of all ship movements is handled by the controllers of the port authority. While they do an excellent job at keeping the port safe, this centralized approach does sometimes lead to congestion and delayed ships. Such delays result in economic damage (fewer ships handled at a terminal) as well as environmental damage (higher fuel consumption of very large ships), affecting many of the stakeholders in the port. Maelstrom is intended for exactly these stakeholders: using our visualization, they can pro-actively adjust their plans and schedules to the predicted movements, thus reducing congestion.
On a more conceptual level, we can see that the simple fact of sharing and visualizing data shifts the responsibility of the commonly available waterways from the centralized port authority to the actual stakeholders. By accomplishing this shift, the port authority does not have to micromanage all ship movements to prevent congestion any longer, but can instead focus on their most important task: ensuring safety.
By combining the real-time data with reliable prediction for the (near) future, this powerful system can support all the services and actors of the port. When the prediction is used as an input for a scheduling mechanism, the real-time data can be used to control and adjust the planning in the port. Captains of ships can anticipate, controllers can influence the risk of congestion in the port and satellite service providers can adjust their capacity on the actual and predict demand.
At the end of the day we were able to present a working demo of our application to the jury, from the Maelstrom website. We were rewarded with the first price for “Application with the largest impact” and are very proud of the result (and reward), as you can see on this picture, taken right after the ceremony.
The Maelstrom Congestion Risk Predictor can be immediately deployed, virtually without modification, enabling ships to gain early insight in the activity and bottlenecks in the port. With that the app deserved the price for the largest and most direct impact.
We would like to says thanks to the Port of Rotterdam for organizing this event and providing the data sets to the community to help with the opportunities of further development of the port. We are keen to further investigate applications with the data the port has available.
We invite everybody to check out the result and play with the controls. Currently the data is a static set, but we hope to be able to use actual real-time data. Of course, in the spirit of Open Data, is the source available in the Maelstrom Github repository, although a small warning about the quality of code as a result of speedy hacking should be in place. Please leave a comment with your thoughts and ideas, as we really like to have feedback on this project.