Proposed edit of some `barrier=kerb kerb=raised` nodes

If you’ve been reading my posts about kerb tagging (1, 2), then you already know that StreetComplete places kerb=raised by itself on a node where a footway meets a road to mean “you might expect a crossing and lowered kerb here but there isn’t one”. Whether there are better ways of tagging this is currently being discussed here. The problem is that iD users have added barrier=kerb to such nodes because the validator in iD told them to. This leads to issues, because it’s interpreted as a raised kerb across the road. For example it stops OSRM from routing cars along the road.

The good news is that new nodes like this will no longer be created because of a recent change in iD, disabling the suggestion to add barrier=kerb to such nodes. I’m grateful to everyone involved that this has been fixed so soon after I spotted it.

The bad news is that there are now about 1,500 nodes tagged barrier=kerb kerb=raised that really shouldn’t have the barrier=kerb tag.

How would people feel about editing them all in one go, following the automated edit code of conduct?

I propose doing something like this

  • use Overpass (query) to get all barrier=kerb kerb=raised nodes on roads (i.e. highway ~ trunk|trunk_link|primary|primary_link|secondary|secondary_link|tertiary|tertiary_link|unclassified|residential), there are 1495 of them
  • check a few dozen manually and only proceed if they are clear tagging mistakes
  • for each suspicious node, retrieve the history (example API call)
  • find the changeset that added barrier=kerb; retrieve the changeset metadata (example API call) and see if it was created_by iD with resolved:outdated_tags:incomplete_tags >= 1
  • if yes, go back further in the changeset history to find the changeset that added kerb=raised; retrieve the changeset metadata (example API call) to see if it was created_by StreetComplete with comment “Add whether there is a crossing” or “Specify whether there are crossings at intersections of paths and roads”
  • generate a couple of OSC files, e.g. one for each grid square (which resolution is appropriate? in other words, how many changesets should there be vs. how big should they be?)
  • upload here for scrutiny and check manually, then after people have had a chance to check it, commit using JOSM, with a changeset comment linking to the discussion, etc.

Importantly, this excludes all situations where barrier=kerb was added before or at the same time as kerb=raised, or where they used a different editor than iD, or where kerb=raised wasn’t added by StreetComplete. We don’t want to retag anything where a human set the barrier=kerb tag on purpose.

It would require a few read-only API calls (no more than 4500) that could be spread out over a few hours to make sure that service levels are not affected.

Why not create a Maproulette challenge?

I don’t have any experience with Maproulette, but from what I can see, I think it works best when some human intervention is required. Using the steps above we should be able rule out that someone added the barrier=kerb on purpose to mean that there is a kerb across the road, so checking each one manually would not be a good use of anyone’s time.

Any thoughts on this?

I don’t have any experience with Maproulette

Me neither but I think it is possible to feed it an overpass query and let it create tasks from that.

1 Like

I did have a quick look at the docs. I think creating the task won’t be too difficult but is it worthwhile if we’re reasonably sure that in all cases the result will be to remove barrier=kerb?

note that Automated Edits code of conduct - OpenStreetMap Wiki still requires asking on talk mailing list

though by making this thread you still are above average in following rules listed there :slight_smile:


for edit itself, it looks fairly safe with history checking

2 Likes

Just fix the errors. :pray:

1 Like

Also the 530 barrier=kerb / kerb=no errors (introduced mostly by SC) should be fixed.

I am slowly reviewing them - and noticeable part of them is more subtle, not introduced by SC (or by wrong answers) and simple tag replacement does not help there.

Though maybe remaining ones are not like this.

Help in reviewing them would be welcome.

1 Like

I admit I was hoping that this had been superseded by the community forum! Is there someone who could please cross-post this to the mailing list, so I don’t surprise anyone who cares about kerbs?

talk, not tagging

1 Like

OOps, my mistake. Now posted in correct place: [OSM-talk] Proposed automated edit of some barrier=kerb kerb=raised nodes (forum crosspost)

@osmuser63783 please do check if any discussion is happening there

Thanks a lot! Will do

Here are 100 example nodes that I’m proposing to remove barrier=kerb from. (Discourse won’t let me add the full list but I can email them if someone is interested.)

I used the Overpass query to identify candidates (barrier=kerb kerb=raised on roads). There were 1410. Then I checked the changeset histories and found that 1059 of them conform to the pattern I described: where an edit by StreetComplete with the quest type “AddCrossing” set kerb=raised and a later edit using iD added the “missing” tag barrier=kerb.

My plan is to group them geographically before generating changesets.

Please let me know if you have any comments.

100 example nodes

Node: 571144 | OpenStreetMap
Node: 2405171 | OpenStreetMap
Node: 5307316 | OpenStreetMap
Node: 7080181 | OpenStreetMap
Node: 10799642 | OpenStreetMap
Node: 11584239 | OpenStreetMap
Node: 12135788 | OpenStreetMap
Node: 20958621 | OpenStreetMap
Node: 21434263 | OpenStreetMap
Node: 21520450 | OpenStreetMap
Node: 21993066 | OpenStreetMap
Node: 25430022 | OpenStreetMap
Node: 25533506 | OpenStreetMap
Node: 25627093 | OpenStreetMap
Node: 25917010 | OpenStreetMap
Node: 26127772 | OpenStreetMap
Node: 26782385 | OpenStreetMap
Node: 26807218 | OpenStreetMap
Node: 26821160 | OpenStreetMap
Node: 27306275 | OpenStreetMap
Node: 27783436 | OpenStreetMap
https://www.openstreetmap.org/node/29573946
Node: 31031623 | OpenStreetMap
Node: 31054741 | OpenStreetMap
Node: 31425456 | OpenStreetMap
Node: 31624842 | OpenStreetMap
Node: 31800226 | OpenStreetMap
Node: 32908736 | OpenStreetMap
Node: 33531248 | OpenStreetMap
Node: 33694223 | OpenStreetMap
Node: 35664995 | OpenStreetMap
Node: 36158707 | OpenStreetMap
Node: 36663663 | OpenStreetMap
Node: 36664676 | OpenStreetMap
Node: 44093467 | OpenStreetMap
Node: 44844495 | OpenStreetMap
Node: 45381476 | OpenStreetMap
Node: 46325245 | OpenStreetMap
Node: 46354085 | OpenStreetMap
Node: 46379898 | OpenStreetMap
Node: 56304486 | OpenStreetMap
Node: 56370163 | OpenStreetMap
Node: 56372825 | OpenStreetMap
Node: 56394099 | OpenStreetMap
Node: 57745463 | OpenStreetMap
Node: 59779158 | OpenStreetMap
Node: 59968158 | OpenStreetMap
Node: 65610795 | OpenStreetMap
Node: 67978069 | OpenStreetMap
Node: 78090346 | OpenStreetMap
https://www.openstreetmap.org/node/96794926
https://www.openstreetmap.org/node/100319784
https://www.openstreetmap.org/node/102751578
https://www.openstreetmap.org/node/102882275
https://www.openstreetmap.org/node/133280768
https://www.openstreetmap.org/node/148976089
https://www.openstreetmap.org/node/153048438
https://www.openstreetmap.org/node/158681180
https://www.openstreetmap.org/node/166346438
https://www.openstreetmap.org/node/171140633
https://www.openstreetmap.org/node/183737433
https://www.openstreetmap.org/node/185573016
https://www.openstreetmap.org/node/194308451
https://www.openstreetmap.org/node/203660975
https://www.openstreetmap.org/node/206328896
https://www.openstreetmap.org/node/224795639
https://www.openstreetmap.org/node/243682011
https://www.openstreetmap.org/node/246524272
https://www.openstreetmap.org/node/247744899
https://www.openstreetmap.org/node/248793341
https://www.openstreetmap.org/node/249398553
https://www.openstreetmap.org/node/249794435
https://www.openstreetmap.org/node/250287511
https://www.openstreetmap.org/node/251470624
https://www.openstreetmap.org/node/251503085
https://www.openstreetmap.org/node/251740911
https://www.openstreetmap.org/node/255704480
https://www.openstreetmap.org/node/260025537
https://www.openstreetmap.org/node/260025554
https://www.openstreetmap.org/node/261964296
https://www.openstreetmap.org/node/262482669
https://www.openstreetmap.org/node/266343293
https://www.openstreetmap.org/node/266636450
https://www.openstreetmap.org/node/266813264
https://www.openstreetmap.org/node/267359121
https://www.openstreetmap.org/node/268372248
https://www.openstreetmap.org/node/268986969
https://www.openstreetmap.org/node/269698915
https://www.openstreetmap.org/node/269915195
https://www.openstreetmap.org/node/270343383
https://www.openstreetmap.org/node/274493853
https://www.openstreetmap.org/node/276215789
https://www.openstreetmap.org/node/276229218
https://www.openstreetmap.org/node/277011695
https://www.openstreetmap.org/node/277369523
https://www.openstreetmap.org/node/278116712
https://www.openstreetmap.org/node/278600455
https://www.openstreetmap.org/node/278715948
https://www.openstreetmap.org/node/279804005
https://www.openstreetmap.org/node/280228274

2 Likes

Did you check all those objects manually?! Or if (hopefully) not, could you share an overpass query or tool that you used to check for that? (because I’d find that quite useful in other cases too!)

Leg los…
Alleine in PRAG zB sind mehr als 100 Fehler, Routing mit OSRM ist dort quasi nicht mehr sinnvoll möglich.

There was one person on the talk mailing list who had some questions / concerns, I’m still waiting to hear back from them to see if I have addressed the concerns.

In the meantime I have created a Wiki page to document the proposed edit and example changeset.

This is a global edit affecting nodes on all continents. Using S2 cells at level 10 - ca. 9km x 9km - to split it up gives me 419 changesets of between 1 and 45 nodes. This is a compromise somewhere in the middle between one massive global changeset, and 1,059 changesets for one node each. But let me know if you think I should make them smaller or bigger.

1 Like

No :sweat_smile: that would have taken a long time. I wrote a Python script. When I’m done, I can email you the code if you like. It’s not really a tool, it’s just a short script written specifically to do these checks, but of course it could be adapted for other checks if you know some Python.

thanks @osmuser63783 that would be appreciated! E-mail is fine, or you can put it somewhere online like github or whatever where others could benefit from it. (or I could do it on my github, if you agree to release it under some open license like MIT or GPLv3 or WTFPL or whatever)

I had a quick look at the ones you removed in London, which all look fine. Thanks for doing this.

1 Like

Thanks. @Everyone: My script ran last night. For the majority of barrier=kerb kerb=raised nodes on roads, this removed the barrier=kerb tag - but the script only touched those that I am sure were created by the “process” described above.

This query finds the remaining barrier=kerb kerb=raised nodes on roads, which need manual review. Many of them are actually at the position where a road ends and a footway begins, and are therefore perfectly fine (and rather useful to know about!).

This query limits the search to only those that are in the middle of a road (that is, not the first or last node of the highway way).

Is there appetite for a Maproulette challenge?

One of the escapees is barrier=kerb + kerb=raised + kerb:height= 5 cm

We do that here, nearby me new cycleway, both sides of the cycle crossing 5 cm (sharp) kerb (not mapped), just to pester cyclists, or incompetence of the road constructors.