-
Notifications
You must be signed in to change notification settings - Fork 12
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
Propagating changes #159
Comments
#136 (comment) was the description |
Just dumping raw notes related to this:
In the short term to move forward on #136, I think that last idea is the key -- front-load transformations that need to see something closer to OSM graph |
On the topic of reordering transformations, I didn't get to mentioning this during the meeting: I think for the purposes of testing/evaluating osm2streets we should stop inferring sidewalks everywhere, and should disable the shrink_roads transformation as it is too-blunt an instrument. |
2023 will be the year of ripping of all the old bandages! I'd be happy for both changes. The first will start forcing us to reckon with separate sidewalks finally. Within osm2streets, the goal for correctness is sane geometry / rendering. For traffic simulation and road-space reallocation over in A/B Street, parallel ways without any kind of higher-level |
…y to make a mistake and forget one. #159
…y to make a mistake and forget one. #159
…y to make a mistake and forget one. #159
There are a few cases today where it's the caller's responsibility to restore invariants after one operation:
remove_road
, it's possible an intersection will be left orphaned, with no roads pointing to it. Those must be removed.osm2streets/osm2streets/src/transform/collapse_intersections.rs
Line 123 in a902134
update_movements
has to be called when anything connected to an intersection changesupdate_center_line
needs to happen whenreference_line
changescollapse_short_road
may produce a loop-road that should get removed later.osm2streets/osm2streets/src/operations/collapse_short_road.rs
Line 119 in a902134
I'm working on a 5th, regenerating intersection geometry + trims.
Relatedly, I forgot where, but there's some branch where I can improve final geometry, but only by rerunning some transformations after generating intersection geometry. That process calculates trims, discovers roads too short to exist, and then we collapse short roads again. There's a case where if we
CollapseDegenerateIntersections
after that, we make even more progress somewhere.An idea that's arisen somewhere before is to do more granular change tracking. Low-level operations like
remove_road
andcollapse_intersection
can precisely say which roads and intersections they touch. We could make a helper track those changes, and re-run transformations and operations on modified things. How exactly should that work? Should every transformation right now be re-expressed to operate on just a piece of the network, and we have some rules about retrying all transforms when something changes? Just starting this issue to brainstormThe text was updated successfully, but these errors were encountered: