Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve mid-zoom levels and water color #2654

Merged
merged 6 commits into from Jul 31, 2017

Conversation

matthijsmelissen
Copy link
Collaborator

This PR changes the following:

  • Landcover in z<12 is now less bright.
  • Built-up landcover areas are now rendered more prominently in z<12.
  • Unimportant roads are now white rather than gray.
  • Water is now a brighter blue (thakns @kocio-pl).
  • Low/midzoom roads are now rendered with bright halos.

This should improve the legibility and esthetics of the map. In particular:

  • Roads, esp. primary roads, are now better legible on zooms 8-11
  • Water areas are easier to recognize
  • Minor roads on mid-zoom levels are rendered more clearly
  • Residential areas are more prominent and easier to recognize

This PR changes the following:
* Landcover in z<12 is now less bright.
* Built-up landcover areas are now rendered more prominently in z<12.
* Unimportant roads are now white rather than gray.
* Water is now a brighter blue (thakns @kocio-pl).
* Low/midzoom roads are now rendered with bright halos.

This should improve the legibility and esthetics of the map. In particular:
* Roads, esp. primary roads, are now better legible on zooms 8-11
* Water areas are easier to recognize
* Minor roads on mid-zoom levels are rendered more clearly
* Residential areas are more prominent and easier to recognize
@matthijsmelissen
Copy link
Collaborator Author

I decided to lump these changes together as they (at least partially) depend each other.

Note that I used opacity for the landcover layer, to prevent duplication and dim the landuse colors in a uniform manner. This should not lead to problems with ugly colors as the landcover layer is the lowest layers on the relevant zoomlevels.

On the lowest zoomlevels, not all colors can be easily distinguished. In general I think using undistinguishable colors is a bad design practice, but as users in this case can zoom in to get more information, I don't think it's a big problem in this case.

I'll post some screenshots, but for a good impression it's really best to checkout the change yourself.

@pnorman Do you have the opportunity to load this branch into your tile server?

@matthijsmelissen
Copy link
Collaborator Author

screenshot_2017-06-03_15-46-01
screenshot_2017-06-03_15-45-45
screenshot from 2017-06-03 15-45-13

@matthijsmelissen
Copy link
Collaborator Author

@pnorman Should I worry about the failing travis?

@imagico
Copy link
Collaborator

imagico commented Jun 3, 2017

I have not tested this change yet so no comments yet on the actual design but a few general remarks here. This is a big change in several ways:

  • it changes the water color which alone is a fairly far reaching change for the overall map appearance and the color balance in this style. There has been a fairly lengthy but inconclusive discussion w.r.t. changing the water color in Water should be better recognizable - difference to forest color too low #1781 - however so far all water color ideas there have been developed for use in combination with the current landcover color scheme - and not also for use with separate low zoom color scheme as suggested in this PR.
  • the landcover color changes would mean departing from the basic design principle of this style that colors used are generally the same across all zoom levels. This would affect both map use (users would need to learn to read the map in different ways at different zoom levels) and map design (changing a color would become more complicated design wise).
  • it would also mean departing from the current principle not to use transparency to set colors when the transparency effect itself is not the aim. The statement that this should not lead to problems is not quite right because landcovers mapped above each other (like micromapping of landcovers in residential areas) and overlap between landcovers and water (which is not necessarily wrong, in particular at the coast) do practically occur and will lead to color mixing.

For info: after the 4.0 release has settled and been deployed i was planning to look into #2507 again and the changes that would be required to do this as well as looking into possibilities of low zoom landcover rendering (z<6) - without a fixed time frame, just this being high on my priority list. My idea was to split this into smaller changes as much as possible, re-ordering the water and landcover layers would be the start and actually changing colors would have been the last step to be made when it could be evaluated in full (including the low zoom levels) and when all options are actually available (including differentiating water color by waterbody type - which is not possible at the moment because of the drawing order).

@kocio-pl
Copy link
Collaborator

kocio-pl commented Jun 3, 2017

Related to or resolves: #1781, #2194, #1755, #1936.

@matthijsmelissen
Copy link
Collaborator Author

Good points @imagico.

The statement that this should not lead to problems is not quite right because landcovers mapped above each other (like micromapping of landcovers in residential areas) and overlap between landcovers and water (which is not necessarily wrong, in particular at the coast) do practically occur and will lead to color mixing.

No, this is not true as transparency is applied at layer level, not feature level (transparency instead of polygon-transparency property).

@imagico
Copy link
Collaborator

imagico commented Jun 3, 2017

No, this is not true as transparency is applied at layer level, not feature level (transparency instead of polygon-transparency property).

Ah - sorry, did not realize that.

I assume though the point about overlap with ocean still stands - this being in a different layer.

@nebulon42
Copy link
Contributor

The Travis error is due to a problem with mapnik-reference which is fixed in mapnik-reference 8.7.0 and carto 0.18.1.

@imagico
Copy link
Collaborator

imagico commented Jun 3, 2017

All right, i tested the change in a few areas and here a few more specific comments design wise. I have not yet formed an opinion if i support this change overall or not, will need to contemplate it somewhat further first.

The change can essentially be split into two separate changes: the change of the water color and the low zoom land cover and roads changes. At z13 and above the change essentially amounts to only the water color change.

water color

The suggested water color is the same as the lakes color in the three color scheme i showed in #1781 (comment) - so my comments here essentially match the impression i had when working on that.

This color works nicely on lakes of intermediate size in combination with the current land cover colors. It is a much stronger blue tone than the current water color but the same lightness (see http://davidjohnstone.net/pages/lch-lab-colour-gradient-picker#b5d0d0,aad3df). This makes it IMO somewhat strong for very large water areas (which is why i suggested a weaker color for the ocean) and at the same time does not really solve the problem of bad visibility of small waterways in very structured environments (which is why i suggested a stronger color for rivers).

For the suggested weaker mid zoom colors i think it is too strong for the ocean leading to an overall unbalanced appearance in coastal areas and with islands.

weaker landcover colors at mid zoom

I think except for the previously mentioned problem of too strong large water areas when looked at in isolation the proposed look for z11/z12 looks fairly nice as a map style with strong focus on settlements and roads at mid latitude in temperate zone climate with landcover mostly limited to grass/wood/farmland. In areas with more diverse landcover or with a different landcover focus (like in the subtropics with farmland, grass and bare ground types dominating) as well as at z10 and below the coloring is no more differentiable though.

I find overall wetlands over land are too strong with this change at the mid zoom levels and would need to be faded in a similar way as landcovers, however wetlands over water and reefs should probably not be faded with the water color proposed. ;-)

the dark builtup areas and the bright minor roads

I think these are both ideas that would be worth pursuing independent of the other changes suggested. These would also be changes that are not as fundamental departures from the current design as the other changes. The dark urban landcover color for z12 and below kind of makes sense to darken the urban landcovers at the point where buildings are no more rendered. There are some problems with this, like the contrast between the dark color and water being much worse than with the old light color.

@matthijsmelissen
Copy link
Collaborator Author

Thanks for the thorough review! I will address your points after we have a worldwide rendering example.

@kocio-pl
Copy link
Collaborator

kocio-pl commented Jun 3, 2017

the landcover color changes would mean departing from the basic design principle of this style that colors used are generally the same across all zoom levels.

We could test mid zoom colors also on high and low zoom levels. This would make the change even bigger, but it would be good for me to redesign these colors consciously and transparently. Original design was not documented nor really discussed later, we just assume it's somehow proper, which makes me uncomfortable when talking about changes.

@matthijsmelissen
Copy link
Collaborator Author

We could test mid zoom colors also on high and low zoom levels

I tried this for high zoom levels, but the results didn't look satisfactory to me. On low zoom levels we don't have landcover.

@imagico
Copy link
Collaborator

imagico commented Jun 3, 2017

Original design was not documented nor really discussed later, we just assume it's somehow proper, which makes me uncomfortable when talking about changes.

Most of the colors of the landcover layer have been changed at some point in the past during the history of this project. Even for those which are unchanged for a long time possible changes have often been discussed in the meantime.

@matthijsmelissen
Copy link
Collaborator Author

@pnorman Do you have the chance to deploy this PR on your server? It is compatible with the 4.0 database layout.

@kocio-pl
Copy link
Collaborator

kocio-pl commented Jul 1, 2017

Travis should be OK now. I would be also interested to see bigger area rendered, I like the idea to preview it live - Paul, what do you think about testing it?

@matthijsmelissen
Copy link
Collaborator Author

As @pnorman hasn't responded yet, are there others who would be able to check how this looks in their area?

@kocio-pl
Copy link
Collaborator

kocio-pl commented Jul 2, 2017

Full Warsaw area from Mapzen extract:

z8
Before
jiyakeyj
After
3k2agfgc

z9
Before
dnmldqri
After
ukrutrz

z10 (click to see unscaled images)
Before
jrpn0cn6
After
tlcw6c8g

@kocio-pl
Copy link
Collaborator

kocio-pl commented Jul 2, 2017

Full Berlin area from Mapzen extract (click to see unscaled images):

z8
Before
hgkyxv1f
After
osgoz71r

z9
Before
2m6hhnni
After
oowp2gkr

z10
Before
ugb2vz5d
After
nbusnphh

@kocio-pl
Copy link
Collaborator

kocio-pl commented Jul 2, 2017

Full London area from Mapzen extract (click to see unscaled images):

z8
Before
ewe8yg7r
After
1ukbzppw

z9
Before
gnvhai1z
After
bldo8gsa

z10
Before
adg0nazc
After
zhsgzgi7

@imagico
Copy link
Collaborator

imagico commented Jul 2, 2017

To avoid confusion with the samples and the PR description - this change modifies landcover colors up to and including z12.

@kocio-pl
Copy link
Collaborator

kocio-pl commented Jul 2, 2017

Full Moscow area from Mapzen extract (click to see unscaled images):

z8
Before
kx3rfmao
After
zsfqgh55

z9
Before
znvfxdru
After
t7wndjsc

z10
Before
mh1dlu2o
After
y0rmjok

@kocio-pl
Copy link
Collaborator

kocio-pl commented Jul 2, 2017

Full Dublin area from Mapzen extract (click to see unscaled images):

z10
Before
08fpuppr
After
e5pklz0g

z11
Before
lqwmpksp
After
xlbfngfs

z12
Before
qs9p yaj
After
bqt3fnkx

@kocio-pl
Copy link
Collaborator

kocio-pl commented Jul 2, 2017

Full Melbourne area from Mapzen extract (click to see unscaled images):

z8
Before
wkgo3abx
After
pfgu18xl

z9
Before
jppp3002
After
1ln_x27t

z10
Before
8eg5ywrt
After
ik8ctf5t

@kocio-pl
Copy link
Collaborator

kocio-pl commented Jul 2, 2017

Full Vancouver area from Mapzen extract (click to see unscaled images):

z11
Before
z5ihm_8w
After
ule2sqb0

z12
Before
lublie0o
After
cd_xgday

@pnorman
Copy link
Collaborator

pnorman commented Jul 3, 2017

I find z12 too dark between the roads when viewed at full size.

@kocio-pl
Copy link
Collaborator

kocio-pl commented Jul 3, 2017

Full Macedonia area from Mapzen extract (click to see unscaled images):

z8
Before
xzf5eeo1
After
h0ortf2q

z9
Before
sqfdjj1e
After
q0o8ecor

z10
Before
1aynmewx
After
1n5nz_qm

@matthijsmelissen
Copy link
Collaborator Author

Thanks a lot for the rendering examples! Do you also have an example where we render landcover over oceans?

@kocio-pl
Copy link
Collaborator

kocio-pl commented Jul 3, 2017

I'm not aware of such place, but I can render it too if somebody would show me where is it.

@matthijsmelissen
Copy link
Collaborator Author

Thank you for all feedback. Most of the remaining issues are things I don't intend to resolve now. Some specific comments:

On the one hand we have the idea of development being firmly guided by a long term strategy and goals so each change is designed to work towards this. On the other hand we have the more localized approach of making individual design decisions with little concern for the overall picuture in the hope that the ideas and preferences developers have on a case-by-case basis in sum lead towards the long term goals they share - even if individually these changes frequently contain a back and forth in terms of design choices made.

We have been working on this PR for more than a year. Constructing a long-term strategy first and then designing a stylesheet that adheres to this long-term vision across all zoom levels would likely take multiple years. And usually the best way to find out what works is to try it out, so I don't think constructing a vision without testing it in practice works either. So I think we can do much better than the current system, even it that involves undoing changes sometimes.

[..] i would for example likely propose either to roll back or side track several of the more recent color changes, airport buildings, playgrounds and dog parks for example (side track here means change them in a way that is not exactly back the way it was but clearly in a very different direction than the previous change). I did not do this so far because (a) i did not want to mess with the ideas and visions others had when making these changes just because i don't see them myself, (b) if these ideas turn out to be in error and the change turns out to have been a mistake i want to give those who made them the opportunity to recognize this and fix it themselves and (c) because it is tough to sell changes going non-systematically in different directions. But i don't think there would be any point in continuing to do so if everyone else follows a compartmentalized development approach.

This is really not the open-source way of doing things, I would really encourage you to make contributions whenever you feel like, and not to worry about somehow disrespecting the vision of others. In any case I'd encourage you to create more pull requests, concrete code makes discussing things much easier.

If i evaluate this change regarding the different goals we have formulated in CARTOGRAPHY.md i must say i fail to see a clear gain of the landcover fading in almost any of the goals stated there.

Yes, we gain a lot in legibility at the cost of some mapper support. See also the analysis of @kocio-pl.

I agree with @imagico that fading midzoom area colors will put more emphasis on settlements and roads, will make the map more similar to automobile focused maps, hence is less suitable to showcase the depth and diversity of OSM. Fading landuses make the map less readable (landscape and cultural aspects) if you are not so much interested in the road network.

It is not only settlements and roads that are more legible now. Mid-zoom landuse was so prominent that it made everything that is not landuse hard to read, including rivers, toponyms etc. But I agree that we should not make the map too road-centered. In the future I hope to tone down roads on the lowest zoomlevels.

landuse=railway is no more rendered like landuse=industrial

True, on low zoom industrial landuse is rendered like urban landuse while railway is not. This seems acceptable to me.

landuse=quarry looks like urban landuse at about z12-z10.

Yes, we might need to change the quarry color. I think we can do that as a change separate from this PR.

I am not really sure what your intention actually is here - with the original opacity based approach you were essentially performing a mixture between the high zoom color and land-color (or water-color, which is why you changed it) - in sRGB of course. If scale-hsla() perfoms a rescaling of hsla lightness that is something completely different.

What we do in this proposal is move the landuse lightness towards the lightness of the background. As far as I'm concerned, this looks good - perhaps even a bit better than the mixing solution, as keeping saturation a bit higher makes it easier to tell the dimmed landuse colors apart.

Also, I love the white roads without casing in theory, and in many places they are great. But they are not very visible over the default landuse. Yes, these are roads that are of lesser importance in each zoom level, but I guess most of the roads in the database don't run over a defined landuse. So we need to be careful here.

It's something to keep in mind, but to me the contrast is currently strong enough.

Let me know if I forgot to respond to any comments.

@imagico
Copy link
Collaborator

imagico commented Jul 24, 2017

We have been working on this PR for more than a year.

I was not aware of that - who is 'we' here?

This is really not the open-source way of doing things [...]

May i remind you that this project - and in particular also this PR - is not primarily a software project but a cartographic design project. Divide and conquer is a very successful concept in software development but it does not really work that well in design.

Let me know if I forgot to respond to any comments.

I don't think you forgot to respond but as said before i am seriously missing counterarguments against most of the reasons i put forward why i think the landcover fading is a bad idea.

The only real argument i have seen for the landcover fading is improving visibility of the non-landcover features (which as said is trivial but which does not mean the same improvement cannot be accomplished by other means). Beyond that legibility and clarity would suffer because (a) landcover information is missing or badly readable and (b) because the changing meanings of colors and the changing color relationships make reading the map much harder. Reading colors strongly depends on context and color interactions and if you change the context by fading some colors while keeping others the same the map reading process gets all messed up. You would essentially have to learn reading the map separately for each of the fading steps.

I did not see any evidence at all that this change improves on our goals of maintainability, diversity, mapper support and map richness and i explained in detail why i think these points would suffer.

But i of course understand i cannot make you see the points i see - even if in some cases i even put them into numbers. So in the end i suppose we can only agree to disagree on a fairly fundamental level in this case. And independent of the question if this PR is actually an improvement or not and if it is merged or not i fear that our inability to actually substantially communicate about the issues seen prevents us from developing a better solution.

@kocio-pl
Copy link
Collaborator

May i remind you that this project - and in particular also this PR - is not primarily a software project but a cartographic design project.

Don't underestimate it. It's a complex software project, even if we're just counting the LOC. I can easily design a killer feature like switching map language, which would hugely improve diversity, but deploying it would require big changes in the software.

Divide and conquer is a very successful concept in software development but it does not really work that well in design.

Please remember that it was not always this way, top-down approach was once standard in software creation too. But with complex projects (like this), evolving data and even data models, it performs poorly. That's the reason bottom-up approach is getting more traction. With accessible tools and more people interested in the subject, map designing is no different and OSM is the game changer on this field.

The only real argument i have seen for the landcover fading is improving visibility of the non-landcover features (which as said is trivial but which does not mean the same improvement cannot be accomplished by other means).

I don't remember other means you've ever mentioned. What would you propose then?

Beyond that legibility and clarity would suffer because (a) landcover information is missing or badly readable and (b) because the changing meanings of colors and the changing color relationships make reading the map much harder. Reading colors strongly depends on context and color interactions and if you change the context by fading some colors while keeping others the same the map reading process gets all messed up. You would essentially have to learn reading the map separately for each of the fading steps.

That's the point: changing zoom level changes the context in a fundamental way and legibility/clarity is not a property of just landuses. Fading is a natural thing for me when zooming out, I don't have to learn anything. It's much more natural than disappearing features. Currently on midzoom landuses are too strong (legibility and clarity of line and point features suffers a lot) and on low zoom they are invisible (so the roads are dominating z5). Fading allows us to solve both problems.

I did not see any evidence at all that this change improves on our goals of maintainability, diversity, mapper support and map richness and i explained in detail why i think these points would suffer.

In my opinion it greatly improves overall legibility and clarity (I don't know why you're talking only about landuses legibility and clarity - the map has more elements, why are you not mentioning them?) and map richness is preserved.

And independent of the question if this PR is actually an improvement or not and if it is merged or not i fear that our inability to actually substantially communicate about the issues seen prevents us from developing a better solution.

Please, propose some other solution if you have one.

@matthijsmelissen
Copy link
Collaborator Author

I am going to merge this pull request. I would like to thank everybody for their contributions. In particular I would like to thank @kocio-pl and @imagico for their work on the water color, and @rrzefox for the rendering demo.

Of course, PRs for further finetuning are more than welcome.

@matthijsmelissen matthijsmelissen merged commit c604e4b into gravitystorm:master Jul 31, 2017
@dhdl dhdl mentioned this pull request Sep 7, 2017
@matthijsmelissen matthijsmelissen deleted the midzoom branch September 14, 2017 23:08
@matthijsmelissen matthijsmelissen restored the midzoom branch November 11, 2017 17:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet