gravitystorm / openstreetmap-carto

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

Labels of large areas in high zooms #4933

Open ppete2 opened 4 months ago

ppete2 commented 4 months ago

Please have a look at https://www.openstreetmap.org/relation/1070034 , a large forest. It's labels just in Zoom 12. If people zoom in, no label is displayed anymore. In my personal opinion it would be helpful to read the forest's label also in higher Zooms. I don't want to completely zoom out to the extend of an area to read the name of a large forest. The same applies to other large landuse= and natural= areas But maybe there are cartographical or technical issus which are against rendering them?

Z12 Z13

imagico commented 4 months ago

We generally stop labeling polygons once they reach a certain size in pixels:

https://github.com/gravitystorm/openstreetmap-carto/blob/master/project.mml#L1710

Right now, with our very limited label prioritization system (see #3880) this is essential because once a polygon approaches the size of the map area shown its significance for the map user drops below that of other elements shown while the current system would continue to give it priority over other elements.

Independent of that the problem of labels for large landcover polygons is the problematic incentive this creates to merge polygons of local landcover mapping into large, unmaintainable multipolygons as a means to place large labels in the map. This is often combined with assigning names that are not actually names of the landcover in question but of something else overlapping the landcover to some extent. In light of this i would rather look into re-evaluating the display of labels for various landcovers based on consistency in mapping than universally extending the labeling even further.

In the specific case shown both of these problematic mapping incentives are well demonstrated. The feature shown is a large multipolygon with a hundred members that can already be seen to hinder accurate mapping (mappers draw other landcovers above it like here and here rather than taking the effort to cut them out of the wood polygon in a semantically accurate way).

And the name used (Kobernaußerwald) is not actually the name of a wooded area but the name of a topographic feature (similar to larger features with similar names like Schwarzwald or Böhmerwald).

Related to #3982.

pnorman commented 4 months ago

once a polygon approaches the size of the map area shown its significance for the map user drops below that of other elements

No, we introduced it because without it you get labels showing up when the feature is much bigger than the screen. It was not because of blocking other labels, although any reduction of labels helps show others.

Displaying the Hudson Bay label on high zooms is never going to be useful, and the example we had was a a large military base.

imagico commented 4 months ago

It was not because of blocking other labels, although any reduction of labels helps show others.

I did not say it was - for reference: the original reasoning was explained in #1028.

The point is that labels for features of sizes beyond the displayed map is not useless per se (so the idea of @ppete2 to raise the threshold by one zoom level is not completely unreasonable), it just (a) tends to be lower significance than other features at such sizes - i.e prioritization based on polygon size does not work well any more and (b) is much harder to do in a way that works well for the map user, especially with the limited options we have with Mapnik/Carto.

We could think about extending the range of display of labels for large polygons by something like 1/2 to one zoom level - but that would only make sense IMO if the priority is lower for that than for the other symbols/labels shown. That is technically possible but would add so much complexity that i don't really think it is worth it.