One feature, one OSM element

I stumbled upon One feature, one OSM element best practice.

In short, the rule says:

It seems like this rule has not been followed well in mapping of many cities in Israel. For example, Haifa was mapped as place=city by relation 1387888 and by node 1656107649

Specifically for places, I’ve mentioned similar concerns here.

There are worldwide differences in place tagging. I’ve tried summarizing the major different ways to tag places in this wiki draft (I’d appreciate if you review it) but I got busy and it’s currently an incomplete draft.

Although conflicting with the rule above, it is unfortunately common in some places to use a place label/admin_centre node and also a place relation.

However, the practice of tagging an area and a node with the same place is quite rare and yet used in Israel. This causes many problems such as double-name rendering in osm.org.

place node and place border are different features. But its are closely linked. Manually this lis is made by dupplicating 2 tags on it.
In some countries (for example Russia and some other countries of exUSSR) places (hamlet,vilages,cities) has non administrative border but these borders are needed for address porpuses to avoid setting of addr:city on every object.
http://wiki.openstreetmap.org/wiki/RU:Addresses#.D0.A1.D0.BE.D0.BA.D1.80.D0.B0.D1.89.D0.B5.D0.BD.D0.BD.D0.B0.D1.8F_.D1.81.D1.85.D0.B5.D0.BC.D0.B0.2C_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D1.83.D0.B5.D0.BC.D0.B0.D1.8F_.D0.B2_.D0.A0.D0.BE.D1.81.D1.81.D0.B8.D0.B8_.D0.B4.D0.B5-.D1.84.D0.B0.D0.BA.D1.82.D0.BE

shortly in English
http://wiki.openstreetmap.org/wiki/Addresses#Russia

The is no problem with having a nodes with label and admin_center roles in a relation. These are standard members of boundary relations.

On the other hand, like any relation member, the relation’s tags should not be duplicated in it, and such nodes should therefore have no tags.

Hi wowik,

https://wiki.openstreetmap.org/wiki/Places says:

When the border of a place (hamlet, vilage, city) is mapped as an area, using either a closed way or a multypolygon, the “place” tag should be put on this area without duplicating it in a node.

How you can “link” place border and place node?
At present time its are linked together by equal name and place tag values.
For multipolygon border only inner and outer members allowed by wiki. Some people add label role and include node to multypolygon.
For example in Belarus almost all hamket/village/city mapped that way. But it is not described in wiki and JOSM validator generate a message.

What is the purpose of having a place node when the place has a border/area?
I’m sure no one likes seeing duplicate labels…
This is exactly what the “One feature, one OSM element” best practice is trying to avoid.

From a mapping perspective, the geographic location of the place is defined precisely by the border/area.

I think there’s a slight misunderstanding. I believe Wowik and I are both talking about:

  • node with a place tag

  • relation with a place tag

  • The node is a label or admin_centre of the relation

  • If it’s an adminstrative boundary relation, then the relation also has the boundary member ways.

  • If there is no adminstrative boundary, then the relation is multi-polygon with a single untagged outer way.

This scheme conflicts with “one element, one tag” and yet is a common solution to the place mess worldwide. It does not render twice nor does it show in Nominatim twice. Double-rendering and double results only occurs because we have a place node + landuse=residential area with the same name.

See this for the multipolygon style, when there is no admin boundary.

https://www.openstreetmap.org/relation/6722597

See this for the admin boundary style:

https://www.openstreetmap.org/relation/1403095

Note that a “place” tag is not present for the relation in this case, and that’s because I tagged this and I prefer not having double-places and this works for the admin boundary variation, but I don’t think it works for multipolygon variation. But some people do add the “place” tag for either variation (e.g. your Haifa example).

Deciding where the label will show, simplifying some data consumers. I think Carto does not even render place areas, making this essential.

Edit: I fixed some details.

And by the way, Haifa does not render twice. We have far worse tagging examples, e.g. Bet Oren:

https://www.openstreetmap.org/relation/1387888#map=16/32.7291/35.0093

Place: https://www.openstreetmap.org/node/278473938
landuse: https://www.openstreetmap.org/way/94521581

It seems no programs treat those as a single place, and they are not linked internally. Thus the double rendering and double Nominatim/Osmand search results.

Haifa has the same two labels issue as Bet Oren:
place: https://www.openstreetmap.org/relation/1387888#map=14/32.8202/35.0037 and its label member http://www.openstreetmap.org/node/1656107649
landuse: http://www.openstreetmap.org/way/368182252#map=19/32.79736/34.99051

Sorry! my bad.

It’s also rendered twice (but the second one is a little hard to spot due to the text density in the area).

These are separate issues where a duplicate name is put (wrongly IMO) on the landuse area creating label duplication.

That principle is even more generally applicable:

This implies, for example, that names shouldn’t be duplicated between a relation and a member thereof.

You are right.

It appears people duplicate because only place nodes render and place areas or relations do not. The following Carto change may end this habit, if I’m understanding the pull request correctly: https://github.com/gravitystorm/openstreetmap-carto/pull/2939

So after this update, we can retag things like Megdalim, that have no admin boundary, with simply a way place. https://www.openstreetmap.org/node/768053122