Auf Deutsch, siehe weiter unten. (In German language look further down.)


In Germany, Austria and Switzerland, and probably other countries, there are traffic signs which regulate which vehicles may be overtaken by others.
For example, agricultural vehicles may be overtaken as an exception in an overtaking ban.

So far there seems to be no solution for mapping this situation in OSM.

According to taginfo, there are currently 195 occurrences of overtaking:conditional=yes @ agricultural.
The problem with this tag is that according to the convention of conditionals it means that agricultural vehicles are allowed to overtake others. However, it is those that are allowed to be overtaken.


What would you think about the following proposal:

where * stands for all vehicle types that are (passively) allowed to be overtaken or (passively) not allowed to be overtaken.

According to the example discussed above it would be:

And in combination:


In Deutschland, Österreich und der Schweiz und vermutlich weiteren Ländern gibt es Verkehrszeichen, welche regeln, welche Fahrzeuge von anderen überholt WERDEN dürfen.
So dürfen z.B. in einem Überholverbot als Ausnahme Landwirtschaftliche Fahrzeuge überholt werden.

Bisher scheint es keine Lösung für die Abbildung dieser Situation in OSM zu geben.

Gemäss taginfo gibt es momentan 195 Vorkommnisse von overtaking:conditional=yes @ agricultural.

Das Problem bei diesem Tag ist, dass er gemäss Konvention der Conditionals bedeutet, dass landwirtschaftliche Fahrzeuge andere überholen dürfen. Es sind aber jene, welche überholt werden dürfen.


Was würdet ihr denken zu folgendem Vorschlag:

wobei * für alle Fahrzeugtypen steht, die (passiv) überholt werden dürfen oder (passiv) nicht überholt werden dürfen.

Gemäss weiter oben diskutiertem Beispiel wäre es dann:

Und in Kombination:


I like the tagging scheme which should be precise enough for all purposes. Maybe there is a better term for “be_overtaken” - this doesn’t sound good to my non-native ear.

At least in Germany, there’s also this rather new sign


from 2017, which means: overtaking not allowed, not even single-track vehicles. Where the original one only prohibited overtaking double-track vehicles. Both actually only apply to motorized vehicles, so bicycles can always overtake each other.

I completely agree that we’d need to specify who is forbidden to overtake in addition to whom they are forbidden to overtake. So you’d probably need to account for that in your proposal as well.

But we don’t want to end up having to tag the regular sign with motor_vehicle:overtake:double_tracked_motor_vehicle=no. Clearly, there must be a better way?

Well, I’m only in ‘OSM-things’ for about 2 months …
I nonetheless wanted to try to do something about it.

Regarding the new sign you postet:
According to my suggestion that would be a combination of


Or is there an existing term to ‘concatenate’ bicyle and motorcycle, into something like singletrack?

In Switzerland, the usual sign for overtaking=no also means:
“The signal “Overtaking prohibited” (2.44) prohibits drivers of motor vehicles from overtaking moving multitrack motor vehicles and tramways.”

I have no idea, if the prohibition of overtaking with the usual sign only applies for multitrack motor vehicles also in other countries.
However, if not, they do not need such a sign as you presented anyway.

What term instead of ‘be_overtaken’ would you suggest?

I’m also no english native speaker of course.
‘being_overtaken’ is perhaps more correct linguistically? But longer.
Perhaps an english native speaker can help here …

In any case, the important goal is to make it clear that it is the type of vehicle that is being overtaken and not the one that is overtaking itself.

The tagging for acricultural vehicles being allowd to overtake other vehicles where overtaking generally is not allowed would be



overtaking:conditional=yes @ agricultural

means agricultural vehicles may be overtaken by any kind of vehicle. That is how I understand the wiki page to key:overtaking.

Using these options should allow to tag every combination of which kind of vehicle is allowd to overtake and which kind of vehicle may be overtaken. To use the example of @Nadjita:

overtaking:motorcar:conditional=no @ bicycle

(+ mofa, moped, motorcycle)

according to the Wiki to conditinals I understand it to the contrary: agricultural vehicles are the only ones which are allowed to overtake.
It seems, I’m not the only one …

1 Like

All the existing tags (no matter whether the vehicle is part of the key or part of a condition) do indeed refer to the vehicle doing the overtaking. This is a gap in our data model, i.e. something we cannot properly map with existing tags, so it’s great to see a proposal to address it. :+1:

I guess the question is whether we need the ability to express the full set of possible combinations of “vehicle x is (not) allowed to overtake vehicle y” – which makes things very complex – or if we can get away with the straightforward solution of a be_overtaken key.


Agreed, and as well

Nevertheless using the model I sketched above offers a very simple option to tag any thinkable condition in regard of overtaking. Maybe too simple for OSM … :wink:

That would mean that conditional restrictions work differently for overtaking compared to every other key. I don’t like that.

If we go that route, it should be a new kind of condition which explicitly refers to a second vehicle. Something like this:

overtaking:conditional = yes @ other_vehicle_is:agricultural

(Could be something shorter than other_vehicle_is, of course, as long as it has that meaning.)

1 Like

Could be something shorter than other_vehicle_is, of course, as long as it has that meaning

why not just “overtaken”

no @ overtaken:bicycle

That’s exactly the reason for me to suggest something else.

Conditionals always challenge my mind. So I would have liked a less complex solution.
However, it is probably only a matter of time until a state invents a traffic sign according to which agricultural vehicles may only be overtaken from 20.00 - 06.00 a clock.

Therefore the proposal with
overtaking:conditional = yes @ overtaken:bicycle
might be wiser

If we also treat ‘overtaken’ as a property like ‘weight’, would it be possible to lump bikes and motorcycles together?
overtaking:conditional = yes @ overtaken (bicycle;motorcycle)
or would this one work?
overtaking:conditional = yes @ overtaken:bicycle;motorcycle

How about a (hpyothetical) sign which forbids bicycles and motorcycles being overtaken from 8 to 20?
overtaking:conditional = no @ overtaken:bicycle;motorcycle AND 08:00-20:00

1 Like

With the above given sign by Nadjita however I realise, that bycicles are allowed to overtake bicycles - I guess …
What about that?

What about supporting other values than just yes and no? overtaking=agricultural could allow overtaking of slow traffic. This would require fewer conditionals, which are inherently hard to support. Could also solve things like single-track vehicles: overtaking=single-track or overtaking=bicycle;motorcycle if that’s preferred. Not saying it’s perfect, but I would keep the use of :conditional to a minimum if possible.

This would still lead to the following tagging for the 3 German overtaking signs:

image overtaking:hgv=single-track

image overtaking:motor_vehicle=single-track

image overtaking:motor_vehicle=no

Not great…

In your suggestions without the signals it is not clear, if it means who is allowed to actively overtake or which vehicle type is being allowed passively being overtaken.

The value would describe if and who you are allowed to overtake, the :hgv suffix is standard for limiting a restriction to a certain type of vehicle/person.

Besides the more practical concern that this would seem to be information that is not really actionable, the solutions all grate really bad with me from a language pov.

And as @Tordanik pointed out any half complete scheme needs to be able to model the overtaking - overtaken tupels.

So something like

overtaking:permitted=overtaking1|overtaken1;overtaking2|overtaken2 ....
overtaking:forbidden=overtaking3|overtaken3;overtaking4|overtaken4 ....

or using conditional syntax:

overtaking:conditional= yes @ (overtaking1|overtaken1;overtaking2|overtaken2 ....) ; no @ (overtaking3|overtaken3;overtaking4|overtaken4 ....)

(parenthesis only required if there is actually a list of overtaking - overtaken tupels).


overtaking= …

providing the default.


overtaking:conditional=yes @ motorcar | hgv

Note: using a vertical bar as delimiter in an overtaking - overtaken tupel makes sense as it is already essentially a reserved character for structured tag values.

Thanks Simon :pray: !!

Veery helpful to have an input from a native-speaker and IT-professional … :+1:

I like Simon’s proposal with
which I can understand faster.

But again: If there are (or will be) situations with other conditionals like ‘only at certain times’, the conditional syntax might be preferable.

Please don’t. That will be a mess with all xyz:lanes:conditional tags which already make use of the vertical bar. And because even overtaking:lanes is already in use I’m sure at some point we’re going to need overtaking:lanes:conditional.

Here are a few comments to proposals above

  • overtaking=no should be (as it always was) the “standard” overtaking forbidden sign. This is both for simplicity and for compatibility with already tagged signs. It will imply whatever the local rules are. In some part of Europe it will allow overtaking of single-tracked vehicles.

  • overtaking:permitted=* - this is easy to understand, but hard to use: almost every overtaking sign would need one of these. We need a tag to add in the rare special cases, not one to add in most places.

  • overtaking:VEHICLE:overtaken:VEHICLE seems to me very easy to understand and to use, given my first comment above. It would only need to be added in cases of the new image and the old overtaking of slow vehicles imageimage. If the restriction is not explicitly limited to vehicle types doing the overtaking, the first “VEHICLE” is not required, shortening the tag to overtaking:overtaken:VEHICLE or in general terms overtaking[:VEHICLE][:overtaken:VEHICLE].

  • using any :conditional syntax should be avoided if possible. The number of different options is limited and therefore should be mapped to simple tags.