-
Notifications
You must be signed in to change notification settings - Fork 819
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
Move highway areas below all linear road types #3872
Conversation
This PR moves highway areas below all linear road types (resolves gravitystorm#3281). In particular, this change has the following effects: * Render highway areas below tunnels (resolves gravitystorm#529). This prevents the current situation where tunnels are invisible if there happens to be a highway area above them. * Render highway areas below line/area barriers, ferry routes, tourism boundaries, cliffs, landuse-overlay, and turning circles. I think these changes are mainly neutral or positive. * Render highway areas below line/area barriers. This is probably the most controversial aspect (but necessary for the other changes). See screenshot below. * This PR is a necessary condition for merging the roads-casing and roads-fill layers (part of gravitystorm#2046), which would greatly simplify our code. * This PR is a necessary condition for rendering buildings above highway area (gravitystorm#688). * Promoting linear highways over areas makes life easier for other data consumers, that already tend to have poor support for highway areas. For example: * Transport and wikipedia do not render road areas * Humanitarian, bicycle, mapbox, streets, OSM bright renders linear roads on top of areas, like in this proposal
This would essentially remove all the road polygons from the road layering system and render them as a second landcover layer (after the bridge layer - which makes some sense but also after the water layers, which means water features would still not be rendered above pedestrian areas etc.) This would be a major strategic decision for this style. Right now we are essentially the lead style in the OSM world in terms of sophistication in interpreting road mapping in OSM - the various flaws in that notwithstanding since almost all other styles are much worse in that regard. Since mappers check their work primarily with our style other styles with equal or less sophistication are usually on the safe side because the data has been evaluated against the more demanding requirements of us already. Giving up the lead role in sophistication of interpretation of the roads data would affect this balance. OTOH the roads have IMO too much weight in this style overall. And while simplifying how we deal with roads on a technical level does not directly affect the visual weight in the map - on the contrary, your change would significantly increase the visual noise as is, on a strategic level such a change could be a signal to tuning back the weight of roads also in visual design. My own approach to solving the layering problem with road lines and polygons would be the opposite direction: To merge road lines and polygons as well as casing and fill into a single layer to be able to sort them freely as needed in rendering. Accordingly i would disagree with your statement that
This would of course not solve the problem of various non-road features not being visible above road polygons - this is something that could be solvable using comp-op technique as discussed for water areas in #3854. Your change would also prevent any chance of having a consistent layering of bridges and tunnels polygon features in the roads system. I would also like to point out that
is not covered by our current documented goals. The mapper feedback effect of your change would be fairly ambiguous - mappers essentially have the choice between two strategies which both lead to suboptimal visual results in the proposed rendering:
Overall the more explicit visual feedback would clearly in a way be an improvement from the current situation where no clear visual feedback is given but it does not really help the mapper much in determining what is the right way to map things. In total i am undecided on this - i see both advantages and disadvantages - but i think this definitely warrants a thorough consideration and a discussion of our strategic goals w.r.t. roads rendering. |
@pnorman Could you review this? |
I've checked the results of this PR in a few places.
I don't see a line or area barrier feature in the screenshot, just pedestrian roads, residential roads and a service tunnel. What am I missing? I found this hedge mapped as an area on top of highway area a while back. While I had "fixed" this by changing the pedestrian highway area to a multipolgyon, here's what it would be like if I hadn't come around: I'd consider the new rendering to be poorer feedback, because the hedge area shouldn't be part of the pedestrian area, but it's a minor issue. Having line barriers over highway areas seems to be a benefit, though I'd still like to find an example of this. A pedestrian plaza could have a short fence or wall or hedge, yet the rest of the surface would be unobstructed and so could be mapped as one area. The main problem with the new rendering is with Before - grand market, Brussels
We could also try to lighten the casing on However, I would like to discuss if this solution is superior:
That sounds like an interesting idea. Has this already been implemented in a different style? |
Tunnels are invisible under linear road fill, which can be quite wide when there is a dual-carriageway. Rendering things like subway tunnels over squares and plazas can impair legibility:
It appears this statement may not be totally correct, per @imagico's comment above and the text of #2046 where the plan was to merge
This would be good for
I don't think that this PR would do this. While it would unify our rendering with some others, it may promote removal of highway=pedestrian linear ways from plazas and squares. |
Not sure how this got there, should be: Render highway areas below linear roads (as seen in the screenshot). Sorry for confusion. |
Just the idea: what if we decouple |
One of the goals is to make it possible to reduce code complexity. But creating a new layer for Another goal was to render some or all buildings over |
Here's a place for testing with line barriers on top of a highway=pedestrian area, and service road tunnels under it. But wait, it's actually on top of a building! This appears to be an elevated pedestrian area on a university campus, which connects the upper levels of several buildings. I think there is a swimming pool and sports centre under part of it. This would be hard to get right: if we start rendering buildings on top of pedestrian areas, the building would render on top, unless we rendering all highway areas, buildings and linear roads based on layer. https://www.openstreetmap.org/#map=18/53.10729/8.85636
Getting this to render "properly" would require merging |
It might be a couple weeks till I can review this with all my SOTM stuff coming up |
@@ -5,6 +5,7 @@ | |||
@service-fill: @residential-fill; | |||
@living-street-fill: #ededed; | |||
@pedestrian-fill: #dddde8; | |||
@pedestrian-area-fill: #ebebf7; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I recommend against adding this new color
If I'm interpreting the rendering correctly, it looks like the Opencyclemap style deals with this problem by rendering in this order:
See https://www.openstreetmap.org/#map=19/50.63233/3.06199&layers=C But it might be worth trying this method. The casing of highways would show over Note: this was the idea suggested by @kocio-pl above: #3872 (comment) |
After thinking a bit - at the same time it's promoting virtual lines (tagging for routing) instead of real geometry that is visible on the ground. |
Could you briefly explain what do you mean here? I think OSM Carto is moderate in this respect and it is a German style that gives them too much weight.
I also like this solution. |
If I may, I'd like to recommend something: Venice is heavy mapped with pedestrian ways, areas, building passages and bridges. It's interesting to test this proposal there to see the impacts. |
Yes, I think they do something like that. In #529 (comment), I described the three requirements that are fundamentally mutually inconsistent. OCM violates the 'The casing of roads must be rendered on top of tunnels' principle for pedestrian roads. See https://www.openstreetmap.org/#map=21/49.61187/6.13299&layers=C, where you can see that tunnels are rendered on top of pedestrian roads. So we can go the OCM way, but that means the tunnel versus pedestrian ordering will be incorrect. |
But if we merge highway lines and polygons, couldn't we also merge Or do you think all types of |
Even if we merge man_made=bridge and building=roof layers too (without going into the merits of that), it still requires us to solve the area-fill > road-casing > tunnel > area-fill (mutual incompatible) requirements, which this ticket is about. |
I'm willing to try this change, but I would like to see if the issues with overlapping What do you think about using a lighter color for Or the idea by @kocio-pl and OpenCycleMap of rendering highway=pedestrian fill first? (This will not improve things for |
@matthijsmelissen, @pnorman and myself had a quick chat about this change at SotM. My position is unchanged (i am personally undecided if this is a good idea or not) but i will not block this change if it otherwise finds approval. I will try to summarize a few points i took from the discussion:
|
After some more thinking:
Primary reason for this is visual promoting on the ground data, because this is a map, not a routing service. We already support routing data too prominently - there are multiple maps showing lines instead of real geometry, while for example I'm aware of only one service rendering On the low and medium zoom levels it makes perfect sense to use line model as a simplification, but on high zoom, where highway areas are available, they produce evident artifacts, which we just got used to, even if lines just don't belong to this scale. Current road rendering system is a clever hack around this, which on the one hand is good, since roads are very basic and popular type of map data and it involves even more work to add their shapes, but the downside is we're stuck in the simplified version even when this is possible to show more precise data (mainly in the well mapped cities). |
Please keep in mind that this is not about what we'd hypothetically want if there were no technical constraints. Although there might be differences in opinion on that as well it does not really matter because most in that regard is essentially not feasible because it would be very complex to implement and maintain and very inefficient in rendering. This is about what can be done given the technical constraints we have. Any arguments should concentrate on that. Regarding
This is about the overall weight of the roads in the map, in particular the choices of dropping other features and de-emphasizing them at lower zoom levels while roads are kept as they are. See in particular #747, #1748, #2654, #2933, #3467. A lot of comments on suggested changes we have on this issue tracker are anxious of any changes that might negatively affect the visibility or roads while usually no similar concerns are raised on other features like path/tracks, landcover etc. So in a way i also think we have kind of a bias towards OSM-Carto being primarily a road map. |
I didn't mean to hijack this PR to discuss general ideas (if I understand your objection right). I thought that adding basic context for my bullet points would help understand it, but if that doesn't work for you, you're free to skip it and concentrate on practical discussion about goals of this code change. I want to make decision easier by not getting too much into details at once. |
@matthijsmelissen What do you think about my findings? Any ideas about that? |
Unfortunately I don't see a clear way forward here, so I'm going to withdraw this pull request. If anyone else would like to take over from here, feel free to go ahead. |
This PR moves highway areas below all linear road types (resolves #3281).
In particular, this change has the following effects:
Render highway areas below tunnels (resolves Render tunnels above highway areas #529). This prevents the current situation where
tunnels are invisible if there happens to be a highway area above them.
Render highway areas below line/area barriers, ferry routes, tourism boundaries, cliffs, landuse-overlay, and turning circles. I think these changes are mainly neutral or positive.
Render highway areas below
line/area barrierslinear roads. This is probably the most controversial aspect (but necessary for the other changes). See screenshot below.This PR is a necessary condition for merging the roads-casing and roads-fill layers (part of Combine road lines and areas to one layer #2046), which would greatly simplify our code.This PR is a necessary condition for rendering buildings above highway area (Building doesn't render on top of highway areas any more #688).
Promoting linear highways over areas makes life easier for other data consumers, that already tend to have poor support for highway areas. For example: