Modify

Opened 3 years ago

Last modified 3 years ago

#21341 new enhancement

Access restriction node without object

Reported by: Famlam Owned by: team
Priority: normal Milestone:
Component: Core validator Version:
Keywords: access highway node Cc: skyper

Description (last modified by skyper)

Split off from #20742

Replying to skyper:

Just found this node even without a barrier tag.

As a suggestion, possibly:

way[highway][!/^(access|motor_vehicle|vehicle)(:backward|:forward|:both_ways)?(:conditional)?$/] > node[/^(access|motor_vehicle|vehicle)$/][!barrier][!railway][!traffic_sign][!entrance][/^(access|motor_vehicle|vehicle)$/=~/^(no|private)$/][!/^(access|motor_vehicle|vehicle):conditional/] {
        throwWarning: tr("{0} without {1} on a public highway", "{0.tag}", "{1.key}");
}
URL:https://josm.openstreetmap.de/svn/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2021-09-03 03:12:33 +0200 (Fri, 03 Sep 2021)
Build-Date:2021-09-03 01:31:19
Revision:18193
Relative:URL: ^/trunk

Attachments (0)

Change History (6)

comment:1 by Famlam, 3 years ago

Description: modified (diff)

comment:2 by skyper, 3 years ago

Description: modified (diff)
Keywords: highway node added

Thanks, I will test.

comment:3 by skyper, 3 years ago

A quick test showed at least an overlap with "only one tag". Some of the more complex access tags should be added there.

I do not understand [!railway] and all the :conditional plus :both_ways on its own is not useful as it either could be simply dropped one of :forward or :backward should be present. Last but not least, I switched to warn for all access values but yes. So this is what I will test for now:

/* #21341 - access without primary tag */
way[highway][!/^(access|motor_vehicle|vehicle)(:backward|:forward)?$/] > node[/^(access|motor_vehicle|vehicle)$/][!barrier][!traffic_sign][!entrance][/^(access|motor_vehicle|vehicle)$/!~/yes/][number_of_tags() > 1] {
    throwWarning: tr("{0} without {1} on a public highway", "{0.tag}", "{1.key}");
    group: tr("missing tag");
}

comment:4 by Famlam, 3 years ago

Ah, I understand your point regarding :conditional (a conditional yes implies there's also a moment when it's not yes - requiring "an object" like a barrier or traffic sign to enforce that outside of the conditional times).

True about :both_ways, although the warning might be misleading (as it's not wrong either to use it, right?)

Regarding [!railway]: I was thinking about railway (level_)crossings that are permanently closed yet not demolished. (e.g. access=no / train=yes or so). About 300 worldwide.

I restricted it to private/no as I thought positive values (yes, designated, permissive, destination, ...) could occur on many more types of objects, like traffic_calming. It's not used a lot, but wouldn't be invalid I think.

Edit: another one to exclude is [!ford]
Edit2: and exclude [!amenity] (or all those listed in https://josm.openstreetmap.de/browser/josm/trunk/resources/data/validator/geometry.mapcss#L325 , like amenity=parking_entrance)

Last edited 3 years ago by Famlam (previous) (diff)

in reply to:  4 comment:5 by skyper, 3 years ago

Replying to Famlam:

Ah, I understand your point regarding :conditional (a conditional yes implies there's also a moment when it's not yes - requiring "an object" like a barrier or traffic sign to enforce that outside of the conditional times).

Yes, with :conditional I expect some other access tags for the time/transport_mode the conditions do not reflect.

True about :both_ways, although the warning might be misleading (as it's not wrong either to use it, right?)

Sure :both_ways is valid together with lanes:both_ways=* but it makes only sense in detailed :lanes-tagging in other situations less complex access tags (usually without any suffix) can be used.

Regarding [!railway]: I was thinking about railway (level_)crossings that are permanently closed yet not demolished. (e.g. access=no / train=yes or so). About 300 worldwide.

[/^(.*:)?railway$/ !~ /^(level_)?crossing$/] ?

I restricted it to private/no as I thought positive values (yes, designated, permissive, destination, ...) could occur on many more types of objects, like traffic_calming. It's not used a lot, but wouldn't be invalid I think.

Ah, yes, forgot designated and official. For the rest, I would expect them to be tagged on the highway, too, at least for middle nodes.

Edit: another one to exclude is [!ford]

nice catch

Edit2: and exclude [!amenity] (or all those listed in https://josm.openstreetmap.de/browser/josm/trunk/resources/data/validator/geometry.mapcss#L325 , like amenity=parking_entrance)

Well, I am not happy with a bunch of those connected directly to a highway and e.g. with amenity=parking_entrance access tags need to be on the highway, as-well, if mapped beyond. But fine, exclude them for now.
Altogether middle and end nodes might be handled differently, like in #20742

comment:6 by Famlam, 3 years ago

[/^(.*:)?railway$/ !~ /^(level_)?crossing$/] ?

Lets keep things simple, regexes do not need to start matching at the beginning :)
[/(^|:)railway$/ !~ /^(level_)?crossing$/]

Well, I am not happy with a bunch of those connected directly to a highway and e.g. with amenity=parking_entrance access tags need to be on the highway, as-well, if mapped beyond. But fine, exclude them for now.

Better a false negative than a false positive, right? ;)

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The owner will remain team.
as The resolution will be set. Next status will be 'closed'.
to The owner will be changed from team to the specified user.
Next status will be 'needinfo'. The owner will be changed from team to Famlam.
as duplicate The resolution will be set to duplicate. Next status will be 'closed'. The specified ticket will be cross-referenced with this ticket.
The owner will be changed from team to anonymous. Next status will be 'assigned'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.