Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

highway=cyclist_waiting_aid side gets reversed with the way #10128

Closed
RudyTheDev opened this issue Feb 25, 2024 · 8 comments
Closed

highway=cyclist_waiting_aid side gets reversed with the way #10128

RudyTheDev opened this issue Feb 25, 2024 · 8 comments
Labels
bug A bug - let's fix this!

Comments

@RudyTheDev
Copy link
Contributor

RudyTheDev commented Feb 25, 2024

When a way is reversed and there is a highway=cyclist_waiting_aid (openstreetmap/id-tagging-schema#1066 / openstreetmap/id-tagging-schema#1069) with a side value, then this value also gets "reversed". However, side represents the side of the waiting aid from the cyclist's perspective, not from the way's perspective, so this actually sets an incorrect value.

For example, add highway=cyclist_waiting_aid + direction=forward + side=right to a way's node. Then reverse the parent way. Observe that direction=backward got swapped correctly, but also side=left got swapped, which is now on the incorrect side.

@RudyTheDev RudyTheDev added the bug A bug - let's fix this! label Feb 25, 2024
@tyrasd tyrasd transferred this issue from openstreetmap/id-tagging-schema Feb 25, 2024
@tyrasd tyrasd closed this as completed in 85f4cc0 Feb 25, 2024
@SupaplexOSM
Copy link

To avoid making things too easy:

  • If it's a oneway cycleway/path, the side flip would be OK, because iD assumes that the direction of travel also changes in this case (and does not become oneway=-1).
  • However, if it is a oneway road that can also be used by cyclists in the opposite direction, the side flip would be wrong, as cyclists can continue to ride in the previous direction.

I'm sorry that the tagging has such a pitfall in this case. (This issue is also mentioned in this forum thread)

@tyrasd
Copy link
Member

tyrasd commented Feb 26, 2024

oh… I had not thought of that.

This might be pretty hard to handle 100% correctly. 😬 But how likely is it that this will actually be a real problem in practice? I mean, given that these features are by definition always placed in front of certain obstacles like intersections: When the direction of travel of, say, a oneway bikepath is flipped in reality, then that would mean that previously existing waiting aids are now all placed in locations where they are not useful anymore (e.g. right after intersections instead of right before them). So… realistically, the waiting aids would have been moved in reality as well, meaning that they would have to be fully remapped accordingly anyway. 🤔 Right?

@RudyTheDev
Copy link
Contributor Author

Is this the only feature that uses side this way? May be it's better to either change the tag or make it way-dependent before "it's too late". If all editors are flipping side by default, may be it's a bad idea to set a precedent for exceptions. I had assumed tag flipping was hard-coded per feature, depending on what it means. But I guess it had always meant "side from way perspective".

@tyrasd
Copy link
Member

tyrasd commented Feb 26, 2024

AFAICS, the wiki does not document any uses of the side tag other than for the cyclist waiting aids (as seen in the Key:side page which only redirects to the waiting aid page). However, the tag is informally relatively heavily in use in combination with mapping traffic sign nodes (see taginfo) (where the left/right directions are presumably be meant to be interpreted relative to the direction of the way).

The usual convention in OSM is that left/right are describing the sides of a way relative to the mapped direction of the way. Thus, iD will flip left/right values of any tag (with a few exceptions), in order to not be limited to a limited fixed list of tags and/or presets. What would probably be needed for this are two new values which would indicate sides relative to where the (road) user is facing. Perhaps something like port/starboard 😜

@SupaplexOSM
Copy link

Initially, the use of the side tag in context of waiting aids was also considered in line direction, but it turned out that this can easily be misunderstood by mappers (see this example). The idea was then to use it from the cyclist's perspective in case of waiting aids. Due to the missing documentation of other uses of side, this difference in use emerged.

The assumption in case of waiting aids was, that direction of travel/movement-dependent use results in more correct/less incorrect data. Possible mistakes due to direction flips should be the absolute exception (especially as waiting aids are often on oneway paths, where this problem does not exist when flipping). But of cause, this makes things hard for editor developers.

@simonpoole
Copy link
Contributor

simonpoole commented Feb 26, 2024

  • If it's a oneway cycleway/path, the side flip would be OK, because iD assumes that the direction of travel also changes in this case (and does not become oneway=-1).

That would seem to be iffy, the whole issue is that the side of the rest from the cyclists perspective has nothing to do with the way direction, and that somebody surveying the way correctly could get the side of the rests right and the way direction wrong and many other possible combinations.

Note that there are additional complications if the rest is co-mapped with a traffic_sign object.

simonpoole added a commit to MarcusWolschon/osmeditor4android that referenced this issue Feb 26, 2024
This allows per key exceptions to the usual way/node tag reversal rules
by specifying the key and a JosmFilter expression that has to match.

See openstreetmap/iD#10128
simonpoole added a commit to MarcusWolschon/osmeditor4android that referenced this issue Feb 26, 2024
This allows per key exceptions to the usual way/node tag reversal rules
by specifying the key and a JosmFilter expression that has to match.

See openstreetmap/iD#10128
simonpoole added a commit to MarcusWolschon/osmeditor4android that referenced this issue Feb 26, 2024
This allows per key exceptions to the usual way/node tag reversal rules
by specifying the key and a JosmFilter expression that has to match.

See openstreetmap/iD#10128
@k-yle
Copy link
Collaborator

k-yle commented Feb 26, 2024

I think it's early enough that we should just redefine the side tag for waiting aids. There are only 430 nodes with highway=cyclist_waiting_aid and side=*. Of the 430, I mapped 384 of them, and I'm happy to review the side of each one.

That leaves only 46 features that someone else needs to review. Worst case a fixme tag could be added to those 46 nodes.

Redefining the tag seems like a better option than permanent confusion about how to handle this tag in each editor...

@simonpoole
Copy link
Contributor

simonpoole commented Feb 27, 2024

Just in case anybody needs some inspiration :-). My current solution to the issue is to reverse the tag except if the node in questions matches (JOSM filter/search language):

highway=cyclist_waiting_aid -child (type:way highway: (oneway? OR oneway="-1"))

which neatly takes care of the oneway aspect.

simonpoole added a commit to MarcusWolschon/osmeditor4android that referenced this issue Feb 27, 2024
This allows per key exceptions to the usual way/node tag reversal rules
by specifying the key and a JosmFilter expression that has to match.

See openstreetmap/iD#10128
simonpoole added a commit to MarcusWolschon/osmeditor4android that referenced this issue Aug 18, 2024
This allows per key exceptions to the usual way/node tag reversal rules
by specifying the key and a JosmFilter expression that has to match.

See openstreetmap/iD#10128
simonpoole added a commit to MarcusWolschon/osmeditor4android that referenced this issue Aug 18, 2024
This allows per key exceptions to the usual way/node tag reversal rules
by specifying the key and a JosmFilter expression that has to match.

See openstreetmap/iD#10128
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A bug - let's fix this!
Projects
None yet
Development

No branches or pull requests

5 participants