Opened 7 years ago
Last modified 4 years ago
#15512 new defect
cycleway=lane not showing one side when,.......
Reported by: | anonymous | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Internal mappaint style | Version: | tested |
Keywords: | dash, oneway, bicycle, lane, cycleway | Cc: |
Description
When on highway unclassified for example, the cycleway=lane is set, you get on both side the purple dash, when you set the road on oneway=yes, you get the right side this purple dash, all okay.
BUT,
when you set then oneway:bicycle=no, exception undersign by the traffic_sign on both sides of the road, this purple dash should be on both sides, it is not.
On both sides there is a marked lane(cycleway).
Attachments (1)
Change History (18)
comment:1 by , 7 years ago
Component: | Core mappaint → Internal mappaint style |
---|
by , 7 years ago
Attachment: | dashwrong.png added |
---|
comment:2 by , 7 years ago
https://www.mapillary.com/map/im/FpE4bs3upWF7ItQjxVrsbQ
There is a cycle symbol on the way (on both sides red lane), cycleway=lane
oneway=yes from the other side.
the undersign says oneway:bicycle=no
http://overpass-turbo.eu/s/teF
the way
http://www.openstreetmap.org/way/6765746
there should be dash on both sides.
JOSM version 13053
comment:3 by , 7 years ago
I can confirm this is a bug. I already had a quick look at the code and it seems a fix is not so trivial as I thought due to the current implementation with left/right hand traffic. I think I'll have a look at this again next month (if noboby else is faster).
comment:5 by , 7 years ago
/*****************/ /* cycleway tags */ /*****************/ /* prepare lane */ way[oneway?][cycleway=lane]:righthandtraffic::core_cycleway, way[oneway=-1][cycleway=opposite_lane]:righthandtraffic::core_cycleway { set laneRight; set righthandtr; } way[oneway?][cycleway=opposite_lane]:righthandtraffic::core_cycleway, way[oneway=-1][cycleway=lane]:righthandtraffic::core_cycleway { set laneLeft; set righthandtr; } way[oneway?][cycleway=lane]!.righthandtr::core_cycleway, way[oneway=-1][cycleway=opposite_lane]!.righthandtr::core_cycleway { set laneLeft; } way[oneway?][cycleway=opposite_lane]!.righthandtr::core_cycleway, way[oneway=-1][cycleway=lane]!.righthandtr::core_cycleway { set laneRight; } way[cycleway:left=lane]::core_cycleway { set laneLeft; } way[cycleway:right=lane]::core_cycleway { set laneRight; } way[oneway=no][cycleway=lane]::core_cycleway, way[!oneway][cycleway=lane]::core_cycleway { set laneLeft; set laneRight; } /* prepare shared_lane */ way[oneway?][cycleway=shared_lane]:righthandtraffic::core_cycleway { set shared_laneRight; set righthandtr; } way[oneway=-1][cycleway=shared_lane]:righthandtraffic::core_cycleway { set shared_laneLeft; set righthandtr; } way[oneway?][cycleway=shared_lane]!.righthandtr::core_cycleway { set shared_laneLeft; } way[oneway=-1][cycleway=shared_lane]!.righthandtr::core_cycleway { set shared_laneRight; } way[cycleway:left=shared_lane]::core_cycleway { set shared_laneLeft; } way[cycleway:right=shared_lane]::core_cycleway { set shared_laneRight; } way[oneway=no][cycleway=shared_lane]::core_cycleway, way[!oneway][cycleway=shared_lane]::core_cycleway { set shared_laneLeft; set shared_laneRight; } /* prepare track */ way[oneway?][cycleway=track]:righthandtraffic::core_cycleway, way[oneway=-1][cycleway=opposite_track]:righthandtraffic::core_cycleway { set trackRight; set righthandtr; } way[oneway?][cycleway=opposite_track]:righthandtraffic::core_cycleway, way[oneway=-1][cycleway=track]:righthandtraffic::core_cycleway { set trackLeft; set righthandtr; } way[oneway?][cycleway=track]!.righthandtr::core_cycleway, way[oneway=-1][cycleway=opposite_track]!.righthandtr::core_cycleway { set trackLeft; } way[oneway?][cycleway=opposite_track]!.righthandtr::core_cycleway, way[oneway=-1][cycleway=track]!.righthandtr::core_cycleway { set trackRight; } way[cycleway:left=track]::core_cycleway { set trackLeft; } way[cycleway:right=track]::core_cycleway { set trackRight; } way[oneway=no][cycleway=track]::core_cycleway, way[!oneway][cycleway=track]::core_cycleway { set trackLeft; set trackRight; } /* render lane */ way.laneRight::core_cycleway { width: 2; color: bicycle#b100ff; dashes: 6, 10; offset: 0 - (prop("width", "default") / 2) - 2; major-z-index: 2.1; modifier: true; } way[prop("laneLeft","core_cycleway")]::core_cycleway2 { width: 2; color: bicycle#b100ff; dashes: 6, 10; offset: (prop("width", "default") / 2) + 2; major-z-index: 2.1; modifier: true; } /* render shared_lane */ way.shared_laneRight::core_cycleway { width: 2; color: bicycle#b100ff; dashes: 6, 3; offset: 0 - (prop("width", "default") / 2) - 2; major-z-index: 2.1; modifier: true; } way[prop("shared_laneLeft","core_cycleway")]::core_cycleway2 { width: 2; color: bicycle#b100ff; dashes: 6, 3; offset: (prop("width", "default") / 2) + 2; major-z-index: 2.1; modifier: true; } /* render track */ way.trackRight::core_cycleway { width: 2; color: bicycle#b100ff; dashes: 25, 8; offset: 0 - (prop("width", "default") / 2) - 2; major-z-index: 2.1; modifier: true; } way[prop("trackLeft","core_cycleway")]::core_cycleway2 { width: 2; color: bicycle#b100ff; dashes: 25, 8; offset: (prop("width", "default") / 2) + 2; major-z-index: 2.1; modifier: true; } /* render opposite */ way[cycleway=opposite]::core_cycleway { object-z-index: 1; width: +0; color: bicycle#b100ff; dashes: 4,10; } node[cycleway=lane], node[cycleway=opposite_lane], node[cycleway=track], node[cycleway=opposite_track], node[cycleway=opposite] { icon-image: "presets/misc/deprecated.svg"; set icon_z17; }
follow-up: 10 comment:6 by , 7 years ago
It looks simpler than that. I don't see any reference to oneway:bicycle
key in our map paint style, so I don't see how it could work. Or am I missing something?
comment:7 by , 7 years ago
Keywords: | dash oneway bicycle lane added |
---|
follow-up: 11 comment:8 by , 7 years ago
oneway=yes and cycleway=lane makes a dashed line on one side either for right or left handed.
If there are not two dashed lines then a mistake (made by tagger) in tagging is undone in JOSM visualisation, now there is 1 dashed line.
Tagger should always use cycleway:right or left with oneway and a one side cycleway.
A mistake by a tagger is in mapcss corrected, this can not be right. Visualisation must be true, also to see wrong tagging
And not to correct with a JOSM visualisation with a extra rule string for use oneway:bicycle=no
When using, oneway:bicycle=no, oneway=yes should make cycleway=lane a both side dashed line. Solve it this way, enhancement, I do not think so.
People use cycleway=lane, when on both side is a cycleway lane. This is correct.
comment:10 by , 7 years ago
Replying to Don-vip:
It looks simpler than that. I don't see any reference to
oneway:bicycle
key in our map paint style, so I don't see how it could work. Or am I missing something?
With "bug" I meant that this case (with oneway:bicycle) is not yet handled at all.
comment:11 by , 7 years ago
Replying to Allroads:
oneway=yes and cycleway=lane makes a dashed line on one side either for right or left handed. Here a mistake in tagging is undone in JOSM visualisation, tagger should always use cycleway:right or left with oneway and a one side cycleway.
This is maybe the bug.
And not to correct the JOSM visualisation with a extra rule string for use oneway:bicycle=no
When using, oneway:bicycle=no, oneway=yes should make cycleway=lane a both side dashed line. Neutralize the visualisation string.
Or is this the visualisation (bug), enhancement, I do not think so.
People use cycleway=lane, when on both side is a cycleway lane. This is correct.
It is hard to understand what you want to say, even after reading the text five times :) Could you please read again and edit your comment? Thx
comment:14 by , 6 years ago
quoting Allroads:
oneway=yes and cycleway=lane makes a dashed line on one side either for right or left handed.
If there are not two dashed lines then a mistake (made by tagger) in tagging is undone in JOSM visualisation, now there is 1 dashed line.
Tagger should always use cycleway:right or left with oneway and a one side cycleway."
I disagree, from the Twiki:
https://wiki.openstreetmap.org/wiki/Key:cycleway
"cycleway=lane is used to tag two-way streets where there are cycle lanes on both sides of the road, or one-way streets where there is a lane operating in the direction of main traffic flow."
Although I don't know how you'd know which side the lane is on, typically the side people drive on I guess.
Now once you get to also adding bicycle:oneway=no, then I'm not sure. It seems you should probably be using cycleway=opposite_lane and then probably an explicit left or right too.
comment:15 by , 6 years ago
Also this can be a convenient way to tag on roads that continuously go between single carriageway two-way, and dual carriageway. You can select everything and just tag it cycleway=lane, instead of needing to select all the dual carriageway bits and tagging them separately as cycleway:right/left=lane just because some bits are technically one-way.
comment:16 by , 6 years ago
Keywords: | cycleway added |
---|
comment:17 by , 4 years ago
The problem I see is that cycleway=*
together with oneway=yes
usually is interpreted as cycleway only in one direction. opposite_*
are the exception but will not work in the situation of cycleways on both sides.
I would say, you need to use either :left
and :right
or :both
which was explicitly invented for the situation with oneway roads.
oneway:bicyle
is not rendered at all but this is might be worth an own ticket.
Can you please attach a small data set showing the problem and tell us what version of JOSM you're using?