gravitystorm / openstreetmap-carto

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

Labeling of amenity=parcel_locker incompatible with the goal of constructive mapper feedback #4629

Open imagico opened 2 years ago

imagico commented 2 years ago

As a result of #4512 we now have a labeling logic for amenity=parcel_locker of the form:

https://github.com/gravitystorm/openstreetmap-carto/blob/9bda286762d8a494a7337df6ee10cb14b0f637fa/project.mml#L1462

Technically this renders as a label the brand (see https://github.com/gravitystorm/openstreetmap-carto/issues/4575#issuecomment-1158651857 for some comments on the specific semantic issues of that tag), the operator or the name - whichever is tagged, in that order of preference, plus the ref tag, separated by a newline if there is a (brand or operator or name).

As already explained in the PR (https://github.com/gravitystorm/openstreetmap-carto/pull/4512#issuecomment-1100308448) this renders features tagged amenity=parcel_locker + name=foo with a foo label while the name tag of those features practically never contains an actual name and almost always contains a compound labeling string subjectively designed to the individual mappers liking. But it is even worse than just plainly rendering the name tag, it essentially communicates to the mapper: You can tag your subjectively desired labeling string in either name, brand or operator - it does not matter where, it is all the same. So it essentially actively sabotages attempts at supporting consistent use of tags.

I was not sure if i should open this issue considering i already brought this matter up in #4512 and this was merged without addressing my concern (which is fine). But it is likely that with the lot of noise on that PR other maintainers were not consciously aware of this problem. So what i essentially want to find out with this issue is if we still have consensus on what for the whole history of this style has been a core guiding principle - to provide constructive mapper feedback, to support mappers in consistent use of tags and to be intuitively understandable for mappers in how a certain tagging results in the rendering we produce. If we still have consensus about this goal this labeling logic can't be acceptable and if we accept this labeling logic we clearly abandon this goal.

pnorman commented 2 years ago

I don't agree that there is a problem with using multiple tags to derive the label, but would consider a PR changing it to just render the name.

Would you only render brand, plus maybe ref?

imagico commented 2 years ago

I am not sure what you are saying:

Would you only render brand, plus maybe ref?

See https://github.com/gravitystorm/openstreetmap-carto/pull/4512#issuecomment-1100387905 (and https://github.com/gravitystorm/openstreetmap-carto/issues/4575#issuecomment-1158651857 regarding the principal issues of the brand concept and the lack of a clear 1:1 relationship between real world features and brands).

Independent of what is the most meaningful information to display and what is the most consistently tagged one i would avoid a COALESCE() of different tags, especially if this is embedded within additional complexity. I would also prefer if concatenations of different tags would be clearly visually distinguished (though i understand the options to do so are fairly restricted with the limitations of carto - https://github.com/mapbox/carto/issues/347). Note the latter is of course not a problem unique to amenity=parcel_locker, we also have this for addresses:

https://github.com/gravitystorm/openstreetmap-carto/blob/a2077c0c8d40fb7f6d308b4ca4e8941d4c8b699a/style/addressing.mss#L33-L50

pnorman commented 2 years ago
  • do you disagree that coalescing brand, operator and name communicates to the mapper: You can tag your subjectively desired labeling string in either name, brand or operator - it does not matter where, it is all the same?
  • do you disagree with the assessment that the labeling logic used here is not intuitively understandable for the mapper, especially since practically the tags brand, operator, name and ref will often have overlapping content?

I do not find anything with coalescing that conflicts with general purpose of the style. In particular, I find it neutral on "it's an important feedback mechanism for mappers to validate their edits and helps to prevent unfavorable fragmentation of tag use" and positive on the other three purposes.

  • do you disagree with the assessment that the name tag is almost never used on amenity=parcel_locker to tag an actual name?

I'm not sure what you mean by an actual name.

Note the latter is of course not a problem unique to amenity=parcel_locker, we also have this for addresses:

I don't consider it a problem for addresses either.

I'm not a huge fan of the technical complexity in using labels that aren't a single database column, but that's a technical objection based around adding complexity to SQL, MSS, and reworking indexes.

imagico commented 2 years ago

I do not find anything with coalescing that conflicts with general purpose of the style. In particular, I find it neutral on "it's an important feedback mechanism for mappers to validate their edits and helps to prevent unfavorable fragmentation of tag use" and positive on the other three purposes.

That is not what i asked.

I find it pretty obvious that the labeling logic used here is non-intuitive for the mapper (meaning the vast majority of mappers will not develop a correct understanding of how the label derives from the tagging merely by studying the map) and can lead to various irritating and misleading effects when a mapper changes tagging and is therefore counterproductive in terms of mapper feedback.

To give an example:

You have a node with amenity=parcel_locker and name=DHL Packstation 120 and a mapper adds brand=DHL Packstation and ref=120. The label does not change:

parcel locker

but the label is sourced from different tags in both cases.

I'm not sure what you mean by an actual name.

I believe the technical term here in English is proper name, as in

https://en.wikipedia.org/wiki/Proper_name_(philosophy)

The name tag by broad consensus and in practical use in general is predominantly used to record proper names. However on amenity=parcel_locker it almost never is. If you disagree i would ask you to point to examples where the name tag of an amenity=parcel_locker contains a proper name.

I'm not a huge fan of the technical complexity in using labels that aren't a single database column, but that's a technical objection based around adding complexity to SQL, MSS, and reworking indexes.

My concern has nothing to do with technical complexity, it is about the social function the style has in the OSM community.

Elefant-aus-Wuppertal commented 2 years ago

The name tag by broad consensus and in practical use in general is predominantly used to record proper names. However on amenity=parcel_locker it almost never is.

+1

Elefant-aus-Wuppertal commented 2 years ago

I find it pretty obvious that the labeling logic used here is non-intuitive for the mapper

This is true. But maybe, just concentrating on both the Tags brand and ref to render could make more sense here than concentrating on putting out the parcel locker's text out of one single key-value-pair so that this could be (intuitively) then the name only.

So as you said, dropping the rendering of name=* at parcel lockers completely could give mappers the feedback to user other tags, brand and ref. Of course these are two tags here and not just one like for ameniy=atm with its operator.

In my eyes, it's the same at mountain peaks for example. For having the height rendered, there's the tag ele=* which is used together with name.

The only special thing is in this case, that the "name rendered" is constructed out of a combination of two values which come both not from the name-tag, but come from other tags.

Rendering brand+ref and not name prevents misusing the name tag. For amenity=atm and amenity=vending_machine operators for example we did similar things for it.

imagico commented 2 years ago

In my eyes, it's the same at mountain peaks for example. For having the height rendered, there's the tag ele=* which is used together with name.

Note for mountain peaks we match the ele tag against a regular expression:

https://github.com/gravitystorm/openstreetmap-carto/blob/4b58c59093f3973566ad8f0ee679560e8c6c8d75/project.mml#L1468

to make sure we only render ele values which are numbers (and we round them to integer meters).

Rendering brand + ref or operator + ref would quite definitely be an improvement over the status quo. I don't think either of these is ideal though without a differentiation in styling that shows which part of the label is which tag.

We have one other case (in addition to elevations, addresses and amenity=parcel_locker) where we compose a label from multiple tags - that is motorway junctions:

https://github.com/gravitystorm/openstreetmap-carto/blob/4b58c59093f3973566ad8f0ee679560e8c6c8d75/style/roads.mss#L2757-L2764

There are two important things that makes this much less prone to confusion:

RicoElectrico commented 2 years ago

My arguments for leaving as-is:

Elefant-aus-Wuppertal commented 2 years ago

An option to remove/drop the rendering of a name=* (if tagged) on parcel_lockers would it maybe be, when the name suggestion index (whose presets are used for parcel lockers in most cases) would have removed all "name" tags in its parcel locker presets , but unfortunately, this isn't the case at the moment, even though the "names" there aren't those and in all cases it is either completely the same as the value for "brand" or its a combination of "brand" + the word "parcel locker" and/or sometimes people put additionally "ref" in it (here, however, there is also far from agreement, with one NSI writing that one in the name, with the other that...)

Elefant-aus-Wuppertal commented 2 years ago

The problem is also, that if the NSI has a "name" in a parcel_loker preset and the preset for this parcel locker is in use, but then comes a fitting parcel locker where the name isn't tagged, the NSI shows this parcel locker als tagged imcompletely.

I have seen so many changesets where just the suggestions of NSI were implemented on those amenities without any other changes or something, just to satisfy NSI. So in bottom line, this will lead to that the parcel lockers of specific brands will all get tagged with a name.

But that is not so much a concrete decision in individual cases or a decision made by the local community, where a name is being considered, but the NSI simply leads to it.

I know, it seems I should rather open an issue at the NSI for this than discussing this here, but just for showing how specific tagging methods get in use on OSM today. The NSI has much impact, and about what has been decided to implement in the presets there, many "small" (sorry for that word) local mappers do not know, but just using the preset when people see there is one which fits to the parcel locker's brand.

Elefant-aus-Wuppertal commented 2 years ago

a differentiation in styling that shows which part of the label is which tag

interesting thought!