Oneway bicycle with opposite lane

Hi all. This is the first time I have to map bicycle lanes on one way streets.
I consulted and checked the options.

Are the following tags correct for the linked picture below?
highway=residential + oneway=yes + cycleway:right=lane + cycleway:left=opposite_lane


The easy part is that there is no right hand cycle lane.

Apart from that, I can’t work out whether the whole road is one way, or this is just a restricted access junction. In the latter case, there is a specific way of mapping a junction with a cycle counterflow. Unfortunately someone has gone and micromapped my reference example.

In the former case, I still have the problem that there doesn’t seem to be a lane on the left, except for the length of the yellow marking.

I don’t see any physical cycle lanes there (although I’m not familiar with that style of markings, so take that with a grain of salt). Therefore, I’d tag it as follows:

  • oneway=yes
  • oneway:bicycle=no

Add cycleway=opposite (older synonym of oneway:bicycle=no) for backwards compatibility.

I assume oneway:bicycle=no means that bicycles are not allowed in the direction of the one way?

But if you take a look on the traffic sign in the picture, bicycles are allowed in both directions whereas the opposite lane got additional markings on the road.
Maybe I should have been more precise in my first post …

A reversed oneway is done with oneway=-1. oneway=no means two way.

Thanks hadw. So the correct tagging would be


I would recommend: “oneway:bicycle=no” as oneway:bicycle=no means, as intended, two way for bicycles.

Most likely ‘-1’ would be read by navigation software as ‘no’, but ‘no’ is preferred and more readable.

Thanks Martin. I have updated osm and the referenced street.

Can someone check if this is ok?

I would expect that oneway:bicycle means a one way street for cyclists in the opposite direction the OSM way is drawn.

Isn’t cicleway=shared_lane a better option?

Also, don’t forget to set tag maxpeed=30 (assuming the sign “30” in the asphalt), so car navigation avoid this street.

If you look at, then oneway:bicycle=no is THE solution to indicate that the street generally has oneway traffic, except for bicycles.

The shared_lane does not give any clue that for bicycles two directional traffic is allowed.

One could use cycleway=opposite, but the tagging oneway;bicycle=no is imho more explicit towards the (no) oneway feature as there is no opposite cycleway often

Tags as opposite_lane do not necessarily have to be true; at least in many small streets in Netherlands, Belgium, Germany opposite to general oneway restriction of bicycle traffic is allowed without a separate lane for the opposite bicycle traffic, where ‘lane’ suggests differently.

Thanks Martin.

Last question: why is the GraphHopper navigation not going straight when cycling opposite direction? It is suggesting a turn into a highway=service road.

Going down the one way street is shown correctly.

Best regards

That is a really strange behaviour!

I don’t know the details of Graphhopper; you should ask them. Apparently Mapzen does the correct job.

Why (if?) Grashopper prefers service roads over residential is unclear as that would then be the behaviour in the other direction as well.

Maybe wait a moment to allow all databases to be updated?

Sure Martin. The strange behavior is still there. I assume after an hour the databases are updated.
Therefore I created a bug for graphhopper:

@sandstorm, the routing databases take much more time than 1 hour to update, typically a day or more.