gravitystorm / openstreetmap-carto

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

Render names on `natural=reef` #4898

Closed ech-an closed 5 months ago

ech-an commented 8 months ago

For most natural areas that are currently rendered, when they have a name, the name is rendered. However, this isn't the case for natural=reef areas. It would make sense for their name to be rendered, to be more consistent with other natural areas.

Examples of named reefs: Black Middens, z19 (https://www.openstreetmap.org/way/723976781) image

Bikini Atoll, z12 (https://www.openstreetmap.org/relation/3973841) image

Tices Shoal, z16 (https://www.openstreetmap.org/way/601883648), next to Island Beach, a named natural=beach area where the name is rendered (https://www.openstreetmap.org/relation/10948497) image

imagico commented 8 months ago

Thanks for the suggestion.

Currently 3149 of 47176 natural=reef features have a name tag, 1297 of those are nodes.

Not all of these feature actual names of the reefs though - in particular there are quite a few which carry the names of Atolls/Islands the reefs are part of or surrounding. Like:

https://www.openstreetmap.org/relation/3975771 https://www.openstreetmap.org/relation/10758958

So far none of the examples shown seems to be a valid case of a named natural=reef:

That does not mean there are no natural=reef features with a name suitable for us to render. But we need to carefully evaluate if name tagging of those is really on a level of consistency with the use of natural=reef in general that makes it suitable for us to render.

Based on what i can see so far i would in particular like to see us rendering place=archipelago (#3394) (in a proper way that is not based on ST_PointOnSurface()) before rendering names of natural=reef to avoid incentivizing mappers to tag names of atolls onnatural=reef.

ech-an commented 8 months ago

I disagree that those examples are invalid, except for the third which I only included to show a reef next to a different named natural feature, but I don't think that any specific example is really relevant so I won't argue.

My main reasoning for natural=reef names being rendered is that other natural areas are rendered with names, and it doesn't make sense for reefs to be excluded. Many names on other natural areas are accurate and valid, but many others are not. For example, Ochil Hills (https://www.openstreetmap.org/way/815391929), where the name in reality applies to the hills, but on the map applies to the natural=heath area.

Not rendering names on reefs also results in mistagging, because they will get tagged with things like place=islet in order for the name to render. For example, Retarrier Ledges (https://www.openstreetmap.org/relation/12005439).

Rendering names on reefs would also make it more obvious when a name is incorrectly applied.

Considering that there have been no updates to the place=archipelago issue for over 4 years, requiring that to be complete before considering this simple change is unfair.

imagico commented 8 months ago

For better understanding: We generally do not consider past decisions in the style authoritative. Our understanding of the map and its influence on mapping practice develop over time - as does actual mapping practice. We try to learn from that and adjust our decisions accordingly. Design of the map needs to maintain visual consistency of course, but the argument that because you are rendering A you also have to render B is not something we tend to subscribe to (not to mention that it also works the other way - we don't render B so we should also stop rendering A).

My comments are not meant to express that i am against rendering name labels for natural=reef, they explain my observations so far in that regard. I have not yet formed a conclusive opinion on the matter. But we render name labels for quite a lot of features where the name tag does not widely contain a proper name belonging to the feature in question (for example #4210) so the responsible approach is to have a careful look at labeling decisions.

My recommendation to developers who consider working on this: Look at implementing rendering of place=archipelago (#3394) first.

imagico commented 8 months ago

I vaguely remembered that we at one time had reef labels rendered - and indeed - this was removed unintentionally and without discussion in #3712, we still have the mss code for this:

https://github.com/gravitystorm/openstreetmap-carto/blob/fe6fd98994fc8909a5f07ea1bae8c0e9492530ef/style/amenity-points.mss#L2202

https://github.com/gravitystorm/openstreetmap-carto/blob/fe6fd98994fc8909a5f07ea1bae8c0e9492530ef/style/amenity-points.mss#L2232

So this is actually a regression and a change made without consensus. That does not change the analysis i provided above - but it puts this into a different context (i.e. that we had consensus to add this back in 2015 - see #1990).

dch0ph commented 6 months ago

As someone who knows the area, Black Middens is quite correctly tagged as a reef.

Reefs can be in the inter-tidal zone. The wiki has the helpful caveat "However note that small parts of reefs may be exposed at low tide, but not the entire feature. Reefs are never exposed at high tide.", i.e. a reef is essentially a upwards rock feature, distinguishing it from flatter features, natural = shoal or natural=bare_rock.

Given that we map the oceans at high water, the current tagging seems perfectly good.

On the other hand, isn't Tice's Shoal is more likely to a .... shoal?

imagico commented 6 months ago

No tagging discussion here please. This issue is about rendering name labels on natural=reef, not about rendering natural=reef in principle (which is undisputed).

What we are rendering natural=reef as and what has been the dominant use of the tag globally since we started rendering it is for shallow seabed areas permanently under water. If or not this is complying with what is written on the wiki about natural=reef or if it complies with the understanding of some English speaking parts of the world of what a reef is only is of little concern for us.

My view on this issue is that since the removal of label rendering of these was unintentional and undiscussed i would support re-introducing that to the previous state. A re-evaluation if the name tag is consistently used on natural=reef would still be in order independent of that. And introducing labels for place=archipelago would definitely be helpful to avoid abuse of names on natural=reef for those.

Please do not forget that - as i pointed out - the fraction of natural=reef features with a name tag is relatively small - especially also compared to the fraction that provide a reef=* tag detailing the nature of the reef more precisely (12k vs. 1.9k for polygon features). So even if it is important for you that a certain reef is labeled with its proper name (which is quite understandable) it is quite evident that the majority of mappers mapping these put more emphasis on physical characteristics. We need to avoid adjusting our design to the few prominent rock star features of a certain class at the expense of the long tail of less prominent but equally important work of mappers.