Yes, maybe one problem is that it isn't clear if restriction:vehicle overrules restriction+except. I like your idea of not using the except tag but rather something like restriction:value=unrestricted. Actually that would be the first useful combination of restriction and restriction:vehicle that I have heard of. But unfortunately this is neither mentioned in the wiki nor does it seem to be used that way.

All the other cases where I saw a combination of restriction and restriction:vehicle were either redundant like

restriction=no_left_turn
restriction:hgv=no_left_turn

or they used the except list to resemble the restriction:vehicle tag to satisfy routers that do not understand restriction:vehicle like this (often in addition to the restriction:vehicle tag):

restriction=no_left_turn
except=motorcar;moped;bicycle;schoolbus;etc;
restriction:hgv=no_left_turn

And since it isn't clear from the wiki how a 'complete' list of except values is supposed to look like this doesn't seem to be ideal, either.

There are even cases where some kind of except is used with a condition:
https://www.openstreetmap.org/relation/8117243

restriction=only_straight_on
restriction:conditional=only_straight_on @ (length>10 m)
except=bicycle;moped;motorcar
except:conditional=vehicle @ (length <= 10 m)

but could just be:

restriction:conditional=only_straight on @ (length>10)

I'm still wondering: Do we ever need different restriction values for different vehicles, or for different conditions, for the same relation? I mean it's already clear that we need some way to express that a restriction is only valid for certain vehicles, but beyond that I don't think multiple restriction values should be used by the same relation.

For example something like this:

restriction=no_right_turn
restriction:vehicle=no_left_turn

seems problematic, because we only ever have one set of from/via/to-role members per restriction relation, which are never vehicle-specific, or depend on a condition.

By the way, the wiki mentions another 'global' tag: `implicit`. Just like `except` it is not clear to me if this is meant to modify only the general restriction tag, or also the more specific ones like restriction:vehicle, or maybe both/all? And what if one wants to resemble a situation where a restriction is implicit for one but not the other vehicles?


On 28.10.22 23:59, Tobias Knerr wrote:
On 28.10.22 22:06 easbar.m...@posteo.net wrote:
Quite obviously this isn't ideal and as far as I can tell this is the exact reason we have the two approaches (one for excluding vehicles and another for including them).

Historically, I'd say the reason we have two approaches is that the "except" key is older than conditional restrictions, and is a special solution that only exists for restriction relations.

If you want to make this more organized, then I think the approach that is most consistent with other tags would be to deprecate except=* in favour of an "unrestricted" value. This could then be used as

restriction = no_left_turn
restriction:bicycle = unrestricted

This neatly mirrors what is commonly done with other tags:

access = no
[access:]bicycle = yes

_______________________________________________
Tagging mailing list
Tagging@openstreetmap.org
https://lists.openstreetmap.org/listinfo/tagging

_______________________________________________
Tagging mailing list
Tagging@openstreetmap.org
https://lists.openstreetmap.org/listinfo/tagging

Reply via email to