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

Try switching to Muv #232

Closed
dabreegster opened this issue Jan 19, 2024 · 20 comments
Closed

Try switching to Muv #232

dabreegster opened this issue Jan 19, 2024 · 20 comments
Labels
good first issue Good for newcomers help wanted Extra attention is needed

Comments

@dabreegster
Copy link
Contributor

https://gitlab.com/LeLuxNet/Muv/ is a new library that's doing the "osm2lanes" job of transforming OSM tags to lane data much better than the code currently used here or in the older https://github.com/a-b-street/osm2lanes experiment. We should try cutting over to it.

It could likely help with a number of bugs: #231, #230, #229, #223, #222, #91, #89.

It's a bigger project to try this cutover, but still somewhat self-contained. If anyone's interested in trying, please do!

@dabreegster dabreegster added good first issue Good for newcomers help wanted Extra attention is needed labels Jan 19, 2024
@tordans
Copy link

tordans commented Jan 19, 2024

@dabreegster do know of a place to learn more about Muv that that link? It does not give a lot of context or details :).

@dabreegster
Copy link
Contributor Author

@ginnyTheCat is the author

@ginnyTheCat
Copy link
Contributor

Hi,
I built a small example integrating muv-osm into osm2streets here with a live example being deployed on https://muv.lelux.net/osm2streets which helps a lot in checking how streets parsed compare to the osm2lanes variant. Another way to check the muv-osm output on a more technical level is running cargo r --example lanes -F lanes in the muv-osm directory, inputting the tags and getting a lane-by-lane output.

Looking at the issues above #230, #222 and #89 work in muv already. Both way directions as in #91 are supported on the muv side, but have no mapping to osm2streets yet.

I'm working on documenting muv more but at the example or the muv-osm to osm2lanes source code should help a bit. If there are any more questions I'm more than happy to answer them here or wherever you prefer.

@robhubi
Copy link

robhubi commented Jan 27, 2024

An excellent site for test cases: https://wiki.openstreetmap.org/wiki/Berlin/Verkehrswende/Radwege#Radfahrstreifen_in_Mittellage_.2F_Fahrradschleuse_.2F_Fahrradweichen

@ginnyTheCat
Copy link
Contributor

Thanks a lot @robhubi.

When testing the examples I realized that due to the roads having both the bicycle:lanes and cycleway=lane (a fallback for data consumers not understanding the :lanes suffix) tags, the road would end up with two bike lanes instead of one. This behavior is now fixed, and the two examples with OSM links can be viewed in osm2streets (you might need to reload without cache for the new version to be loaded).

https://muv.lelux.net/osm2streets/#19.2/52.4776157/13.4265795
https://muv.lelux.net/osm2streets/#18.93/52.4685018/13.4418944

@dabreegster
Copy link
Contributor Author

Hi @ginnyTheCat, one logistic question/request before we try integration: could you please set a license on the project?

@ginnyTheCat
Copy link
Contributor

Of course. I was thinking of using the MPL 2.0 license, which would allow osm2streets and A/B Street to fully use it. If that's ok on your side I would go ahead with that.

@dabreegster
Copy link
Contributor Author

dabreegster commented Jan 28, 2024 via email

@robhubi
Copy link

robhubi commented Jan 29, 2024

When testing the examples I realized that due to the roads having both the bicycle:lanes and cycleway=lane (a fallback for data consumers not understanding the :lanes suffix) tags, the road would end up with two bike lanes instead of one.

I see the tags bicycle:lanes as a description of the access rights and cycleway=lane as a description of the structural design of the carriageway. The tags complement each other.

The examples look great.

@ginnyTheCat
Copy link
Contributor

One recent addition to muv that could be interesting to osm2streets is the on road curb position. In case of a highway with cycleway=lane, sidewalk=yes, the kerb would be between the cycleway and the sidewalk. Change the cycleway into a cycleway=track and the curb now is between the cycleway and the roadway.

This information could be useful to align roads to barrier=kerb lines, as many ways without placement data are often misaligned to the center of the roadway, resulting in osm2streets overlapping the roadway with separately mapped sidewalks and cycleways next to the road. Aligning the kerbs would double up as a width estimate for roads with no width tagged.

@dabreegster
Copy link
Contributor Author

That sounds fantastic; those overlap problems happen frequently. If you find any particular examples where this new approach would help, we should add them to the test cases in Street Explorer.

I'd like to pick this up, but with work right now, there's no way it's happening in the next few weeks. :\

@ginnyTheCat
Copy link
Contributor

One example could be this road (https://a-b-street.github.io/osm2streets/#18.9/50.9283434/11.5841848 / https://muv.lelux.net/osm2streets/#19.2/50.928293/11.5843508) where a kerb is mapped but the road isn't fully centered and collides with the sidewalk, even enlarging the intersection.

imagen
imagen

@ginnyTheCat
Copy link
Contributor

#231 is now supported on the muv side with priority implying lanes=1

https://muv.lelux.net/osm2streets/#18.97/48.60629/7.75187

@ginnyTheCat
Copy link
Contributor

ginnyTheCat commented Feb 23, 2024

I'm planning on creating a clean implementation of osm2lanes using muv that would replace the messy demo. One thing i was wondering about however was the handling of curbs in half-on-sidewalk parking situations.
Muv represents those as normal lanes just with a kerb running in the middle of it.
The ways to translate this to the osm2lanes side I see are the following:

  1. Don't convert curb data, as osm2lanes currently doesn't generate it as well
  2. Split the parking lane in two lanes (each with a width of (width - kerb_width) / 2), with a kerb in the middle of the two. The problem with this is that while it looks closest to reality (which is why the demo does this), it would probably mess up the simulation.
  3. Move the kerb left or right of parking lane. It would look like a regular sidewalk or street parking lane but at least the curb data would be mostly kept.

In my opinion, option 3. makes the most sense.

@robhubi
Copy link

robhubi commented Feb 23, 2024

In general, the higher-ranking mode of transport is favoured. This would be option 3 with a parking lane and a kerb at the very edge.

@ginnyTheCat
Copy link
Contributor

In general, the higher-ranking mode of transport is favoured.

I don't really understand this part of the sentence, maybe you could explain that a bit more. The second part is makes sense.

@robhubi
Copy link

robhubi commented Feb 24, 2024

Imagine a road. No sidewalk. Pedestrians, cyclists and cars are on the road. What type of road is it: footpath, cycle path or street? In the case of shared use, the higher-ranking means of transport determines the type.

@ginnyTheCat
Copy link
Contributor

ginnyTheCat commented Feb 24, 2024

Ah, yea ofc. That's how it's implemented in the demo right now and how I'm porting it to the final variant as well. osm2lanes's LaneType has a SharedUse type for shared bike/pedestrian ways. Maybe I'm gonna map that very specific type of shared use to that type but ofc with all ofter modes using the highest-ranking strategy.
I just got confused as I thought you were referring to the half-on-sidewalk parking mentioned above.

@dabreegster
Copy link
Contributor Author

the handling of curbs in half-on-sidewalk parking situations

I'm still confused what this means -- any real-world examples? Is this a sidewalk where cars are allowed to park on half of it, and there's a curb marking the boundary? I'm not sure I've seen these before, so just trying to understand

@ginnyTheCat
Copy link
Contributor

The cars basically have two wheels on the sidewalk and two wheels on the road surface.

picture of cars parking
Here on the left the cars are parking on the sidewalk, while on the right they are parking half on the sidewalk, half on the street.

photo of German parking sign
This the sign used in Germany for such situations for example.

They're not super common which is why handling them just as fancy versions of on-sidewalk parking when converting them to osm2lanes makes sense.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants