Add rendering for climbing route features
Description
Right now, climbing features don't have any styling
The issues connected to https://github.com/openstreetmap/id-tagging-schema/issues/31 work on addding presets for those features.
I think we should look into adding some styling for those ways as well.
Screenshots
Looking at existing styles (Left to right: Ladder, Steps, Slipway(Drivable), Chair Lift) I think something that looks similar to Ladder/Steps is good, maybe with a red color like the chair lift (something that highlights the "danger" :)).
I'd like to "claim" this issue, if I can. I should have a draft PR ready to go shortly after the related schema changes land. I think you have the right idea for the design @tordans, and I'd love to discuss the specifics of the PR with you when the time comes.
For your information
- Adding new styles at this point conflicts with (part of) existing styles
(
leisure,natural(tree_row,valley,cliff),highway(i.e.bridleway(OSM Carto: green),service(+service=),path,track(+surface=),road),aerialway,route=piste,sport(motorsport,toboggan) ...),tunnel/railway/pipeline/lifecycle-prefix/boundary - Climbing routes (and via ferrata) should not be rendered like a physical feature. (little to no physical infrastructure, physical natural features only indicate the geometry itself, special equipment/skills needed to traverse)
whereas ladder/steps/stile/... is a physical feature which can usually be traversed by general public.
(see also
route=pistewhich solved this by using thick solid colour line) - Climbing routes should not be confused with
highway=path(special skills/equipment needed) - Climbing routes should not be tagged as
leisure=track. - Via ferrata also is not rendered yet by iD.
- Via ferratas should not be confused with climbing routes. (different equipment needed)
-
climbing=routeandhighway=via_ferrataare also used insport=climbing_adventure - Not all climbing routes (or via ferrata) are directly dangerous.
(okay, also not all zip wires, but those are usually
playgroundzip wires)
(as far as I understand)
could maybe be rendered
- similar to
route=piste(light red or orange(?), or dark blue, solid line); - similar to
highway=path(light red or orange(?), or dark blue, dotted line, no casing); not to be confused withboundary/barrier(dotted might indicate worse trail visibility / little physical features / discontinuity, looks like rocks / climbing holds); though could also be - similar to
highway=bridleway(light red or orange(?), or dark blue, with white dashes); not to be confused withhighway=pedestrian. - (similar to)
leisure=track(yellow solid/dashed/dotted line) (see climbing leisure activities tags and equestrian gallop track which usually has vertical obstacles which require traversing by horse)
(?); light red or orange not to be confused with motorway ... primary, construction or leisure.
or, dark blue (similar to piste light purple), not to be confused with cycleway/water
(Stock) images for illustration
- red dotted line (and red+white nodes) (avoid bridleway rendering)
- solid red line (perhaps best combine with white casing) (and white+red nodes) (avoid aerialway rendering)
- yellow dotted/dashed line
Thanks for the thoughtful input @danieldegroot2! I think we have the same concerns in mind with regards to avoiding confusion with other features and also trying to imply the qualitative nature of a climbing route (e.g. quite featureless, dangerous, requiring skill). I thought I'd share a picture of my initial idea that I had developed before I got input from you two, just so we have a starting point to iterate from. Let me know what you think of it.
My thinking here is as follows:
- The gray-brown casing symbolizes the rock which is the medium of travel on a climbing route.
- Choosing a casing color with low contrast to the background (usually rock), indicates that there isn't much in terms of visible features present, that you can use to find the line on the ground.
- Having long gaps between the high-contrast red contributes to the same impression.
- The intention behind having the line be slightly thinner than a path is also to serve the same purpose.
- The somewhat dark red symbolizes danger and the requirement for skill.
I also want to ping @zbycz and @jvaclavik here, since this discussion will probably be relevant to their interests.
@harahu thanks for the draft!
I think the first think we need to agree on is if those ways are "way-like" ("physical feature") or "piste-like"
Climbing routes (and via ferrata) should not be rendered like a physical feature. (little to no physical infrastructure, physical natural features only indicate the geometry itself, special equipment/skills needed to traverse) whereas ladder/steps/stile/... is a physical feature which can usually be traversed by general public. (see also route=piste which solved this by using thick solid colour line)
I am leaning towards @danieldegroot2 thinking that we are in the piste-like territory with most climbing routes. I can also see this working quite good. The piste-routes will look very different to (walkable) ways that might be nearby. The direction arrow would also make sense "up the hill" to signal that this is something special. Which would leave us with the open question about color and line thickness. Unfortunately the red is already take. And I think I remember there is some orange on one of the piste styles? But still, something in this area of red and orange would be good. I don't see us having many piste and climbing routes right next to eachother… and even if, the geometry will look quite different (straight vs. zick-zack). If the arrow works with less thick ways that would be another good way to give the climbing route a different look.
I we stick with the way-like pattern, I think a look that is closer to the steps might work a bit better. The contrast on your current iteration is quite low for the casing/background. Maybe it could work to have the stairs style but the casing (brighter) red not white and the dots white (or light red)? And the whole thing thinner?
Okay, let me attempt to explore some of your ideas:
First some piste-style lines, but thinner and with red-orange as the stroke color:
Then, some options based on steps, but with bright red casing:
Is this more or less what you had in mind?
Hey guys, I really like what you are doing here. Good job!
About your suggestions:
What about something like this one, but with white arrows? I think the direction is pretty important in case of climbing routes. Also I would suggest to simplify arrows to triagles. WDYT?
@jvaclavik FYI the image is broken
What about something like this one, but with white arrows? I think the direction is pretty important in case of climbing routes. Also I would suggest to simplify arrows to triagles. WDYT?
I'll be honest, I'm a bit unsure about adding arrows, at least initially. I'll describe why.
The climbing routes that make the most sense to map as a way, rather than as a point, are the ones that are less-than-vertical. The more horizontal distance a route traverses, the more likely it will be that it will be mapped as a way.
There is a similar correlation with whether a climbing route is bidirectional. The routes that are climbed in either direction, like a lot of ridge traverses, will cover a lot of ground in the xy-plane, and thus make sense to map as ways rather than points.
Thus, ideally, we should avoid unconditionally adding arrows to the rendering of all climbing routes. Rather, we should only add arrows to climbing routes that have a single climbing direction.
Currently, the unidirectional/bidirectional nature of a climbing route is indicated by the presence or absence of climbing=route_bottom and climbing=route_top nodes. I don't know how I could use that to inform the rendering of the route way in iD. It would be much easier to get this to work if this attribute was indicated as a tag on the way. In the example above with arrows, I achieved the effect by tagging the route as oneway=yes, similarly to how one does it for highways.
Therefore, I think we need to propose schema changes before we introduce arrows. We should presumably agree on some additional field(s) for climbing routes that provide information about how to understand the reverse direction of routes.
I propose that we don't let such a schema change proposal be a blocker for getting some initial rendering for climbing routes in place. Hence, I'd rather leave the arrows out of the initial PR.
I'll still share my initial thoughts on such a proposal here, in case anyone is interested.
A simple option could be to repurpose `oneway=yes`, as described above, but that might not be ideal.
In my understanding, oneway is understood as a legal rather than practical restriction. In the case of climbing routes, there is also a pretty nuanced spectrum. Some routes are truly bidirectional, and are commonly climbed in both directions. Other routes, particularly overhanging ones, might be near impossible to reverse by abseiling, even if you wanted to. And between these extremes there are varying degrees of practical reversibility.
There's also a human aspect to this. Some popular multi-pitch routes I know of are physically well suited to be reversed by way of abseiling, with bolted anchors at appropriate distances, and little potential for rope snagging. Yet, abseiling down the route is strongly discouraged because it creates dangerous situations for climbers below. Instead you are expected to either walk off, or abseil a less popular line near by.
Hence, we might want to have fields to indicate the customary reversibility as well as the physical reversibility of a route.
I think we shouldn't look at climbing routes in isolation: There is also highway=via_ferrata to consider, and even highway=path with it's extreme end of sac_scale values[^1]. The styling should be consistent across these different types of alpine ways.
[^1]: something like a highway=path + sac_scale=difficult_alpine_hiking can include significant climbing. I have even seen these mapped in combination with climbing=route.
The gray-brown casing symbolizes the rock which is the medium of travel on a climbing route. Choosing a casing color with low contrast to the background (usually rock), indicates that there isn't much in terms of visible features present, that you can use to find the line on the ground.
What about even omitting the line casing to let the imagery shine through?
Having long gaps between the high-contrast red contributes to the same impression. The intention behind having the line be slightly thinner than a path is also to serve the same purpose. The somewhat dark red symbolizes danger and the requirement for skill.
Going from brown (for normal paths) towards red for these more dangerous routes makes sense, although I would have gone the other way regarding the dashing: The alpine maps I know typically use narrower dashing for the more extreme paths/routes, and wide dashes (or even solid lines) for regular hiking paths.
Maybe we can even play a bit with the "symbology" here: narrow parallel lines to symbolize the ladders/steps one would encounter on a via ferrata, and round markers to symbolize the permanent bolts of a climbing route?
(the top way is a climbing=route, the white section is mapped as climbing=abseil_route 🤷 , the middle section is a highway=via_ferrata, and at the bottom-right way is a highway=path with sac_scale=demanding_alpine_hiking)
Just as a confirmation: I agree with the part on oneway/arrows. And I also like the transparent casing to signal this is a way but something very "unpaved". The dots for climbing (more like grips?) vs. small dashes for the via ferrata looks good to, IMO.
@tyrasd I quite like your proposal, and I think I prefer it to the piste-based renderings explored above. I think the dotted line in the case of climbing routes expresses more clearly the that there isn't much infrastructure in place than the more solid red line of the piste style idea.
A few thoughts about the image you shared:
- I'm onboard with the idea of narrow parallel lines for a via ferrata and a dotted line for climbing routes, but in the image you shared it feels like the climbing route stands out more than the via ferrata, which I think is unfortunate, since a via ferrata has more physical infrastructure in place. Perhaps it would look better if you made the dots on the climbing route a bit smaller?
- Alternatively, one could try to make the via ferrata line stand out a bit more, perhaps by adding some form of subtle casing. One idea I experimented with for climbing routes was a semi-translucent casing, but I held back on it because I was afraid it could be confused with "underground" features. However, I think it could be worth considering in order to make the via ferrata stand out a bit more than the climbing route, if we assume that has no casing.
- In any case I like your take on the via ferrata a lot better than the current rendering, shown below for reference:
@tyrasd did you share your code somewhere? I assume @harahu will be happy to modify https://github.com/openstreetmap/iD/pull/11158 to follow your styling. It would be great to get this out…
I can do so, but I'm AFK for a few days, so you might have to wait a bit.
Okay @tordans, my PR now looks like this:
Climbing routes and via ferratas look largely similar, but via ferratas are more pronounced.
Climbing routes and via ferratas look largely similar, but via ferratas are more pronounced.
I think that works well as well. I would explain this as "both are the same category, so both have dots to indicate their non-way-iness. And both are read because of the danger. But via ferratas are the "higher highway class" of the two, so bigger dots."
Compared to Martin's design it has the advantage to only use one new style (dots) which will allow us to use small dashes elsewhere.
Looking at the screenshot, the red looks a bit too red to me. More like a notice-color than an map-line-color. But I assume a bit more brown will make it hard to see?
That just my thought, though, Martin will have to give directions on how to proceed.
I now adopted Martin's red color. I think it works well, I just didn't remember to do it initially.