gravitystorm / openstreetmap-carto

A general-purpose OpenStreetMap mapnik style, in CartoCSS
Other
1.51k stars 811 forks source link

Render `leisure=bleachers` ways. #4985

Open waptaff opened 3 days ago

waptaff commented 3 days ago

Discussion held in https://github.com/gravitystorm/openstreetmap-carto/issues/3140 suggested leisure=bleachers rendering could be similar in style to pedestrian areas or other human-access features.

That is precisely what this patch does.

Colors were chosen to be those of highway=pedestrian because they are pretty neutral; as leisure=bleachers can be used in a number of contexts (such as sport pitches and outdoor theaters), I believe this reduces potential visual confusion.

Note that it only renders ways; though found in the wild, leisure=bleachers nodes are not supposed to be used.

Fixes # 3140

Changes proposed in this pull request:

Test rendering with links to the example places:

Case 1: bleachers for sport pitches, at https://www.openstreetmap.org/#map=18/45.58160/-73.55462 — notice the bleachers on the bottom baseball field and near the soccer pitch.

Before leisure_bleachers_1_without_patch After leisure_bleachers_1_with_patch

Case 2: bleachers around the Montreal F1 race track, at https://www.openstreetmap.org/way/459013809#map=18/45.51210/-73.52585 — notice the large bleachers section at the right of the track.

Before leisure_bleachers_2_without_patch After leisure_bleachers_2_with_patch

imagico commented 3 days ago

Thank you for the pull request.

I see two issues with this at the moment:

First: While leisure=bleachers is meanwhile used quite broadly (with 40k uses in world wide distribution) we also have building=grandstand with nearly 20k uses. To what extent there is a semantic difference between the two is not clear. The wiki tries to suggest there is one, but i don't see much evidence for such a difference being reflected in the data. The overlap in practical use between the two tags seems large.

Second: Rendering in color identical to highway=pedestrian does not seem beneficial for either map usability or mapper feedback. highway=pedestrian and leisure=bleachers can occur at similar locations so it is not clear from context which of those you look at, but they are quite different in meaning for the map user - hence just overloading the design is problematic and likely to confuse map users. And rendering leisure=bleachers in the landcover layer while highway=pedestrian is in the road layers (so always above the landcover) is adding to the confusion.

The lack of an established tagging to indicate the direction of bleachers makes a good rendering difficult - though heuristics based on the polygon shape could work in many cases. This would be pretty advanced stuff of course so i am hesitant to suggest it.

Bottom line: To deal with the first issue you would need to look at both leisure=bleachers and building=grandstand. Only if we can come up with a differentiated design concept for both that provides mappers with meaningful feedback on both and their difference in meaning (which - as indicated - seems not very pronounced) we can really think about rendering in this style IMO.

In terms of design: It might be useful to look at other features similar in nature (as engineered structures) and meaning for the map user we currently render:

waptaff commented 3 days ago

@imagico,

Thank you for your well crafted and detailed reply.

I do see a semantic difference between building=grandstand and leisure=bleachers.

Grandstands tend to be large infrastructures with seating on top of them, often with amenities at lower levels (such as toilets, locker rooms, shops and concession stands). Depicting them as buildings makes sense, after all they are conceptually similar to run-of-the-mill buildings with lounge chairs on their roof's sun deck.

Bleachers are closer to a tightly knit collection of park benches large enough to deserve an area (instead of just a node).

Like you, I'm not convinced those distinctions matter enough for them to be drawn differently when depicted on a map. But I'm on the fence on this, I wouldn't be shocked if they were slightly different.

As of now, grandstands are not specifically styled; they inherit the generic building style (all buildings do use the same style, from churches to schools to sheds to houses), and drawing bleachers with the exact same style as buildings would feel very wrong.

A concept similar to bleachers, leisure=outdoor_seating, is currently drawn as an icon, whether it's a node or way. I don't think the solution is there, as icons would be inappropriate for grandstands, as they tend to already be overloaded with amenity icons.

That long preamble leaves us with those scenarios:

① Draw leisure=bleachers like building=grandstand; in this case, grandstands' style should also be updated so that by transitivity, bleachers don't look like generic buildings. Only use plain colors and outline, as icons would likely interfere with grandstand enclosed amenity icons.

② Draw leisure=bleachers in a different style to grandstands. An icon on top of bleachers would likely work fine in that scenario, as I've never seen nodes put on top of them. That's the approach taken by the Tracestrack Topo style and I find it does a decent job.

Both bleachers and grandstands appear to belong in the same family, yet they are subtly different. Fill colors are not exactly the same; bleachers are pure white, grandstands are #F6FCF3; outlines colors are different (cyan-ish for bleachers, peach-ish for grandstands).

I'm not fond of TT's bleachers icon which is too busy for my taste and reminds me of a beehive (and the wrong size anyway).


In light of what's been discussed so far, would you be in favor of a new patch set that mimicks the Tracestrack approach, with a specific outline coloring for grandstands (peach?), plus a (new) 14×14 icon for bleachers? Bleachers could reuse the railway=platform color (#BBBBBB) with the same outline color?

(Please suggest otherwise if I'm talking nonsense; I'm really not attached to any particular style, but I do want this issue to find a resolution, it's been lingering for ages in the ticket queue, and 20K useful features are currently not shown on the map and creating “blind spot areas” in parks all around the world).


(As for heuristics, I do not think a sufficient success rate can be reasonably achieved. Trying to automagically determine a direction for bleachers/grandstands would likely fail most of the time; most bleachers and grandstands I've seen in OSM are four-point rectangles — assuming a direction using the longest side for those would yield a high failure rate. Trying to determine the closest “feature” — such as sport pitch, outdoor theatre, racetrack — to get some sense of orientation would be computationally expensive and also fail in a significant number of cases.)

imagico commented 2 days ago

Regarding semantic differences please consider: We are not looking at the difference between the English language terms Grandstand and Bleachers. Neither are we interested in how mappers think the tags should be used differently. The only thing that truly matters for us is the practical use of the tags in OSM.

It is hard to properly assess this without local knowledge of the areas you look at - but as said, from a quick look at the data it is quite clear there is a huge overlap in the semantic domains of use of the two tags. One relatively clear difference i could see is that building=grandstand is almost exclusively used in a sports context while leisure=bleachers is also used elsewhere.

The way to proceed here is - as already hinted at a bit - to

  1. identify if there is a meaningful difference in de facto use between the tags that we can support in rendering and document what this difference is.
  2. develop a design that provides supportive feedback to mappers on this difference.
  3. adjust and test this design to work harmonically with the rest of the style.

What solutions might work on 2. is hard to say without having a clear picture on 1. Looking for inspiration in other map is always something you can try - but only in the sense of seeking inspiration, not in the sense of copying design.

Static point symbols will not work too well because

There are other options like tiled patterns or single symbol patterns.

leisure=outdoor_seating is a semantically somewhat similar concept but has a huge difference in so far it does not represent a physical structure but an abstract use of open space.

As said: A more concrete discussion on design will only be possible if we have a clear picture on point 1. But the difference in rendering will evidently be the key here, because - as said - only if we can come up with a differentiated design concept for both that provides mappers with meaningful feedback on both and their difference in meaning (which - as indicated - seems not very pronounced) we can really think about rendering in this style IMO.