Modify

Opened 6 years ago

Last modified 3 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)

dashwrong.png (230.9 KB ) - added by Allroads 6 years ago.

Download all attachments as: .zip

Change History (18)

comment:1 by Don-vip, 6 years ago

Component: Core mappaintInternal mappaint style

Can you please attach a small data set showing the problem and tell us what version of JOSM you're using?

by Allroads, 6 years ago

Attachment: dashwrong.png added

comment:2 by Allroads, 6 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 Klumbumbus, 6 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.

Version 0, edited 6 years ago by Klumbumbus (next)

comment:4 by Don-vip, 6 years ago

I can look at it. What's the involved mapcss rule?

comment:5 by Klumbumbus, 6 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;
}

comment:6 by Don-vip, 6 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 Don-vip, 6 years ago

Keywords: dash oneway bicycle lane added

comment:8 by Allroads, 6 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.

Last edited 6 years ago by Allroads (previous) (diff)

comment:9 by Don-vip, 6 years ago

Klumbumbus I'll let this one to you after all :)

in reply to:  6 comment:10 by Klumbumbus, 6 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.

in reply to:  8 comment:11 by Klumbumbus, 6 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:12 by Allroads, 6 years ago

I edit the above comment.

comment:13 by Klumbumbus, 6 years ago

Ticket #16422 has been marked as a duplicate of this ticket.

comment:14 by Doug, 5 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 Doug, 5 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 Don-vip, 5 years ago

Keywords: cycleway added

comment:17 by skyper, 3 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.

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 anonymous.
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.