-
Notifications
You must be signed in to change notification settings - Fork 9
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
LTS level 1 on busy road with light segregation (Roseville Road, Leeds) #54
Comments
Wider question is how best to represent this? I looked to edit it on https://www.openstreetmap.org/edit?way=958819459#map=20/53.80953/-1.52573 but am not sure how to represent light segregation on carriageway (sometimes on pavement) mostly separated by wand orcas and parked cars. The thing that makes it feel unsafe is the speed and volume of the traffic on the parallel road. |
https://www.openstreetmap.org/way/958819459 |
The current LTS algorithm doesn't pay attention to the new
If this road had a maxspeed tagged, then maybe our rule could say that light separation + high maxspeed is bad. CC @cmconlan |
Also real world speed data can show that this road is dangerous. Not sure but think it's a 40 mph limit which is sketchy. |
This is a nice discussion of something that I also noted, and was discussing with @partavogen. In Lisbon we have this main road (primary), with a cycleway. Even if the road is busy, It is on of the two main cycleways in the side.
With this following example in the online platform, using a small area, 3000 random origins, and 1 destination right in this avenue, the results sound odd, because the routes are not being mostly made in this avenue (see the red count values added), but mostly in some far off-road cycleways (in green). I used custom highway tag cost values to the following ones:"cost": { The LTS classifies it as LTS 3 or 4, correctly, according to the highway tag. But I am not sure how is considering the In these 2 examples, the first one is a secondary street with no bike lane, and presents a cost of 12x. Why is that, it if correctly identifies that the "Way has a bike lane because cycleway:left=lane" ? |
Thanks for the detailed info about this case!
We're using the OSM to LTS definitions from https://maps.bikeottawa.ca/lts/ without many changes yet, but I think we'll need to make some improvements -- both in general, and possibly to handle some localized tagging styles in some places. In this case, this doesn't count as a separate path (LTS 1) because of this code: Line 47 in ee269f4
We have a cycleway = lane, not track. So instead, we're in the bike_lane_case: Line 63 in ee269f4
I don't know if that small curb means the tagging should change from https://wiki.openstreetmap.org/wiki/Tag:cycleway%253Dlane to https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dtrack. If the OSM tags look correct but the LTS output looks wrong, we can start by adding a test case to https://github.com/Urban-Analytics-Technology-Platform/od2net/blob/main/lts/src/tests.rs and updating the LTS logic (which is hopefully easy to understand -- https://github.com/Urban-Analytics-Technology-Platform/od2net/blob/main/lts/src/bike_ottawa.rs or the original JS https://raw.githubusercontent.com/BikeOttawa/stressmodel/master/stressmodel.js. Or if you think it'd be easier to write a new function to assign LTS based on OSM tags for the tagging style in Lisbon, we can do that too: https://github.com/Urban-Analytics-Technology-Platform/od2net/blob/main/docs/tutorial_examples.md#advanced-write-your-own-cost-function (except a custom command for LTS, not cost) |
Thanks! |
What I mean is: I am not super fan of LTS - it doesn't apply well for places where you don't have a consolidated cycling network, or pedestrian trails, or (simply) a lot of LTS1 and LTS2 ways. And then you are left with only LTS 3 and 4. (this is what happened in biclaR) |
I see your point. LTS is not necessary; it is just useful as an extra variable to visualize by -- to quickly see lots of flow on good vs bad roads. If you want to totally ignore it and just assign a cost based on OSM tags, you can do that. Just follow https://github.com/Urban-Analytics-Technology-Platform/od2net/blob/main/docs/tutorial_examples.md#advanced-write-your-own-cost-function and in your program, totally ignore the Maybe a question you'd know: once we have gradient on a road, how do we adjust the cost function for cyclists? I've done https://github.com/a-b-street/abstreet/blob/b3982db88c6b342b78a82188cb823a25dbcfbf7e/map_model/src/traversable.rs#L258 in the past, but I never spent much time seeing if the results were reasonable |
A good alternative to LTS is CSNA. We have some docs + I think open issues on that somewhere but cannot recall where atm, @cmconlan may have good links + ideas on this. I agree 4 categories of CSNA is too simple. CSNA has 7. CLOS by Brian Deegan and colleagues has even more. So cool that we can define any cost function in any language btw, making this a key bit of infrastructure for strategic active travel network planning (may take a bit of work to refine stuff but the foundation is solid I'm convinced)! |
Ok, I'll try to change the OSM cost function with a if-else statement for the cases when a highway includes a cycle lane.
I have a slope-cost function explored here that can be used 🙂 |
Back to this, would you have a cost statement example with a condition that I could adapt, @dabreegster ? |
You can write custom logic in any way you want, then call it. An example in Python is https://github.com/Urban-Analytics-Technology-Platform/od2net/blob/main/examples/york/cost.py, configured by doing
If there are 50 edges in this array, then you have to print a JSON array with 50 pairs of numbers of the final cost, like |
Just documenting findings as I look at this with Joey:
That's from running it in browser for Leeds. Not an issue with this codebase but with the LTS scoring or OSM tags or combination. There is a light seggregated cycleway on and off the road but is defo not suitable for children, this is quite a scary place to be on a bike:
Source: https://www.google.com/maps/@53.8067038,-1.5294913,3a,60y,90t/data=!3m6!1e1!3m4!1sVjDNXOnf-deeLq26tVSLWg!2e0!7i16384!8i8192?entry=ttu
The text was updated successfully, but these errors were encountered: