Dynamic visualization of mobile coverage over driving routes
Recently, we have started a fun side project in Vimento. We have built a system to visualize the mobile coverage over a driving routes, based on the classic coverage predictions maps that operators often work with.
The goal of the project was for a user to be able to select two addresses, calculate the route between them and extract mobile coverage data along the path. All of this done “on the fly”.
If this were done with the tools that we had years back, we would probably need to put some efforts in setting up an address and road network database for the whole country, build a route calculation algorithm, and develop trigonometry-based functions to correlate coverage maps with routes (combinations of lines in a sequence).
Luckily for us, we can now enjoy the benefits of publicly available data APIs to solve the task. And in combination with the magic spatial databases, the job can be executed in milliseconds.
Therefore, the ingredients for today’s recipe are:
- Danish address registry API, (publicly available): Used to find and select addresses and their location. It provides also a very easy integration of their own autocomplete functionality. Works brilliantly!
- Krak.dk API, (publicly available): Used to find a route between the two addresses. The functionality to retrieve a route from Krak.dk has many interesting options. In this case, it is especially useful to fetch the route decomposed into the minimum possible granularity (single LINES) to be further processed as spatial objects.
- Mobile coverage prediction maps, for example from Atoll (a radio access network simulation tool): This is probably the trickiest part, to convert coverage maps into a spatial data. This can be done with image processing algorithms and a bit of database programing. PHP or Python combined with PostgreSQL are great for this job.
- User friendly front-end: Simple GUI where the user can select the address, the resulting route is visualized (colored after the mobile coverage) and any other relevant statistics are display in the form charts.
We have decided to build a use case based on the expected throughput for the users, but the same concept can be extended to analyze signal strength or cell handovers.
Additionally, the Krak.dk API allows the possibility of working with multipoint routes without major complications.
Will do you do other countries by order? I have a few suggestions :D