OpenStreetMap

New road style for the Default map style - the full version

Posted by Mateusz Konieczny on 8 August 2015 in English. Last updated on 13 February 2019.

Next stages of developing new road style are finished.

First changes all already present on OSM website as result clutter on mid zoom levels is now reduced (#1682, #1690 and #1676).

This version is the first one tested also for low zoom levels.

At the start of this preview of the new style I want to thanks everybody who offered feedback. Obviously, not every suggestion was implemented - but many were highly useful and some are used. Thanks to everybody! Special thanks to Paul Norman for simplified osm2pgsql database dump that allowed to test low zoom levels.

For start - rendering for http://www.openstreetmap.org/#map=10/50.8302/4.4769 both in current and the new style (note - missing data that is causing poor rendering of railways in Antwerp is now fixed).

z11 50 8288 4 3684 z11 750px d396f750d41db78c227c62290f5dfeefbb91a730 750px 50 8288 4 3684 z11 750px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 750px

z10 50 8288 4 3684 z10 750px d396f750d41db78c227c62290f5dfeefbb91a730 750px 50 8288 4 3684 z10 750px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 750px

z9 50 8288 4 3684 z09 750px d396f750d41db78c227c62290f5dfeefbb91a730 750px 50 8288 4 3684 z09 750px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 750px

z8 50 8288 4 3684 z08 750px d396f750d41db78c227c62290f5dfeefbb91a730 750px 50 8288 4 3684 z08 750px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 750px

z7 50 8288 4 3684 z07 750px c6942c7a16fbd8f0048a8be8d7bf3703243b02e1 750px

z6 50 8288 4 3684 z06 300px d396f750d41db78c227c62290f5dfeefbb91a730 300px 50 8288 4 3684 z06 300px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 300px

z5 50 8288 4 3684 z06 300px d396f750d41db78c227c62290f5dfeefbb91a730 300px 50 8288 4 3684 z06 300px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 300px

Auckland

z5 -36 8487 174 76135 z05 300px d396f750d41db78c227c62290f5dfeefbb91a730 300px -36 8487 174 76135 z05 300px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 300px

z6 -36 8487 174 76135 z06 300px d396f750d41db78c227c62290f5dfeefbb91a730 300px -36 8487 174 76135 z06 300px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 300px

z7 -36 8487 174 76135 z07 300px d396f750d41db78c227c62290f5dfeefbb91a730 300px -36 8487 174 76135 z07 750px c6942c7a16fbd8f0048a8be8d7bf3703243b02e1 750px

z8

-36 8487 174 76135 z08 750px d396f750d41db78c227c62290f5dfeefbb91a730 750px -36 8487 174 76135 z08 750px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 750px

z9 -36 8487 174 76135 z09 750px d396f750d41db78c227c62290f5dfeefbb91a730 750px -36 8487 174 76135 z09 750px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 750px

z10 -36 8487 174 76135 z10 750px d396f750d41db78c227c62290f5dfeefbb91a730 750px -36 8487 174 76135 z10 750px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 750px

z11 -36 8487 174 76135 z11 750px d396f750d41db78c227c62290f5dfeefbb91a730 750px -36 8487 174 76135 z11 750px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 750px

And yes, these volcanoes are tagged correctly - see https://en.wikipedia.org/wiki/Auckland_volcanic_field

Malmo

Place mentioned in bug report #102 - “Secondary and trunk color too similar to landuse colors”

z5 malmo - fields 55 39276 13 2979 z05 300px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 300px

z6 malmo - fields 55 39276 13 2979 z06 300px d396f750d41db78c227c62290f5dfeefbb91a730 300px malmo - fields 55 39276 13 2979 z06 300px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 300px

z7 malmo - fields 55 39276 13 2979 z07 300px d396f750d41db78c227c62290f5dfeefbb91a730 300px malmo - fields 55 39276 13 2979 z07 750px c6942c7a16fbd8f0048a8be8d7bf3703243b02e1 750px

z8 malmo - fields 55 39276 13 2979 z08 750px d396f750d41db78c227c62290f5dfeefbb91a730 750px malmo - fields 55 39276 13 2979 z08 750px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 750px

z9 malmo - fields 55 39276 13 2979 z08 750px d396f750d41db78c227c62290f5dfeefbb91a730 750px malmo - fields 55 39276 13 2979 z09 750px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 750px

z10 malmo - fields 55 39276 13 2979 z10 750px d396f750d41db78c227c62290f5dfeefbb91a730 750px malmo - fields 55 39276 13 2979 z10 750px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 750px

z11 malmo - fields 55 39276 13 2979 z11 750px d396f750d41db78c227c62290f5dfeefbb91a730 750px malmo - fields 55 39276 13 2979 z11 750px 0eb62a8e825d0eeb622e072ac4830231bfa1f6e5 750px

Preview location from readme

preview pri7 -87 6515 41 8693 -87 615 41 8788

Current style:

Railways

One of the changes that I especially like are new railways - now less likely to be confused on low zoom levels with minor roads. The service tag is now used more for railways - minor tracks are rendered later (change already deployed on OSM website) and now main railways tracks are also more prominent. Tunnels for railway=rail also were changed to a version that is prettier and consistent with other railway tunnels.

Here are some additional examples with comparison how railway rendering may change.

london - railway tunnel 10 19 master - master 400px london - railway tunnel 10 19 new-road-style - new-road-style 400px

krakow - minor major railways 10 19 master - master 400px krakow - minor major railways 10 19 new-road-style - new-road-style 400px

highway=pedestrian, highway=living_street

I have a problem with colors for these road types. It is desirable to keep these distinguishable, using white colour and differentiating by width is not feasible.

Current colors are quite confusing - OK, highway=pedestrian is a bit darker. Then why living street - something between highway=pedestrian and normal streets is even darker?

The obvious solution - switch colors is problematic, as it makes squares really ugly:

vatican - square new-road-style -_ new-road-style 17 17 new-road-style - new-road-style 350px london - trafalgar square new-road-style -_ new-road-style 17 17 new-road-style - new-road-style 350px

It is possible to make both living street and pedestrian lighter.

vienna - square around church in the cetrum megacollider -_ megacollider 17 17 megacollider - megacollider 350px

but it makes highway=pedestrian and landuse=residential areas too close:

conflict with landuse residential - orchester megacollider megacollider-_megacollider 17 17 350px megacollider - megacollider 350px

Reddish highway=pedestrian was promising

living street pedestrian red -_ red 17 17 red - red 350px

until it turned out that it collides with other landuse

test_pedestrian_on_industrial 1 red red-_red 17 17 350px red - red 350px

Other PRs

During work on road rendering I discovered that map would look better with some landuses becoming lighter and less saturated. Therefore I slightly modified old proposal to modify rendering of forests and submitted it as #1728 (I opened a new PR as code needed to be updated).

There is an open PR that would unify highway=path and highway=footway styling and show surface for highway=path/footway/cycleway - #1713

There is also a PR that would improve rendering of highway=raceway: #1712

Also there are also PRs that would make farmland and power areas less prominent - see #1701 and #1680.

During the development of road style some long-standing bugs were sufficiently annoying to prepare code fixing these issues. Once test images will finish generation I will send also fixes for #1143, #686 and part of #1648

Merged

Some other minor changes like tweaking display of steps will be present in the next release https://github.com/gravitystorm/openstreetmap-carto/pull/1714

selection_001

It is quite interesting - some changes are quite simple, like in this case. Entire PR was changing only one number. But preparing even such easy changes without causing problems requires testing many locations and weird situations to avoid unexpected reducing in quality of rendering. In that case, during preparations I tested several other variants - maybe even smaller (it was no longer looking like steps)? Maybe increase distance between red dashes (it no longer looked like a single element)? Maybe make red dashes narrow (it was not noticeable enough in typical cases)? Maybe reduce width but not so much (it was worse in areas of high steps density without benefit for typical situation with single steps in areas).

Discussion

Comment from imagico on 8 August 2015 at 19:51

Looks fairly good to me - two remarks:

  • At z=7/8 where you don’t have minor roads in gray you could sightly lighten the railways to avoid them appearing too strong.
  • The secondary road yellow fill looks somewhat extreme at the higher zooms - i hope there is room for making it somewhat more like the old teritary with the lighter farmland color.

Comment from Minh Nguyen on 8 August 2015 at 21:45

Thank you for the detailed comparisons. Overall, I think the changes make the map less flat, which is especially important in areas with detailed landuse coverage.

The new highway colors are definitely growing on me¹, but I find the highway shields to be overly prominent in the new style. It may just be my monitor’s color gamma, but I find the motorway shields to be difficult to stare at for more than two seconds. I don’t think they need to be more saturated than the highways they label, because the shields already have a white outline that keeps them well-defined even in a sea of motorways.

In the first set of screenshots, Antwerp is inundated with railroads even out to z7. Did these screenshots incorporate the railroad service changes shown later? Most of the extraneous Antwerp railroads appear to be tagged service=yard, so they shouldn’t show up until much later.

¹ For context, I hail from the United States, where paper maps sometimes use similar colors anyways.
² Fairly recent Mac Retina display, default color profile.

Comment from Mateusz Konieczny on 8 August 2015 at 21:55

sightly lighten the railways

@imagico - I am now checking how z7, z8 will look like with subtler railways.

Did these screenshots incorporate the railroad service changes shown later?

Yes, but I am using outdated data.

As mentioned - “missing data that is causing poor rendering of railways in Antwerp is now fixed”

I am using https://lists.openstreetmap.org/pipermail/dev/2015-July/028625.html for global rendering that is based on the planet dump from 150202.

I find the highway shields to be overly prominent in the new style

Yes, shields may be toned down (added to TODO list).

Comment from Rovastar on 8 August 2015 at 22:47

I dislike the suggested pedestrian style - it looks like a building. Take the carto css default pic how can you or anyone tell if it is pedestrian or a building for the far right.

It needs to be lightened up a bit IMHO. Personally i think living streets should be more like residential roads. I am not sure why you think the are like pedestrian walkways.

Actually I would like some pattern paving for pedestrian ways a map image a bit like (only time for a quick Google) http://www.kspaving.co.uk/graphics/KSPavingLogo.gif

Comment from Mateusz Konieczny on 8 August 2015 at 23:02

I find the highway shields to be overly prominent in the new style

New shields:

Comment from robert on 9 August 2015 at 00:52

Great post.

Comment from ika-chan! UK-USA on 9 August 2015 at 04:23

I would support the rollout of the new highway colours after we have implemented the “heritage” layer: see https://lists.openstreetmap.org/pipermail/talk-gb/2015-August/017652.html.

Comment from Mateusz Konieczny on 9 August 2015 at 08:25

I dislike the suggested pedestrian style - it looks like a building. Take the carto css default pic how can you or anyone tell if it is pedestrian or a building for the far right.

I agree - current scheme for pedestrian/living street is illogical and this version has horrifically ugly pedestrian areas (current version has horrifically ugly living_street areas, but this is a rare feature).

It needs to be lightened up a bit IMHO.

Unfortunately once it i lightened that it looks OK it is too close to landuse=residential. I will try once more - maybe I will find something that is merely ugly and not to close to this landuse.

Personally i think living streets should be more like residential roads. I am not sure why you think the are like pedestrian walkways.

As mentioned - living_street are something between highway=residential and highway=living_street. In some places closer to highway=pedestrian in some to highway=residential (depends on national laws, location and other factors).

Actually I would like some pattern paving for pedestrian ways a map image a bit like (only time for a quick Google) http://www.kspaving.co.uk/graphics/KSPavingLogo.gif

I am dubious whatever patterns will work.

Comment from imagico on 9 August 2015 at 08:35

The weaker shields are better but you should probably make sure the visibility is strictly decreasing with decreasing highway size - currently secondary appears slightly stronger than primary.

And the secondary shield color is fairly close to heath color due to the secondary color already leaning towards green.

Comment from imagico on 9 August 2015 at 08:57

For pedestrian areas - you could try something slightly blueish placing it somewhere between residential and retail, like:

pedestrian in blue

Comment from Mateusz Konieczny on 9 August 2015 at 09:29

secondary shield color is fairly close to heath color

Thanks for noticing this! Now lets find secondary road through heath…

For pedestrian areas - you could try something slightly blueish

I am worried about collision with water. See http://www.openstreetmap.org/way/183484612#map=19/53.56759/20.98945 or http://www.openstreetmap.org/way/172671466#map=18/54.44740/18.57716 for nearly the worst case.

Comment from imagico on 9 August 2015 at 10:50

I am worried about collision with water.

I don’t think that’s a problem as long as you keep it bright enough and on the reddish side of blue - water color is quite greenish.

Comment from Mateusz Konieczny on 9 August 2015 at 13:04

heath

It may be easier to change heath - especially as it was planned anyway ( https://github.com/gravitystorm/openstreetmap-carto/issues/780 ).

I found way to do this and created https://github.com/gravitystorm/openstreetmap-carto/pull/1733

It is not fixing collision with natural=wetland, wetland=bog/string_bog - but at least half of the problem would be gone.

Comment from Math1985 on 9 August 2015 at 14:06

Great work! The new style looks a lot better than the old one overall. It’s clear now that using colours different from the background colours not only increases legibility in the extreme cases (trunk on forest, secondary on farmland), but also makes the overall legibility much better.

Some random comments:

  • I agree the with the others the shield colour is too strong, especially for trunk and motorway (this is a comment on the original rendering posted here, I haven’t looked at the proposals in your responses yet).

  • At some zoomlevels trunk seems rather similar too primary, maybe it’s possible to move it slightly closer to motorway?

  • The secondary casing could perhaps slightly toned down, at least on z11.

  • The new z7 doesn’t look really pleasant, but I can’t tell well why. The ‘before’ image is missing by the way). Levels z6 and z8 look fine though.

  • For pedestrian/living_street, I still like the final example. Would it be possible to reduce the clash with landuse=industrial by adding a stronger, for example purple, outline?

  • I see tertiary is now white and wider - do you have some more examples of urban areas to show how that works?

  • The difference between regular casing and bridge casing might need some work. For example on z16-z18 in https://cloud.githubusercontent.com/assets/899988/9151568/2df97b82-3e06-11e5-880e-7632b5359930.png this is not really clear.

  • In the same example, residential seems too thick on z15 - not sure if that’s a problem in other areas too?

Once again, great work so far!

Comment from Mateusz Konieczny on 9 August 2015 at 18:12

The secondary road yellow fill looks somewhat extreme at the higher zooms

Lightness of fill now is increasing for less important roads. As result yellow for secondary roads is less aggressive.

I don’t think that’s a problem as long as you keep it bright enough and on the reddish side of blue - water color is quite greenish.

Added testing this to TODO.

you should probably make sure the visibility is strictly decreasing with decreasing highway size

I modified shield color selection - now it is also supported by color generation script, https://github.com/matkoniecz/openstreetmap-carto/blob/backup-of-new-road-style_on_08_09/scripts/generate_road_colors.py#L55 (selects colors in lch space and keeps differences in lightness, chroma and hue constant - it makes tweaking color far easier as one may change one parameter and regenerate colors).

At some zoomlevels trunk seems rather similar too primary, maybe it’s possible to move it slightly closer to motorway?

At which ones? It was not supposed to happen.

The secondary casing could perhaps slightly toned down, at least on z11.

For pedestrian/living_street, I still like the final example. Would it be possible to reduce the clash with landuse=industrial by adding a stronger, for example purple, outline?

The difference between regular casing and bridge casing might need some work

Added to TODO list.

I see tertiary is now white and wider - do you have some more examples of urban areas to show how that works?

Examples are generating, I will post them as a new diary entry.

In the same example, residential seems too thick on z15 - not sure if that’s a problem in other areas too?

This wide white roads are highway=tertiary.

I know, unfortunately it is going to be confusing for some time (new pale yellow highway=secondary is the worst one as it is really close to current highway=tertiary).

Comment from Mateusz Konieczny on 9 August 2015 at 18:13

Warning, this image is resized before displaying - http://i.imgur.com/Dz6EgV9.png is undistorted one.

Comment from HannesHH on 9 August 2015 at 18:43

One consideration that also went into the choice of the original colors was the use of OSM tiles as background/basemap. Your new red is very bold and prominent in comparison. But since making your own tiles is quite easy nowadays I am not sure how much this should count.

I am personally not a fan of huge shields but that’s because I am not a car driver.

Do you also care about color-vision impairment / accessibility? It’s a major problem and really not something you should attempt tackling (I speak from experience :D ) but for the final touches it might be worth to play with ColorOracle and see if small changes can improve the separation for red/green deficient people.

Comment from ccamfwfwtn on 10 August 2015 at 10:37

This is probably not technically feasible for this version, but road signage (shields) should be rendered based on the local colour scheme. I’m in favour of the current colour scheme for roadds including highways, but if the colour used for rendering road signage would be based on the local signage it would add the best of both worlds. This is how both Google and Here render their maps.

Comment from Nakaner on 10 August 2015 at 20:37

Hi Mateusz,

I really like your improvements, especially your huge use of service=* on railway tracks.

Best regards

Michael

Comment from Minh Nguyen on 10 August 2015 at 20:58

This is probably not technically feasible for this version, but road signage (shields) should be rendered based on the local colour scheme.

skjul, that’s not unlike what I’ve requested here. It isn’t a simple task, though.

Comment from Tirkon on 26 August 2015 at 20:18

High Mateusz,

did you test tertiary streets in rural areas that are sparely mapped? I could imagine that the white streets on nearly white background could be worse than before.

Here is a good place and zoom to test: http://www.openstreetmap.org/way/171827562#map=12/53.4137/7.6700

regards Tirkon

Log in to leave a comment