Skip to content

Commit

Permalink
Don't collapse an intersection with a crossing. #246
Browse files Browse the repository at this point in the history
(It never happens in a test, so no known diff)
  • Loading branch information
dabreegster committed Mar 22, 2024
1 parent 30fa6b9 commit 5486508
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions osm2streets/src/transform/collapse_intersections.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,26 @@ use crate::{IntersectionID, IntersectionKind, Placement, Road, StreetNetwork};
/// Collapse degenerate intersections:
/// - between two cycleways
/// - when the lane specs, name, and layer match
/// - when there's no crossing
pub fn collapse(streets: &mut StreetNetwork) {
let mut merge: Vec<IntersectionID> = Vec::new();
for id in streets.intersections.keys() {
let roads = streets.roads_per_intersection(*id);
for intersection in streets.intersections.values() {
if intersection.crossing.is_some() {
continue;
}
let roads = streets.roads_per_intersection(intersection.id);
if roads.len() != 2 {
continue;
}
match should_collapse(roads[0], roads[1]) {
Ok(()) => {
merge.push(*id);
merge.push(intersection.id);
}
Err(err) => {
warn!("Not collapsing degenerate intersection {}: {}", id, err);
warn!(
"Not collapsing degenerate intersection {}: {}",
intersection.id, err
);
}
}
}
Expand Down

0 comments on commit 5486508

Please sign in to comment.