Real-time public transport monitor for Berlin
The project is built out of curiosity to visualize realtime public transportation system in a densely-populated urban area. With the ever-increasing pace of urbanization globally, extended versions of similar applications can contribute to improving urban transportation systems, especially taking into account problems of energy supply, logistics and environmental concerns.
Possible application extensions can include:
The goal of the project is to track, map and display all public transport units operating at the current time in Berlin, Germany. The project uses data from the API provided by the Transportation Union of Berlin and Brandedburg (Verkehrsverbund Berlin-Brandenburg, VBB) and HAFAS (company website, about HAFAS in Wikipedia) to track realtime geographic locations of all types of public transport vehicles at a given part of the map. The documentation to the API used in this project is written by Jannis Redmann (aka derhuerst).
The transport units include:
According to the documentation written by Jannis Redmann, the API allows a user to send up to 100 requests per minute. This works nominally, but in practice the VBB's server sends real updates approximately every 8-12 seconds, therefore vehicle positions will update every 8-12 seconds.
After the application is launched, a window with map should be displayed, where vehicles are displayed. The vehicles' positions should update approx. every 8-12 seconds, whereas HTTP requests should be send every 3-5 seconds. The VBB server allows sending up to 100 HTTP requests per minute, but the real data on the server renews every 8-12 seconds only, hence the long update time.
After installing project dependencies, please proceed to build:
mkdir build && cd build
cmake ..
(should you have hard times linking the OpenSSL library, please tell cmake where OpenSSL files are located on your machine. Make sure to do it prior to calling cmake ..
. Example for Mac: export OPENSSL_ROOT_DIR=/usr/local/Cellar/[email protected]/1.1.1g/
and export OPENSSL_INCLUDE_DIR=/usr/local/Cellar/[email protected]/1.1.1g/include/
)make
./BerlinTransport