map styles: Default OSM vs Google Maps
Posted by Mateusz Konieczny on 9 May 2015 in English (English). Last updated on 17 July 2018.Currently I am working on a GSoC project - improvement of styling of roads and paths in openstreetmap-carto, the default OSM map style.
I started from researching how other map styles are designed. I would welcome comments and feedback as it would allow to notice my biases. Feedback on general ideas will hopefully reduce amount of time needed to rework and tweak style that I will produce.
The first compared map style is probably the most popular one, used by Google maps.
At high zoom levels any OSM map is typically better than Google Maps as a result of more detailed and rich data. Quality of Google Maps is also decreased because one of its primary roles is to be used as a place to advertise businesses - what results in businesses appearing earlier than reasonable and leaving no place for more useful information.
But as one zooms out the situation is typically changing, with OSM rapidly losing - and the worst situation is in the cities, with roads as a major source of a problem.
For example, lets try with London.
First problems are noticeable at z16 - openstreetmap-carto has more information but is also less readable. The first road-related issue is that some oneway roads are without arrows (names are displayed instead making it one of many tradeoffs - not everything may be displayed).
z15 has much bigger problems for OSM - hierarchy of road importance is clearly more readable in Google maps. It is an effect of lower amount of displayed data and no using as many colours as possible in gmaps. openstreetmap-carto is using for displaying roads blue, green, orange, red, yellow and white. Google restricted palette to white, yellow and orange - what gives much better results.
The situation gets continually worse for OSM on zooming out to z14, z13, z12. Nearly all roads continue to be displayed on both maps, but in Google roads of lower importance are nearly invisible, the Default OSM map is much messier. In addition on z12 green trunk roads are merging with parks making the map even less readable.
On z11 Google drops minor roads completely, in OSM are still displayed but no useful information is presented - it results only in a messier map.
On z10 Google Maps also have a problem with high road density in London - but road network as presented by openstreetmap-carto is even worse and completely unreadable beyond “there are many roads in London”. M4 looks like a continuation of Thames. Rural areas are not much better (trunk roads through forests etc).
Further zooming out is not improving the situation for OSM.
First thought is that using blue, green, red etc for roads may work for maps that limits itself to displaying roads, towns and cities - but it is not going to work for a map that is trying to show nearly everything.
Maybe attempting to make highway=primary and secondary, higway=residential and living_street, highway=track and highway=service clearly different is not really necessary? Maybe displaying both using the same style may work better and reduce clutter?
It would be nice to not display roads of lower importance in cities on lower zoom level, but doing it in other areas. Maybe it would be doable by something like making landuse=residential and minor roads the same colour in lower zoom levels? It seems to work in Google maps.
It may seem easy to solve other mentioned problems by starting to render roads of each class later than it is done currently but it is not so simple.
Let’s try another location - in a rural area in UK with much lower road density.
Here a combination of facts that somebody mapped this area in OSM, lack of data in Google maps and low feature density makes OSM a clear winner for z14 and higher. Lower zoom levels are problematic for OSM map. Road network continues to be less and less readable in OSM since z13, famous “green trunk through green area” problem is making it even worse.
Note that rendering roads later what would improve rendering in London means harm for map in low density areas like this one. It would be much better to solve situation differently.
One of limitations is that the same feature in one place may be completely unimportant and critically important in another. For example - one of thousands unimportant highway=footway through a park in a massive city or highway=footway in a remote area of high mountains, the most important feature within several kilometers. Both will be rendered using exactly the same style. Therefore most tweaking of style will improve some locations but make it worse in others, it is completely impossible to make it perfect everywhere. The obvious solution - render features differently in low density areas is really hard to do properly and doing this is not planned as part of this GSoC project.
It may be possible to try different things - minor roads at low zoom levels with the same colour as landuse=residential? Displaying narrower roads? But some tradeoffs will be necessary.
Comment from naoliv on 9 May 2015 at 21:38
I (and some friends) usually prefer the Humanitarian style: it looks less polluted and more pleasing to see.
Comment from ppawel on 9 May 2015 at 21:41
Default OSM map style sucks so much visually that if you manage to improve anything then your project will be a success.
BTW, do you plan to address low zoom levels as well? For me country and continent zoom levels are the worst. Look at this for example:
http://www.openstreetmap.org/#map=7/51.995/19.210
Why is Polish capital city name not rendered?!
And this:
http://www.openstreetmap.org/#map=5/51.958/19.226
You are now looking at the whole Europe and it displays the names of provinces - this is completely crazy and embarrasing if you show OSM to someone new…
Comment from seav on 9 May 2015 at 22:09
The question is, what is the purpose of the default map style? From what I understand, this style is the mapper’s style and is meant to show at a glance whether an area is already well-mapped or not. And at higher zoom levels, it tries to show POIs and other smaller details so that we can see if there are missing or outdated features. As such, it intentionally shows a huge amount of detail at various zoom levels.
Comparing this style with Google Maps might not be such a good idea. We can probably look to it as an inspiration for certain design decisions, but that’s it.
Comment from imagico on 9 May 2015 at 22:10
The biggest difference in road rendering between Google and OSM standard style to me seems to be that at z13/14 Google uses thin plain lines for all but the largest roads while the OSM style draws them with casing. Apart from that the road rendering in Google is generally more subtle. This is not necessarily a good thing - i am in general a proponent of rendering things clearly visible or not at all. But the dark gray at low zooms and the bright white at high zooms for the lower importance roads in the OSM style is of course quite extreme.
Also Google in general draws roads thinner than the OSM standard style (except for the highest zoom levels where OSM draws them thinner than reality). This helps them avoid things like
http://tools.geofabrik.de/mc/#14/4.6211/-74.1845&num=2&mt0=mapnik&mt1=google-map
although a better approach might be making the drawing width depend on local map scale rather than zoom level. This might be something you could try - AFAIK this would also be a first for any web map.
Comment from jremillard on 9 May 2015 at 22:46
Change the style based on highway= node density for the current tile.
Comment from Alan Trick on 9 May 2015 at 23:30
For what it’s worth, except for the terrible tree coloured highways, openstreetmap-carto is great for mountainous areas, for example: http://tools.geofabrik.de/mc/#14/48.7743/-121.8236&num=2&mt0=mapnik&mt1=google-map
I think data-density shouldn’t be a great problem for roads if you just make the smaller ones less visible, since in cities, most of the roads tend to be residential/service roads, where as in a rural area most of the roads have a more significant classification.
Unfortunately, the above breaks down for non-motorized “highways”. There is currently no good way to designate if a highway=path is a major-trail/walkway, or if it just a small off-shoot.
Comment from pmailkeey on 10 May 2015 at 00:30
I think OSM offering different styles (standard, Humanitarian, Transport, Cycle) is a bad idea. I think the Standard map should be all OSM naturally offers. It doesn’t stop others doing their own thing.
I think the standard map should show everything - as otherwise what’s the point of putting something in the database if it’s not going to show on the map ?
I think the standard map should show checkboxes - to be unchecked - grouped as per the tag categories so users can deselect items they don’t want to see on the map. OSM could offer preset checkbox selections for cycle, humanitarian, transport etc.
Comment from pmailkeey on 10 May 2015 at 00:48
There appears to be a residential area darkening going from z13 to z12 such that roads and surrounding areas are very similar in shade but different colour - so the roads don’t stand out as much. Could this be the problem ? Removing residential detail - or lightening it may make the roads clearer - and this would only apply in built-up areas - so affecting them without affecting more rural areas that don’t have much of a problem now.
Comment from Alan Trick on 10 May 2015 at 02:25
Well you can still find it when searching for it.
I think the main concern though is not “Whether we should show all the data” but “At what zoom level should we start showing data and how prominent should it be”?
Comment from Warin61 on 10 May 2015 at 05:38
The reverse problem arises in places with less population/motorways …
Look at the continents of Africa and Australia .. you don’t see much zoomed out. For those places rendering highways of less significance would be beneficial when zoomed out.
When zoomed in there is little point in rendering the major city name … it just clutters the screen.
The rendering at various zoom levels should take into account the density that results on the screen .. too much is bad .. too little is bad too. The rendering ‘rules’ need to adjust for the resultant density … not a ‘rule’ that is fixed for the world. A single fixed rule may work for one country .. or several if they have similar population densities and infrastructure, but that will not work well world wide.
Comment from DaCor on 10 May 2015 at 05:50
The mapstyle becomes almost unreadable when you look at areas with smaller buildings and higher densities e.g. http://tools.geofabrik.de/mc/#15/-29.3249/27.5103&num=2&mt0=mapnik&mt1=google-map
As ppawel stated, anything you do to improve the situation will be considered a success.
A poor main mapstyle reflects poorly on the project as a whole and I welcome your involvement to implement improvements.
Comment from Mateusz Konieczny on 10 May 2015 at 06:50
Can you link a well mapped area with such low feature density? It would be really useful.
Thanks for a link! I had example of this problem but not so extreme. Added to list of locations for tests.
It is hard to compare map styles here as Google Map style has nearly no data to display. Also added to list of locations for tests.
That would interesting, but it may result in not-so good display on border between one width and another. I will add it to “list of wanted things that would be nice” - https://wiki.openstreetmap.org/w/index.php?title=Google_Summer_of_Code/2015/AcceptedProjects/Road_style_in_Default_OSM_map_style&diff=1175116&oldid=1174627
Hopefully this will work (it worked in Google maps but they have a different dataset, with closer amount of roads marked as trunk/primary importance for country. In OSM differences are more significant - compare UK and central or eastern Europe. The same may be true also for roads of lower importance)
Comparison with this map style is also planned.
Yeah, and importace of footway is not something that would be easy to tag (smoothness is nearly too subjective to tag it). Minor footway may be a route of important trail/cycleway/etc route. But unfortunately route relations are not working as a reliable hint for importance.
My current project is limited to roads. But as minimum, during GSoC I must figure out how to test low zoom levels (hopefully downloading planet data and filtering it using osmfilter to display only used objects will work). I want to improve it - despite recent improvements it is still really bad (note that simply displaying subnational entities later would make map worse in for example USA where label for states should appear early).
See https://github.com/gravitystorm/openstreetmap-carto/blob/master/CARTOGRAPHY.md
That is the exactly what I am doing.
Within last versions there were some nice improvements - especially “rendering country/state labels” and “French-style tree rendering” by math1985 and lighter buildings colour by Paul Norman. For me also rendering parking and gate icons later and with lower priority was important but it was important only in heavily mapped areas. But yes, there are still many things that may be improved.
Not planned as part of this GSoC project, it would be a really complex project beyond improving a map style.
landuse=residential is displayed in the same colour, it is most likely optical illusion relating to change how minor roads are rendered
As mentioned: obvious solution - render features differently in low density areas is really hard and doing this is not planned as part of this GSoC project.
And obvious, simple solutions like that one have drawbacks worse than current “single style for everything”.
Comment from _sev on 10 May 2015 at 09:33
Mapsurfer maps are very good looking: http://openstreetmap.ru/#map=10/51.4626/-0.0584&layer=SU
Comment from M!dgard on 10 May 2015 at 13:31
This may also be an interesting area: http://tools.geofabrik.de/mc/#13/51.2942/3.1183&num=2&mt0=mapnik&mt1=google-map Google Maps doesn’t do a great job here either: it’s not clear what’s water and what’s road, although I see they have improved it a bit since last year.
Comment from joost schouppe on 12 May 2015 at 10:20
One of the major shortcomings of the standard style (and any online maps I’ve seen), is the lack of surface visualization.
See the thread here: https://github.com/gravitystorm/openstreetmap-carto/issues/110
This is hugely important in all countries except those where most of our contributors live :) Important roads might be unpaved, increasing travel times enormously. When planning long distance trips, this is about the first question you will ask the map: what roads are available, and are they paved.
Argentina is a good case, as all important roads are mapped as either trunk or primary, without concern for road quality. And almost all roads there have the surface tag. In countries like Peru and Bolivia, this is even more important information, but data is much less complete.
Comment from Mateusz Konieczny on 12 May 2015 at 13:16
Than I have a god information for you - GSoC project mentioned in the first paragraph includes displaying surface tags for roads in Default map style.
Comment from Marcos Dione on 15 May 2015 at 10:01
Another thing that makes the style somewhat unreadable on terms of roads is the pastel colors used to draw them. That’s why trunks get confused with parks and motorways with rivers, and that’s what lead me to do my own style and rendering: trying to use the standard tiles for navigation in my phone, in my car, in broad daylight, with sunglasses; or at night, was unfortunately bare useful.
Comment from drnoble on 18 May 2015 at 21:04
Having grown up in the UK, looking at Ordnance Survey maps, I much prefer the multiple colours used for the road hierarchy, rather than the orange/yellow used by Google (and many others). But I agree that having motorways blend into rivers and trunk roads blend into trees is a bit of an issue.
One other difference I note between Google and OSM Carto is that the road names are often bigger than the road line, which improves readability, rather than squeezing the text between the casing lines on OSM, arguably another reason to consider removing the casing on minor roads at lower zoom levels.
Comment from Peter Bremer on 19 May 2015 at 08:41
I have to agree with _sev, the OpenMapSurfer style is not getting the recognition it deserves. In my opinion this style solves many of the problems listed in this discussion:
London: http://129.206.74.245/?zoom=17&lat=51.49149&lon=-0.27424&layers=B00000FFFF - At Z16 more information than GM, but more readable than OSM - At Z15 most one-way arrows are still visible, while they are gone in both OSM and GM. I’d say clearer road hierarchy even than GM, though the residential roads could have been more dimmed. - At Z13-10 more chaotic than GM, but mostly because of all the road number labels.
Rural: http://129.206.74.245/?zoom=13&lat=53.2118&lon=-1.7971&layers=B00000FFFF At Z13, OpenMapSurver is again a clear winner over both OSM and GM.
High density residential roads: http://129.206.74.245/?zoom=14&lat=4.62854&lon=-74.18337&layers=B00000FFFF Clearly better than OSM, and personally I think a bit better than GM.
Mountain map: http://129.206.74.245/?zoom=15&lat=48.77591&lon=-121.81464&layers=B00000FFFF Here, OSM is a clear winner, though OMS comes close.
High building density: http://129.206.74.245/?zoom=15&lat=-29.32611&lon=27.51527&layers=B00000FFFF Bit better than OSM, GM is much better.
Roads vs canals: http://129.206.74.245/?zoom=13&lat=51.29423&lon=3.14257&layers=B00000FFFF OMS is better than either OSM or GM.
Not purely road-related, but from Z9 and down, OSM is really terrible, both aesthetically and practically, and I think OpenMapSurfer is better than even GM: http://129.206.74.245/?zoom=7&lat=51.70458&lon=20.03954&layers=B00000FFFF (of course the capital city is clearly identifiable) http://129.206.74.245/?zoom=5&lat=53.67525&lon=17.18309&layers=B00000FFFF (a bit too busy in some countries, but still gives a clear overview)
In my opinion, just inheriting the OpenMapSurfer style fixes 90% of the problems the default OpenStreetMap style is struggling with…
Comment from Miroslav Suchý on 1 June 2015 at 19:21
I really like rendering of http://beta.map1.eu
E.g. on zoom level 5 in Europe: In OSM render I have no idea where are the state borders. Or compare Paris on zoom 8: Can you differ higways, main routes, trains and rivers? Compare both cases to map1.eu. I think it beats in readability even Google maps, which is heavily focuses on roads (and e.g. rivers are hard to recognize).
Comment from redsteakraw on 24 July 2015 at 01:40
I was a bit skeptical before and didn’t want the highway(Motorway) colors to change but it does look better. I would love to bug test this style, are there any test servers?
Comment from Mateusz Konieczny on 24 July 2015 at 17:10
At this moment - no. There are still many things that are known to be unfinished, untested or not working. Test server is planned, but it is still too early.