#10083 closed defect (fixed)
Wrong *:lanes counting
Reported by: | mdk | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | 14.12 |
Component: | Core validator | Version: | latest |
Keywords: | lanes | Cc: | imagic |
Description (last modified by )
I have tagged a highway with oneway=yes
, lanes=2
and destination:lanes=A14|A2
. The validator complains about Number of lanes greater than *:lanes. When I change the value to destination:lanes=A|B
, the warning disappears. But also destination:lanes=A|B|C
didn't cause a warning, even if there are 3 values for only 2 lanes.
For me this looks like the validator is extracting a number from the value instead of counting the separated values.
I search taginfo for common usage of *:lanes tags and I found 3 different value types.
- According to the wiki http://wiki.openstreetmap.org/wiki/Lanes there are separate values for each lane separated by the '|' symbol. In this case the number of these delimiters must be count. The number of lanes is number of delimiters +1. This should be implemented (see #8519) but it doesn’t work correctly in this case. The most used keys are:
turn:lanes
,change:lanes
,destination:lanes
,access:lanes
,width:lanes
,bicycle:lanes
,bus:lanes
,psv;lanes
. - Some keys like
note:lanes
andsource:lanes
only have a single text value and could be ignored for lane counting. - The last group has keys like
proposed:lanes
orpiste:lanes
which have a single integer value.
We can distinguish between the different value types the following way (pseudo code):
if (value.contains('|')) { lanes = value.count('|') + 1; } else if (value.isInteger()) { lanes = value; } else { ignore this tag; }
Only use the value as integer, if there are absolutely no other characters than '0'-'9'!
In the attached file destination:lanes=A14|A2
shouldn't cause a warning, but bus:lanes=no|designated|yes
should cause a warning instead.
Perhaps this validator test messed up *:lanes
and lanes:*
values. The more unspecific keys like lanes:psv
or lanes:bus
really have integer values in contrast to psv:lanes
or bus:lanes
.
The "Lane and road attributes" map paint style is very helpful when working with these keys.
Attachments (1)
Change History (12)
by , 11 years ago
Attachment: | lanesWarnings.osm added |
---|
comment:1 by , 11 years ago
Cc: | added |
---|
comment:2 by , 11 years ago
Simon04 already answered most of the points.
But here mdk is correct:
- Some keys like
note:lanes
andsource:lanes
only have a single text value and could be ignored for lane counting.- The last group has keys like
proposed:lanes
orpiste:lanes
which have a single integer value.
These should not be checked.
The "Lane and road attributes" map paint style is very helpful when working with these keys.
Thank you - tried my best.
comment:3 by , 10 years ago
Description: | modified (diff) |
---|---|
Keywords: | lanes added |
follow-up: 7 comment:4 by , 10 years ago
comment:5 by , 10 years ago
Milestone: | → 14.12 |
---|
comment:7 by , 10 years ago
I think there should be a way for note:lanes
to be checked. There was a user here in the US that put the info for the lanes:forward
and lanes:backward
in that key instead, and he did this all across the US.
There should be a way to flag this to alert the user to fix it.
comment:8 by , 10 years ago
this is a one-time job. I don't see this strange error as something going to happen again, am I right? In that case I think a MapRoulette project with some overpass queries will be more valuable to the US community than a new JOSM test.
comment:9 by , 10 years ago
I guess you're right about it being a 'one-time job'. Just thought I'd mention it anyways.
comment:10 by , 10 years ago
comment:11 by , 10 years ago
There was no problem. The data is wrong, the value is A14]A2
as Simon already said.
destination:lanes = A14]A2
instead ofA14|A2
(closing bracket instead of pipe).Case 2,
note:lanes=foobar
, is hard to distinguish frombus:lanes:backward=yes
). So maybe we should exclude some specific keys from testing …