Hi everyone. I’m trying to map a sign that says that there are no motor vehicles allowed.

Photo of sign described below

The sign says motor vehicles are not allowed between 8pm-midnight on Fridays, Saturdays, and the day before a bank or public holiday.

Additionally, they are not allowed between midnight and 5.30am on Saturdays, Sundays and bank and public holidays.

I want to map this using the motor_vehicle:conditional to show that they are not allowed in these times.

In practice this means they’re not allowed:

Friday: 20:00-24:00. Saturday: 00:00-05:30; 20:00-24:00. Sunday: 00:00-05:30. Day before public holiday: 20:00-24:00. Public holiday: 00:00-05:30.

The difficulty arises where a public holiday or day before a public holiday also falls on one of the other days.

E.g. on Good Friday, the road would still be closed between 20:00-24:00 as normal, but should also follow the public holiday times of 00:00-05:30 in addition to rather than instead of the regular Friday times.

This is what I tried: PH -1 day 20:00-24:00; Sa 00:00-05:30,20:00-24:00; Su,PH 00:00-05:30; Fr 20:00-24:00

But shows that the rules furthest to the right override the previous rules. So putting Friday at the end means any public holiday that falls on a Friday gets the regular Friday times. Putting the PH times at the end gives the reverse issue.

Anyone got a solution?

Comment from Kovoschiz on 10 February 2022 at 11:21

For visibility, ask questions on OSM Help. Diary is more for showing your thoughts or solution. Not as many read this I assume.

You need to know comma and semi-colon have different meanings. Simplified explanation: , is for additional rules; ; for overriding rules.

The correct tag could be motor_vehicle:conditional=no @ (Fr,Sa, PH -1 day 20:00-24:00, Sa,Su 00:00-05:30; PH 00:00-05:30). The critical difference is =*, PH -1 day 20:00-24:00*. Verify,Sa, PH -1 day 20:00-24:00, Sa,Su 00:00-05:30; PH 00:00-05:30&lat=51&lon=0&mode=0&DATE=1650020460000 (set to England on Good Friday) by playing around with the date and syntax.

Comment from xyzl on 10 February 2022 at 12:13

Thanks so much. I had no idea about OSM Help!

Comment from H@mlet on 10 February 2022 at 18:53

Side note, many people think that it’s best to put a negative default, in this case motor_vehicle=no and reverse the conditional. Maybe not easier to express with the opening_hour syntax…

The rational is that routers that don’t support *:conditional tags will route users around this road, instead of risking to route through a closed road.

I’m not sure it’s a great idea, it might depend on the length on the detour, the ratio of open vs closed times, but I’ve read about that in many places.


Comment from xyzl on 11 February 2022 at 00:01

Good point - though my personal feelings on it are that doing that is tagging for the renderer and raises the risk of error in data entry and harder to update, since you have to think about the inverse of what’s actually posted on the sign! Putting in what’s on the sign means that any renderer could also theoretically reproduce what is actually on the sign too, for any reason that might come in handy.

Comment from Kovoschiz on 11 February 2022 at 11:09

On the other hand, I don’t want to disable too many roads during daytime. I do use the “most of the time” criteria with deciding motor_vehicle= default =yes or =no. In this case, it’s nighttime and on weekends.

@xyzl It’s not Tagging For Router if it is correct data. (Moreover many renderers only considers access=)

Login to leave a comment