tl;dr I created Maxspeed freshness tool where you can see if maxspeed tag exists, and if it does – how old it is!


Why this tool

This tool emerged from a need within the local community. In Serbia, we have more street-level cameras and volunteers capturing road data than ever before! We even have people actively editing data based on those captures (which are not necessarily same people😀). Good problems to have! The big question is: Where should we capture images next?

We needed a comprehensive view of highways missing maxspeed tags so that people could go there. Additionally, we noticed some major motorways had outdated information—some maxspeed tags hadn’t been updated in over a decade. Everything gets old, even maxspeed tags.

I created first version of this tool (for Serbia only) and response was really good. This map revealed stuff that would not be otherwise visible and gave us great insight in quality of data on local roads! We discussed styling of the map, and how to do filtering better. I got lot of good input and after some iterations, we settled on final design. I wanted to see if this can be useful to other people, so here we are – with a map of whole world.

Barcelona – almost perfect. Reality start creeping in only after leaving city gates

How Useful Is It?

At this point, I’m not entirely sure how people will use this tool—whether as a QA tool or for route planning. What I do know is that updating the map is time-consuming and could potentially cost me money (although I doubt it’ll turn into the next Facebook! 😄).

I would like to collect feedback from people who find this useful – why was it useful for you, how you plan to use it, how often you need refresh, what I need to change/improve… Please reach out if you would like this tool to live on.

Further ideas

I really, really don’t know how to do web development. This web site is horrendous, it doesn’t work on mobile, for start. I would like to add more details (“about” section with some background…). I would like to have better legend (as soon as I figure out how to align stuff in HTML… which will probably be never😄). I would like to better point out to users that this is not about values of maxspeed, but their freshness…

It would be good if you can click on highway and it give you OSM link to it, as well as current value.

One thing I am really pissed of is that tippecanoe cannot drop features by ordering of some attribute. To explain what I need – at lower zooms, there is lot of features to show and tippecanoe need to drop some of them. Tippecanoe can drop features by geometry, but not by ordering. I want to display motorways first, then trunks, and so on, and if there is space left in tile – to include other roads. I could exclude residential highways on zooms 0-5 (and join later with tile-join, it is possible), but if there is part of world where there would be a space to include them in tile, well – you are out of luck. And I didn’t want to give users impression that only major roads are on map when they first open map. On the other hand, tiles right now are filled with random highways, so there are visible gaps in major highways which really annoys me. If anyone has a solution, I’m all ears😄!

People were suggesting integration with Mapillary to conflate where captures are present and where Mapillary detected maxspeed signs, but I think this is going too much for time I can dedicate to this😀 (although I agree it would be interesting).

Home of latest SotM – Nairobi. Heaven for people with GoPro MAX😄

Implementation details

The entire codebase is available on GitLab. It’s automated but takes a long time to process—generating a 20GB .mbtiles file for the whole world takes 2-3 days on my (not-so-cheap) machine! For the website, I’m using MapTiler as a basemap because I wanted a clean, neutral look instead of the usual OpenStreetMap.org style (and because I didn’t want to be another person pointing to openstreetmap.org tile servers).

On the technical side, this project taught me a lot about processing massive datasets on a single machine (300GB!). My most exciting discovery was LMDB, a database that helped optimize performance.