From e7919f6a741a8a4a153712bcc8ab11a447484566 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Thu, 22 Sep 2022 10:04:00 +0800 Subject: [PATCH 01/27] Start calculating movements and conflicts still faulty due to road sort order and missing travel direction checks. We should be able to see on and off ramps, sausage links, etc. pretty clearly in the result when its working. --- osm2streets/src/initial.rs | 6 +- osm2streets/src/lib.rs | 11 +- osm2streets/src/render.rs | 11 +- .../src/transform/classify_intersections.rs | 151 ++++++++++++------ osm2streets/src/types.rs | 8 + streets_reader/src/split_ways.rs | 4 +- 6 files changed, 138 insertions(+), 53 deletions(-) diff --git a/osm2streets/src/initial.rs b/osm2streets/src/initial.rs index 4b7ce36f..c69d8d0a 100644 --- a/osm2streets/src/initial.rs +++ b/osm2streets/src/initial.rs @@ -6,7 +6,9 @@ use std::collections::{BTreeMap, BTreeSet}; use abstutil::{Tags, Timer}; use geom::{Circle, Distance, PolyLine, Polygon, Pt2D}; -use crate::{osm, ControlType, InputRoad, IntersectionComplexity, OriginalRoad, StreetNetwork}; +use crate::{ + osm, ConflictType, ControlType, InputRoad, IntersectionComplexity, OriginalRoad, StreetNetwork, +}; pub struct InitialMap { pub roads: BTreeMap, @@ -56,6 +58,7 @@ pub struct Intersection { pub polygon: Polygon, pub roads: BTreeSet, pub complexity: IntersectionComplexity, + pub conflict_level: ConflictType, pub control: ControlType, pub elevation: Distance, } @@ -76,6 +79,7 @@ impl InitialMap { polygon: Circle::new(Pt2D::new(0.0, 0.0), Distance::meters(1.0)).to_polygon(), roads: BTreeSet::new(), complexity: i.complexity, + conflict_level: i.conflict_level, control: i.control, elevation: i.elevation, }, diff --git a/osm2streets/src/lib.rs b/osm2streets/src/lib.rs index a6dc5d78..41199536 100644 --- a/osm2streets/src/lib.rs +++ b/osm2streets/src/lib.rs @@ -20,7 +20,7 @@ pub use self::lanes::{ }; pub use self::transform::Transformation; pub use self::types::{ - ControlType, DrivingSide, IntersectionComplexity, MapConfig, NamePerLanguage, + ConflictType, ControlType, DrivingSide, IntersectionComplexity, MapConfig, NamePerLanguage, }; mod edit; @@ -624,6 +624,7 @@ pub struct Intersection { /// StreetNetwork; roads and intersections get merged and deleted. pub point: Pt2D, pub complexity: IntersectionComplexity, + pub conflict_level: ConflictType, pub control: ControlType, pub elevation: Distance, @@ -636,10 +637,16 @@ pub struct Intersection { } impl Intersection { - pub fn new(point: Pt2D, complexity: IntersectionComplexity, control: ControlType) -> Self { + pub fn new( + point: Pt2D, + complexity: IntersectionComplexity, + conflict_level: ConflictType, + control: ControlType, + ) -> Self { Self { point, complexity, + conflict_level, control, // Filled out later roads: Vec::new(), diff --git a/osm2streets/src/render.rs b/osm2streets/src/render.rs index 466d9529..a4e90fdf 100644 --- a/osm2streets/src/render.rs +++ b/osm2streets/src/render.rs @@ -6,6 +6,7 @@ use abstutil::Timer; use anyhow::Result; use geom::{ArrowCap, Distance, Line, PolyLine}; +use crate::IntersectionComplexity::MultiConnection; use crate::{DebugStreets, Direction, LaneType, StreetNetwork}; impl StreetNetwork { @@ -49,7 +50,15 @@ impl StreetNetwork { ("osm_node_id", id.0.into()), ( "complexity", - format!("{:?}", intersection.complexity).into(), + if intersection.complexity == MultiConnection { + format!( + "{:?} {:?}", + intersection.complexity, intersection.conflict_level + ) + } else { + format!("{:?}", intersection.complexity) + } + .into(), ), ("control", format!("{:?}", intersection.control).into()), ("osm_link", id.to_string().into()), diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index a164d594..04e7407b 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -1,11 +1,15 @@ use crate::osm::NodeID; use crate::IntersectionComplexity::*; -use crate::{Direction, IntersectionComplexity, StreetNetwork}; +use crate::{ + ConflictType, IntersectionComplexity, OriginalRoad, RestrictionType, Road, StreetNetwork, +}; +use std::cmp::{max, min}; +use std::collections::BTreeMap; /// Determines the initial complexity of all intersections. Intersections marked "Crossing" are /// considered "unclassified" and will be updated with a guess, others will be left unchanged. pub fn classify_intersections(streets: &mut StreetNetwork) { - let mut changes: Vec<(NodeID, IntersectionComplexity)> = Vec::new(); + let mut changes: Vec<(NodeID, (IntersectionComplexity, ConflictType))> = Vec::new(); for (id, inter) in &streets.intersections { if let Crossing = inter.complexity { changes.push((*id, guess_complexity(streets, id))); @@ -13,73 +17,124 @@ pub fn classify_intersections(streets: &mut StreetNetwork) { } for (id, complexity) in changes.into_iter() { - streets.intersections.get_mut(&id).unwrap().complexity = complexity; + let intersection = streets.intersections.get_mut(&id).unwrap(); + intersection.complexity = complexity.0; + intersection.conflict_level = complexity.1; } } /// Guesses the complexity of the intersection based on the connecting roads and their lanes. /// /// The existing complexity field is ignored, so be careful how you use the guessed value. -fn guess_complexity(streets: &StreetNetwork, intersection_id: &NodeID) -> IntersectionComplexity { - let roads = streets.roads_per_intersection(*intersection_id); +fn guess_complexity( + streets: &StreetNetwork, + intersection_id: &NodeID, +) -> (IntersectionComplexity, ConflictType) { + use ConflictType::*; + let road_ids = streets.roads_per_intersection(*intersection_id); + let roads: Vec<&Road> = road_ids + .iter() + .map(|id| streets.roads.get(id).unwrap()) + .collect(); // A terminus is characterised by a single connected road. - if roads.len() == 1 { - return Terminus; + if road_ids.len() == 1 { + return (Terminus, Uncontested); } // A Connection is characterised by exactly two connected roads. - if roads.len() == 2 { - return Connection; + if road_ids.len() == 2 { + return (Connection, Uncontested); } - // A MultiConnection is characterised by exactly one dividing line traveling through it (the - // line that separates traffic in different directions) and no traffic that crosses it. - if roads.len() == 3 { - let mut _num_roads_in = 0; - let mut _num_roads_out = 0; - let mut num_roads_inout = 0; - for road_id in roads { - let is_outward = road_id.i1 == *intersection_id; - let road = streets.roads.get(&road_id).unwrap(); - match road.oneway_for_driving() { - Some(Direction::Fwd) => { - if is_outward { - _num_roads_out += 1 - } else { - _num_roads_in += 1 - } - } - - Some(Direction::Back) => { - if is_outward { - _num_roads_in += 1 - } else { - _num_roads_out += 1 - } - } - None => num_roads_inout += 1, + // Calculate all the possible movements, except (U-turns). + //FIXME assert!(roads is sorted clockwise), which it isn't + let mut connections = Vec::new(); + // Consider turns pairs of roads, from s to d, using their position as index, so we can them later. + for s in 0..road_ids.len() { + for d in 0..road_ids.len() { + if s == d { + continue; + } + // FIXME check if we can travel into the intersection on s and out of the intersection on d + if turn_is_allowed(roads.get(s).unwrap(), road_ids.get(d).unwrap()) { + connections.push((s, d)); } } + } - if num_roads_inout == 0 { - // The simplest MultiConnect - return MultiConnection; + // Calculate all the collisions. + let mut conflicts = BTreeMap::new(); + let mut worst_conflict = Uncontested; + // Compare every pair of connections. Use the order of the roads around the intersection to + // detect if they diverge, merge, or cross. + // assert!(connections is sorted) so small_con large_con makes sense. + let mut each_con = connections.iter(); + while let Some(small_con) = each_con.next() { + for large_con in each_con.clone() { + let conflict = calc_conflict(small_con, large_con); + worst_conflict = max(worst_conflict, conflict); + conflicts.insert((small_con, large_con), conflict); } + } - // detect the simple case of a single road splitting - if num_roads_inout == 1 { - // TODO Determine if it is possible to turn from the 'in' road to the 'out' road. - // If not, then we have a dual carriageway split. - if false { - return MultiConnection; + match worst_conflict { + Cross => (Crossing, Cross), + c => (MultiConnection, c), + } +} + +fn turn_is_allowed(src: &Road, dst_id: &OriginalRoad) -> bool { + let mut has_exclusive_allows = false; + for (t, other) in &src.turn_restrictions { + match t { + RestrictionType::BanTurns => { + if other == dst_id { + return false; + } + } + RestrictionType::OnlyAllowTurns => { + if other == dst_id { + return true; + } + has_exclusive_allows = true; } } } + !has_exclusive_allows +} - // A Merge is characterised by an uninterrupted road (that would qualify as a Connection or - // MultiConnection), with additional connected roads that yield. - // TODO Combine roads into corridors and count them. +fn calc_conflict(a: &(usize, usize), b: &(usize, usize)) -> ConflictType { + use ConflictType::*; + if a.0 == b.0 { + return Diverge; + } + if a.1 == b.1 { + return Merge; + } + if a.0 == b.1 || a.1 == b.0 { + // TODO depends on driving side and arm order? + // It would be clear if a and b were flows instead of roads. + } + + // The intersection has a boundary that we have labelled 0 to n in clockwise order (from an + // arbitrary point), like a string layed in a circle. If we represent `a` as an arc from one point + // on the string to another, then there is a section of the string that connects the two points + // and two ends. A second arc, `b`, crosses `a` if and only if `b` has one end between the points + // and one end outside. + // ______ + // / | \ + // | |a n + // | | 0 + // \__|___/ + if is_between(a.0, b) ^ is_between(a.1, b) { + return Cross; + } + return Uncontested; +} - return Crossing; +fn is_between(num: usize, range: &(usize, usize)) -> bool { + let bot = min(range.0, range.1); + let top = max(range.0, range.1); + return bot < num && num < top; } diff --git a/osm2streets/src/types.rs b/osm2streets/src/types.rs index 59295beb..f130ba31 100644 --- a/osm2streets/src/types.rs +++ b/osm2streets/src/types.rs @@ -107,6 +107,14 @@ pub enum InterruptionType { DeadEnd, } +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord, Serialize, Deserialize)] +pub enum ConflictType { + Uncontested, + Diverge, + Merge, + Cross, +} + #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)] pub enum IntersectionComplexity { /// The edge of the data that we have. diff --git a/streets_reader/src/split_ways.rs b/streets_reader/src/split_ways.rs index f644de56..ed8f61f9 100644 --- a/streets_reader/src/split_ways.rs +++ b/streets_reader/src/split_ways.rs @@ -64,8 +64,9 @@ pub fn split_up_roads( *id, Intersection::new( pt.to_pt2d(), - // Guess a safe generic complexity, specialise later. + // Assume a complicated intersection, until we determine otherwise. IntersectionComplexity::Crossing, + ConflictType::Cross, if input.traffic_signals.remove(pt).is_some() { ControlType::TrafficSignal } else { @@ -83,6 +84,7 @@ pub fn split_up_roads( Intersection::new( point, IntersectionComplexity::Crossing, + ConflictType::Cross, ControlType::StopSign, ), ); From b5110af4e495c4a286e7f525562977466fd7c43d Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Thu, 20 Oct 2022 16:49:06 +0800 Subject: [PATCH 02/27] Store movements in Intersections and add a debug layer showing them --- osm2streets-js/src/lib.rs | 7 ++++ osm2streets/src/lib.rs | 5 ++- osm2streets/src/render.rs | 39 +++++++++++++++++++ .../src/transform/classify_intersections.rs | 21 +++++----- osm2streets/src/types.rs | 4 ++ street-explorer/www/js/layers.js | 4 +- street-explorer/www/js/main.js | 3 ++ streets_reader/src/split_ways.rs | 4 +- 8 files changed, 74 insertions(+), 13 deletions(-) diff --git a/osm2streets-js/src/lib.rs b/osm2streets-js/src/lib.rs index 43f90c0a..414bee16 100644 --- a/osm2streets-js/src/lib.rs +++ b/osm2streets-js/src/lib.rs @@ -103,6 +103,13 @@ impl JsStreetNetwork { .debug_clockwise_ordering_geojson(&mut Timer::throwaway()) .unwrap() } + + #[wasm_bindgen(js_name = debugMovementsGeojson)] + pub fn debug_movements_geojson(&self) -> String { + self.inner + .debug_movements_geojson(&mut Timer::throwaway()) + .unwrap() + } } #[wasm_bindgen] diff --git a/osm2streets/src/lib.rs b/osm2streets/src/lib.rs index 41199536..b936f5e6 100644 --- a/osm2streets/src/lib.rs +++ b/osm2streets/src/lib.rs @@ -20,7 +20,8 @@ pub use self::lanes::{ }; pub use self::transform::Transformation; pub use self::types::{ - ConflictType, ControlType, DrivingSide, IntersectionComplexity, MapConfig, NamePerLanguage, + ConflictType, ControlType, DrivingSide, IndexedMovement, IntersectionComplexity, MapConfig, + NamePerLanguage, }; mod edit; @@ -631,6 +632,7 @@ pub struct Intersection { /// All roads connected to this intersection. They may be incoming or outgoing relative to this /// intersection. They're ordered clockwise aroundd the intersection. pub roads: Vec, + pub movements: Vec, // true if src_i matches this intersection (or the deleted/consolidated one, whatever) pub trim_roads_for_merging: BTreeMap<(osm::WayID, bool), Pt2D>, @@ -650,6 +652,7 @@ impl Intersection { control, // Filled out later roads: Vec::new(), + movements: Vec::new(), elevation: Distance::ZERO, trim_roads_for_merging: BTreeMap::new(), } diff --git a/osm2streets/src/render.rs b/osm2streets/src/render.rs index a4e90fdf..330f8e4f 100644 --- a/osm2streets/src/render.rs +++ b/osm2streets/src/render.rs @@ -261,6 +261,45 @@ impl StreetNetwork { let output = serde_json::to_string_pretty(&obj)?; Ok(output) } + + /// For an intersection, show all the movements. + pub fn debug_movements_geojson(&self, timer: &mut Timer) -> Result { + let initial_map = crate::initial::InitialMap::new(self, timer); + + let mut pairs = Vec::new(); + + for (i, intersection) in &self.intersections { + // Find the endpoints + let road_points: Vec<_> = intersection + .roads + .iter() + .map(|r| { + let pl = &initial_map.roads[r].trimmed_center_pts; + let pt = if r.i1 == *i { + pl.first_pt() + } else { + pl.last_pt() + }; + pt + }) + .collect(); + for (a, b) in intersection.movements.iter() { + if *a != *b { + pairs.push(( + Line::must_new(road_points[*a], road_points[*b]) + .to_polyline() + .make_arrow(Distance::meters(0.3), ArrowCap::Triangle) + .to_geojson(Some(&self.gps_bounds)), + make_props(&[]), + )) + } + } + } + + let obj = geom::geometries_with_properties_to_geojson(pairs); + let output = serde_json::to_string_pretty(&obj)?; + Ok(output) + } } impl DebugStreets { diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 04e7407b..90295d6a 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -1,4 +1,5 @@ use crate::osm::NodeID; +use crate::types::IndexedMovement; use crate::IntersectionComplexity::*; use crate::{ ConflictType, IntersectionComplexity, OriginalRoad, RestrictionType, Road, StreetNetwork, @@ -9,17 +10,18 @@ use std::collections::BTreeMap; /// Determines the initial complexity of all intersections. Intersections marked "Crossing" are /// considered "unclassified" and will be updated with a guess, others will be left unchanged. pub fn classify_intersections(streets: &mut StreetNetwork) { - let mut changes: Vec<(NodeID, (IntersectionComplexity, ConflictType))> = Vec::new(); + let mut changes: Vec<_> = Vec::new(); for (id, inter) in &streets.intersections { if let Crossing = inter.complexity { changes.push((*id, guess_complexity(streets, id))); } } - for (id, complexity) in changes.into_iter() { + for (id, (complexity, conflict_level, movements)) in changes.into_iter() { let intersection = streets.intersections.get_mut(&id).unwrap(); - intersection.complexity = complexity.0; - intersection.conflict_level = complexity.1; + intersection.complexity = complexity; + intersection.conflict_level = conflict_level; + intersection.movements = movements; } } @@ -29,7 +31,7 @@ pub fn classify_intersections(streets: &mut StreetNetwork) { fn guess_complexity( streets: &StreetNetwork, intersection_id: &NodeID, -) -> (IntersectionComplexity, ConflictType) { +) -> (IntersectionComplexity, ConflictType, Vec) { use ConflictType::*; let road_ids = streets.roads_per_intersection(*intersection_id); let roads: Vec<&Road> = road_ids @@ -39,12 +41,13 @@ fn guess_complexity( // A terminus is characterised by a single connected road. if road_ids.len() == 1 { - return (Terminus, Uncontested); + return (Terminus, Uncontested, vec![(0, 0)]); } // A Connection is characterised by exactly two connected roads. if road_ids.len() == 2 { - return (Connection, Uncontested); + // TODO check directions of roads and determine movements and if it is well formed etc. + return (Connection, Uncontested, vec![(0, 1), (1, 0)]); } // Calculate all the possible movements, except (U-turns). @@ -79,8 +82,8 @@ fn guess_complexity( } match worst_conflict { - Cross => (Crossing, Cross), - c => (MultiConnection, c), + Cross => (Crossing, Cross, connections), + c => (MultiConnection, c, connections), } } diff --git a/osm2streets/src/types.rs b/osm2streets/src/types.rs index f130ba31..fe3e9aed 100644 --- a/osm2streets/src/types.rs +++ b/osm2streets/src/types.rs @@ -166,3 +166,7 @@ pub enum ControlType { Border, //TODO move to using IntersectionComplexity::MapEdge Construction, // Are these treated as "closed"? } + +/// The path that some lanes of traffic can take through an intersection. +/// This representation is the (from, to) roads, identified by their index in the Intersection. +pub type IndexedMovement = (usize, usize); diff --git a/street-explorer/www/js/layers.js b/street-explorer/www/js/layers.js index 2c226110..81c0a919 100644 --- a/street-explorer/www/js/layers.js +++ b/street-explorer/www/js/layers.js @@ -171,7 +171,9 @@ export const makeDotLayer = async (text, { bounds }) => { export const makeDebugLayer = (text) => { return new L.geoJSON(JSON.parse(text), { onEachFeature: function (feature, layer) { - layer.bindTooltip(feature.properties.label, { permanent: true }); + if (feature.properties.label) { + layer.bindTooltip(feature.properties.label, { permanent: true }); + } }, }); }; diff --git a/street-explorer/www/js/main.js b/street-explorer/www/js/main.js index 8c620ee6..eb8aae26 100644 --- a/street-explorer/www/js/main.js +++ b/street-explorer/www/js/main.js @@ -216,6 +216,9 @@ function importOSM(groupName, app, osmXML, drivingSide, addOSMLayer) { group.addLazyLayer("Debug road ordering", () => makeDebugLayer(network.debugClockwiseOrderingGeojson()) ); + group.addLazyLayer("Debug movements", () => + makeDebugLayer(network.debugMovementsGeojson()) + ); // TODO Graphviz hits `ReferenceError: can't access lexical declaration 'graph' before initialization` const numDebugSteps = network.getDebugSteps().length; diff --git a/streets_reader/src/split_ways.rs b/streets_reader/src/split_ways.rs index ed8f61f9..2815b9c8 100644 --- a/streets_reader/src/split_ways.rs +++ b/streets_reader/src/split_ways.rs @@ -3,8 +3,8 @@ use std::collections::{hash_map::Entry, HashMap, HashSet}; use abstutil::{Counter, Tags, Timer}; use geom::{Distance, HashablePt2D, PolyLine, Pt2D}; use osm2streets::{ - osm, ControlType, CrossingType, Direction, Intersection, IntersectionComplexity, OriginalRoad, - Road, StreetNetwork, + osm, ConflictType, ControlType, CrossingType, Direction, Intersection, IntersectionComplexity, + OriginalRoad, Road, StreetNetwork, }; use super::OsmExtract; From fcdb296415dd4e28f466056ac33c0396871d231f Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Sat, 5 Nov 2022 13:49:25 +0800 Subject: [PATCH 03/27] untested: Calculate if movements using the same road in different directions cross or not --- .../src/transform/classify_intersections.rs | 61 +++++++++++++++---- 1 file changed, 49 insertions(+), 12 deletions(-) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 90295d6a..dc373dbf 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -2,7 +2,8 @@ use crate::osm::NodeID; use crate::types::IndexedMovement; use crate::IntersectionComplexity::*; use crate::{ - ConflictType, IntersectionComplexity, OriginalRoad, RestrictionType, Road, StreetNetwork, + ConflictType, DrivingSide, IntersectionComplexity, OriginalRoad, RestrictionType, Road, + StreetNetwork, }; use std::cmp::{max, min}; use std::collections::BTreeMap; @@ -75,7 +76,7 @@ fn guess_complexity( let mut each_con = connections.iter(); while let Some(small_con) = each_con.next() { for large_con in each_con.clone() { - let conflict = calc_conflict(small_con, large_con); + let conflict = calc_conflict(small_con, large_con, streets.config.driving_side); worst_conflict = max(worst_conflict, conflict); conflicts.insert((small_con, large_con), conflict); } @@ -107,29 +108,65 @@ fn turn_is_allowed(src: &Road, dst_id: &OriginalRoad) -> bool { !has_exclusive_allows } -fn calc_conflict(a: &(usize, usize), b: &(usize, usize)) -> ConflictType { +fn calc_conflict(a: &(usize, usize), b: &(usize, usize), side: DrivingSide) -> ConflictType { use ConflictType::*; + + // If the traffic starts of ends at the same place in the same direction... + if a.0 == b.0 && a.1 == b.1 { + return Uncontested; + } if a.0 == b.0 { return Diverge; } if a.1 == b.1 { return Merge; } - if a.0 == b.1 || a.1 == b.0 { - // TODO depends on driving side and arm order? - // It would be clear if a and b were flows instead of roads. - } - // The intersection has a boundary that we have labelled 0 to n in clockwise order (from an - // arbitrary point), like a string layed in a circle. If we represent `a` as an arc from one point - // on the string to another, then there is a section of the string that connects the two points - // and two ends. A second arc, `b`, crosses `a` if and only if `b` has one end between the points - // and one end outside. + // The intersection has a boundary that we have labelled 0 to n-1 in clockwise order (from an + // arbitrary point), like a string laying in a circle. If we represent `a` as an arc from one + // point on the string to another, then there is a section of the string between the two points, + // connecting them the two points and two ends of string "on the outside". A second arc, `b`, + // crosses `a` if and only if `b` has one end between the points and one end outside. // ______ // / | \ // | |a n // | | 0 // \__|___/ + + // What if the traffic meets going in opposite directions? + // It depends on where the traffic came from, and which side we're driving on. + + // Below: If a movement going in the other direction, `b`, joins the indicated LHT movement `a` + // (at either end), it will join the road on the dotted side. Whether the other end of `b` is + // between the endpoints of `a` or not corresponds to the crossing of the road. + // Therefore, if `a` is drawn pointing upwards from low .0 to high .1, + // then LHT would be crossed by movements joining from the "inside". + // ______ ______ + // / ^: \ / :| \ + // | a|: n | :| n + // | |: 0 | :|a 0 + // \__|:__/ \__:V__/ + + // This equation (hopefully) works. Once it does, just trust it: + let is_driving_side_between = (side == DrivingSide::Left) == (a.0 < a.1); // `==` or `^`? + + if a.0 == b.1 { + return if is_driving_side_between ^ is_between(b.0, a) { + // `==` or `^`? + Cross + } else { + Uncontested + }; + } + if a.1 == b.0 { + return if is_driving_side_between ^ is_between(b.1, a) { + // `==` or `^`? + Cross + } else { + Uncontested + }; + } + if is_between(a.0, b) ^ is_between(a.1, b) { return Cross; } From 76d32e007a9cd714815a79c71125436db4f743a5 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Mon, 7 Nov 2022 21:11:13 +0800 Subject: [PATCH 04/27] Take into account the driving direction of the roads --- .../src/transform/classify_intersections.rs | 37 ++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index dc373dbf..11cc462c 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -1,5 +1,6 @@ use crate::osm::NodeID; use crate::types::IndexedMovement; +use crate::Direction; use crate::IntersectionComplexity::*; use crate::{ ConflictType, DrivingSide, IntersectionComplexity, OriginalRoad, RestrictionType, Road, @@ -51,17 +52,43 @@ fn guess_complexity( return (Connection, Uncontested, vec![(0, 1), (1, 0)]); } - // Calculate all the possible movements, except (U-turns). - //FIXME assert!(roads is sorted clockwise), which it isn't + // Calculate all the possible movements, (except U-turns, for now). let mut connections = Vec::new(); // Consider turns pairs of roads, from s to d, using their position as index, so we can them later. for s in 0..road_ids.len() { for d in 0..road_ids.len() { if s == d { - continue; + continue; // Ignore U-turns. } - // FIXME check if we can travel into the intersection on s and out of the intersection on d - if turn_is_allowed(roads.get(s).unwrap(), road_ids.get(d).unwrap()) { + + // Calculate if it is possible to emerge from s into the intersection. + let src_road = roads[s]; + let inbound_dir = if road_ids[s].i2 == *intersection_id { + Direction::Fwd + } else { + Direction::Back + }; + if let Some(dir) = src_road.oneway_for_driving() { + if dir != inbound_dir { + continue; + } + } + + // Calculate if it is possible to leave the intersection into d. + let dst_road = roads[d]; + let outbound_dir = if road_ids[d].i1 == *intersection_id { + Direction::Fwd + } else { + Direction::Back + }; + if let Some(dir) = dst_road.oneway_for_driving() { + if dir != outbound_dir { + continue; + } + } + + // Check for any turn restrictions. + if turn_is_allowed(src_road, &road_ids[d]) { connections.push((s, d)); } } From fa037f3508a35db4dbf4e5789d94cc2d0d8c2001 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Mon, 7 Nov 2022 21:14:01 +0800 Subject: [PATCH 05/27] Clear the list of movements when modifying an intersection The movements become incorrect (and lead to crashes) when the number of roads in an intersection changes. The movements should just be recalculated (which might be easy, but I haven't reasoned it out yet). --- osm2streets/src/lib.rs | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/osm2streets/src/lib.rs b/osm2streets/src/lib.rs index b936f5e6..efa0d0ec 100644 --- a/osm2streets/src/lib.rs +++ b/osm2streets/src/lib.rs @@ -163,23 +163,22 @@ impl StreetNetwork { pub fn insert_road(&mut self, id: OriginalRoad, road: Road) { self.roads.insert(id, road); for i in [id.i1, id.i2] { - self.intersections.get_mut(&i).unwrap().roads.push(id); + { + let intersection = self.intersections.get_mut(&i).unwrap(); + intersection.roads.push(id); + intersection.movements = Vec::new(); // TODO restore this + } self.sort_roads(i); } } pub fn remove_road(&mut self, id: &OriginalRoad) -> Road { - // Since the roads are already sorted, removing doesn't hurt anything - self.intersections - .get_mut(&id.i1) - .unwrap() - .roads - .retain(|r| r != id); - self.intersections - .get_mut(&id.i2) - .unwrap() - .roads - .retain(|r| r != id); + for i in [id.i1, id.i2] { + // Since the roads are already sorted, removing doesn't break the sort. + let intersection = self.intersections.get_mut(&i).unwrap(); + intersection.roads.retain(|r| r != id); + intersection.movements = Vec::new(); // TODO restore this + } self.roads.remove(id).unwrap() } From 93742f4650bb84db1115c9761109fb2174a0ca56 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Mon, 7 Nov 2022 21:33:45 +0800 Subject: [PATCH 06/27] Use terser syntax --- osm2streets/src/transform/classify_intersections.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 11cc462c..42830cfb 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -19,7 +19,7 @@ pub fn classify_intersections(streets: &mut StreetNetwork) { } } - for (id, (complexity, conflict_level, movements)) in changes.into_iter() { + for (id, (complexity, conflict_level, movements)) in changes { let intersection = streets.intersections.get_mut(&id).unwrap(); intersection.complexity = complexity; intersection.conflict_level = conflict_level; @@ -36,10 +36,7 @@ fn guess_complexity( ) -> (IntersectionComplexity, ConflictType, Vec) { use ConflictType::*; let road_ids = streets.roads_per_intersection(*intersection_id); - let roads: Vec<&Road> = road_ids - .iter() - .map(|id| streets.roads.get(id).unwrap()) - .collect(); + let roads: Vec<&Road> = road_ids.iter().map(|id| &streets.roads[id]).collect(); // A terminus is characterised by a single connected road. if road_ids.len() == 1 { From 670a89039c81d0b027a0b78dbf650a978edb1d79 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Mon, 7 Nov 2022 21:34:21 +0800 Subject: [PATCH 07/27] Improve comment about using indexes to refer to roads --- osm2streets/src/transform/classify_intersections.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 42830cfb..bfcf527c 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -51,7 +51,8 @@ fn guess_complexity( // Calculate all the possible movements, (except U-turns, for now). let mut connections = Vec::new(); - // Consider turns pairs of roads, from s to d, using their position as index, so we can them later. + // Consider all pairs of roads, from s to d. Identify them using their index in the list - which + // is sorted in clockwise order - so that we can compare their position later. for s in 0..road_ids.len() { for d in 0..road_ids.len() { if s == d { From 01347e68c16f98bbfa7e3b1bfd58ac7068b67663 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Wed, 9 Nov 2022 10:51:14 +0800 Subject: [PATCH 08/27] Extract the "can drive into/out of" logic into a fn --- .../src/transform/classify_intersections.rs | 52 ++++++++++++------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index bfcf527c..63bb243d 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -61,28 +61,14 @@ fn guess_complexity( // Calculate if it is possible to emerge from s into the intersection. let src_road = roads[s]; - let inbound_dir = if road_ids[s].i2 == *intersection_id { - Direction::Fwd - } else { - Direction::Back - }; - if let Some(dir) = src_road.oneway_for_driving() { - if dir != inbound_dir { - continue; - } + if !can_drive_out_of(src_road, road_ids[s], *intersection_id) { + continue; } // Calculate if it is possible to leave the intersection into d. let dst_road = roads[d]; - let outbound_dir = if road_ids[d].i1 == *intersection_id { - Direction::Fwd - } else { - Direction::Back - }; - if let Some(dir) = dst_road.oneway_for_driving() { - if dir != outbound_dir { - continue; - } + if !can_drive_into(dst_road, road_ids[d], *intersection_id) { + continue; } // Check for any turn restrictions. @@ -113,6 +99,36 @@ fn guess_complexity( } } +fn can_drive_out_of(road: &Road, road_id: OriginalRoad, which_end: NodeID) -> bool { + if !road.is_driveable() { + return false; + } + if let Some(driving_dir) = road.oneway_for_driving() { + let required_dir = if road_id.i2 == which_end { + Direction::Fwd + } else { + Direction::Back + }; + return driving_dir == required_dir; + } + return true; +} + +fn can_drive_into(road: &Road, road_id: OriginalRoad, which_end: NodeID) -> bool { + if !road.is_driveable() { + return false; + } + if let Some(driving_dir) = road.oneway_for_driving() { + let required_dir = if road_id.i1 == which_end { + Direction::Fwd + } else { + Direction::Back + }; + return driving_dir == required_dir; + } + return true; +} + fn turn_is_allowed(src: &Road, dst_id: &OriginalRoad) -> bool { let mut has_exclusive_allows = false; for (t, other) in &src.turn_restrictions { From d8727773121dfe3f3d1e9e7ca401342a10ca9362 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Wed, 9 Nov 2022 10:51:59 +0800 Subject: [PATCH 09/27] Calculate movements for Connections (instead of assuming) --- .../src/transform/classify_intersections.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 63bb243d..22c4631a 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -37,16 +37,27 @@ fn guess_complexity( use ConflictType::*; let road_ids = streets.roads_per_intersection(*intersection_id); let roads: Vec<&Road> = road_ids.iter().map(|id| &streets.roads[id]).collect(); + // TODO filter out all non-driving roads before continuing. // A terminus is characterised by a single connected road. if road_ids.len() == 1 { - return (Terminus, Uncontested, vec![(0, 0)]); + return (Terminus, Uncontested, Vec::new()); } // A Connection is characterised by exactly two connected roads. if road_ids.len() == 2 { - // TODO check directions of roads and determine movements and if it is well formed etc. - return (Connection, Uncontested, vec![(0, 1), (1, 0)]); + let mut movements = Vec::new(); + if can_drive_out_of(roads[0], road_ids[0], *intersection_id) + && can_drive_into(roads[1], road_ids[1], *intersection_id) + { + movements.push((0, 1)); + } + if can_drive_out_of(roads[1], road_ids[1], *intersection_id) + && can_drive_into(roads[0], road_ids[0], *intersection_id) + { + movements.push((1, 0)); + } + return (Connection, Uncontested, movements); } // Calculate all the possible movements, (except U-turns, for now). From b75b2f27ca3c2dc43b7b4db53dbad0a7e08642bf Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Wed, 9 Nov 2022 10:53:59 +0800 Subject: [PATCH 10/27] Fix an Uncontested case with bidi roads in calc_conflict --- osm2streets/src/transform/classify_intersections.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 22c4631a..80d678f7 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -200,11 +200,11 @@ fn calc_conflict(a: &(usize, usize), b: &(usize, usize), side: DrivingSide) -> C // \__|:__/ \__:V__/ // This equation (hopefully) works. Once it does, just trust it: - let is_driving_side_between = (side == DrivingSide::Left) == (a.0 < a.1); // `==` or `^`? + // TODO unit test these three equations. + let is_driving_side_between = (side == DrivingSide::Left) ^ (a.0 < a.1); // `==` or `^`? if a.0 == b.1 { return if is_driving_side_between ^ is_between(b.0, a) { - // `==` or `^`? Cross } else { Uncontested @@ -212,7 +212,6 @@ fn calc_conflict(a: &(usize, usize), b: &(usize, usize), side: DrivingSide) -> C } if a.1 == b.0 { return if is_driving_side_between ^ is_between(b.1, a) { - // `==` or `^`? Cross } else { Uncontested From 156c79a68caa2692db3fe7ae92f7221fcb7ab26f Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Wed, 9 Nov 2022 15:57:03 +0800 Subject: [PATCH 11/27] Offset arrow start/end points from the center of bidi roads --- osm2streets/src/render.rs | 45 ++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/osm2streets/src/render.rs b/osm2streets/src/render.rs index 330f8e4f..91f6ac3d 100644 --- a/osm2streets/src/render.rs +++ b/osm2streets/src/render.rs @@ -7,7 +7,7 @@ use anyhow::Result; use geom::{ArrowCap, Distance, Line, PolyLine}; use crate::IntersectionComplexity::MultiConnection; -use crate::{DebugStreets, Direction, LaneType, StreetNetwork}; +use crate::{DebugStreets, Direction, DrivingSide, LaneType, StreetNetwork}; impl StreetNetwork { /// Saves the plain GeoJSON rendering to a file. @@ -265,6 +265,11 @@ impl StreetNetwork { /// For an intersection, show all the movements. pub fn debug_movements_geojson(&self, timer: &mut Timer) -> Result { let initial_map = crate::initial::InitialMap::new(self, timer); + let arrow_shift_dist = if self.config.driving_side == DrivingSide::Right { + Distance::meters(-1.3) + } else { + Distance::meters(1.3) + }; let mut pairs = Vec::new(); @@ -275,23 +280,39 @@ impl StreetNetwork { .iter() .map(|r| { let pl = &initial_map.roads[r].trimmed_center_pts; - let pt = if r.i1 == *i { - pl.first_pt() + let first_road_segment = if r.i1 == *i { + pl.first_line() } else { - pl.last_pt() + pl.last_line().reversed() }; - pt + if self + .roads + .get(r) + .map_or(false, |road| road.oneway_for_driving().is_some()) + { + (first_road_segment.pt1(), first_road_segment.pt1()) + } else { + ( + first_road_segment + .shift_either_direction(arrow_shift_dist) + .pt1(), + first_road_segment + .shift_either_direction(-arrow_shift_dist) + .pt1(), + ) + } }) .collect(); for (a, b) in intersection.movements.iter() { if *a != *b { - pairs.push(( - Line::must_new(road_points[*a], road_points[*b]) - .to_polyline() - .make_arrow(Distance::meters(0.3), ArrowCap::Triangle) - .to_geojson(Some(&self.gps_bounds)), - make_props(&[]), - )) + if let Ok(line) = Line::new(road_points[*a].0, road_points[*b].1) { + pairs.push(( + line.to_polyline() + .make_arrow(Distance::meters(0.5), ArrowCap::Triangle) + .to_geojson(Some(&self.gps_bounds)), + make_props(&[]), + )) + } } } } From eaf87130bb775ccc6049a3e370b5a75033e61f5f Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Wed, 9 Nov 2022 19:33:02 +0800 Subject: [PATCH 12/27] Document ConflictType and conflict_level --- osm2streets/src/initial.rs | 1 + osm2streets/src/types.rs | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/osm2streets/src/initial.rs b/osm2streets/src/initial.rs index c69d8d0a..1f29144e 100644 --- a/osm2streets/src/initial.rs +++ b/osm2streets/src/initial.rs @@ -58,6 +58,7 @@ pub struct Intersection { pub polygon: Polygon, pub roads: BTreeSet, pub complexity: IntersectionComplexity, + /// The most dangerous type of conflict present in the intersection. pub conflict_level: ConflictType, pub control: ControlType, pub elevation: Distance, diff --git a/osm2streets/src/types.rs b/osm2streets/src/types.rs index fe3e9aed..9650ff6e 100644 --- a/osm2streets/src/types.rs +++ b/osm2streets/src/types.rs @@ -97,7 +97,7 @@ pub enum DrivingSide { Left, } -/// How a lane of travel is interrupted. +/// How a lane of travel is interrupted, as it meets another or ends. #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)] pub enum InterruptionType { Uninterrupted, @@ -107,6 +107,7 @@ pub enum InterruptionType { DeadEnd, } +/// How two lanes of travel conflict with each other. #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord, Serialize, Deserialize)] pub enum ConflictType { Uncontested, From 1502ce887a2e3a11db7174d80cc9f2a2074240be Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Wed, 9 Nov 2022 22:09:03 +0800 Subject: [PATCH 13/27] Accept test output representing the new MultiConnection Merge/Diverge classifications I have spot checked the results, which look largely correct. I did find a false-positive crossing detection with a one way merging into a bidi road in northgate_dual_carriageway, which I have edited into the output, so the test still fails. --- tests/src/arizona_highways/geometry.json | 42 +- tests/src/aurora_sausage_link/geometry.json | 8 +- tests/src/borough_sausage_links/geometry.json | 60 +- .../bristol_contraflow_cycleway/geometry.json | 22 +- tests/src/bristol_sausage_links/geometry.json | 14 +- tests/src/cycleway_rejoin_road/geometry.json | 124 ++-- tests/src/i5_exit_ramp/geometry.json | 14 +- tests/src/kingsway_junction/geometry.json | 98 +-- tests/src/leeds_cycleway/geometry.json | 678 +++++++++--------- .../northgate_dual_carriageway/geometry.json | 72 +- tests/src/oneway_loop/geometry.json | 34 +- .../src/perth_peanut_roundabout/geometry.json | 24 +- .../src/perth_stretched_lights/geometry.json | 2 +- tests/src/roosevelt_cycletrack/geometry.json | 30 +- tests/src/seattle_slip_lane/geometry.json | 6 +- tests/src/service_road_loop/geometry.json | 16 +- tests/src/st_georges_cycletrack/geometry.json | 114 +-- tests/src/taipei/geometry.json | 26 +- tests/src/tempe_light_rail/geometry.json | 2 +- tests/src/tempe_split/geometry.json | 8 +- 20 files changed, 697 insertions(+), 697 deletions(-) diff --git a/tests/src/arizona_highways/geometry.json b/tests/src/arizona_highways/geometry.json index d20704de..27131616 100644 --- a/tests/src/arizona_highways/geometry.json +++ b/tests/src/arizona_highways/geometry.json @@ -4472,7 +4472,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/257973235", "osm_node_id": 257973235, @@ -4513,7 +4513,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/257973558", "osm_node_id": 257973558, @@ -4558,7 +4558,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/257973659", "osm_node_id": 257973659, @@ -4652,7 +4652,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/608494028", "osm_node_id": 608494028, @@ -5005,7 +5005,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1950975867", "osm_node_id": 1950975867, @@ -5046,7 +5046,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1950975883", "osm_node_id": 1950975883, @@ -5124,7 +5124,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1950975923", "osm_node_id": 1950975923, @@ -5165,7 +5165,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1950975926", "osm_node_id": 1950975926, @@ -5431,7 +5431,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2391008592", "osm_node_id": 2391008592, @@ -5476,7 +5476,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2391008617", "osm_node_id": 2391008617, @@ -5656,7 +5656,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2454728514", "osm_node_id": 2454728514, @@ -5734,7 +5734,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2457540680", "osm_node_id": 2457540680, @@ -5775,7 +5775,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2457540684", "osm_node_id": 2457540684, @@ -5816,7 +5816,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2457540685", "osm_node_id": 2457540685, @@ -6069,7 +6069,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2457540697", "osm_node_id": 2457540697, @@ -6110,7 +6110,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2457540699", "osm_node_id": 2457540699, @@ -6151,7 +6151,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2457540707", "osm_node_id": 2457540707, @@ -6196,7 +6196,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2459207619", "osm_node_id": 2459207619, @@ -6393,7 +6393,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4341085386", "osm_node_id": 4341085386, @@ -6771,7 +6771,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5134463770", "osm_node_id": 5134463770, @@ -7120,7 +7120,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6228919924", "osm_node_id": 6228919924, diff --git a/tests/src/aurora_sausage_link/geometry.json b/tests/src/aurora_sausage_link/geometry.json index 0fd0bcf7..c3fdc8f8 100644 --- a/tests/src/aurora_sausage_link/geometry.json +++ b/tests/src/aurora_sausage_link/geometry.json @@ -462,7 +462,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/53122087", "osm_node_id": 53122087, @@ -651,7 +651,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7404463396", "osm_node_id": 7404463396, @@ -692,7 +692,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7404463397", "osm_node_id": 7404463397, @@ -741,7 +741,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7404463398", "osm_node_id": 7404463398, diff --git a/tests/src/borough_sausage_links/geometry.json b/tests/src/borough_sausage_links/geometry.json index 4797dd11..6a5c22ea 100644 --- a/tests/src/borough_sausage_links/geometry.json +++ b/tests/src/borough_sausage_links/geometry.json @@ -2973,7 +2973,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25497966", "osm_node_id": 25497966, @@ -3047,7 +3047,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25500014", "osm_node_id": 25500014, @@ -3125,7 +3125,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/31349035", "osm_node_id": 31349035, @@ -3367,7 +3367,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/347413549", "osm_node_id": 347413549, @@ -3404,7 +3404,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/352928523", "osm_node_id": 352928523, @@ -3531,7 +3531,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1165070926", "osm_node_id": 1165070926, @@ -3584,7 +3584,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1165070941", "osm_node_id": 1165070941, @@ -3629,7 +3629,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1165070964", "osm_node_id": 1165070964, @@ -3686,7 +3686,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1165071010", "osm_node_id": 1165071010, @@ -3743,7 +3743,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1165071161", "osm_node_id": 1165071161, @@ -3788,7 +3788,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1165071224", "osm_node_id": 1165071224, @@ -3841,7 +3841,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1165071364", "osm_node_id": 1165071364, @@ -3890,7 +3890,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2217388361", "osm_node_id": 2217388361, @@ -3927,7 +3927,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2217388387", "osm_node_id": 2217388387, @@ -3976,7 +3976,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2217412069", "osm_node_id": 2217412069, @@ -4029,7 +4029,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2217412073", "osm_node_id": 2217412073, @@ -4156,7 +4156,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2217475451", "osm_node_id": 2217475451, @@ -4217,7 +4217,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2217475460", "osm_node_id": 2217475460, @@ -4336,7 +4336,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2317365390", "osm_node_id": 2317365390, @@ -4381,7 +4381,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2317365395", "osm_node_id": 2317365395, @@ -4422,7 +4422,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5220719428", "osm_node_id": 5220719428, @@ -4537,7 +4537,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5220719448", "osm_node_id": 5220719448, @@ -4590,7 +4590,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5220719449", "osm_node_id": 5220719449, @@ -4684,7 +4684,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5220719463", "osm_node_id": 5220719463, @@ -4869,7 +4869,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5220776401", "osm_node_id": 5220776401, @@ -4906,7 +4906,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5220776402", "osm_node_id": 5220776402, @@ -4943,7 +4943,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5220776403", "osm_node_id": 5220776403, @@ -4984,7 +4984,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5220776406", "osm_node_id": 5220776406, @@ -5033,7 +5033,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5220776407", "osm_node_id": 5220776407, @@ -5123,7 +5123,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5220776411", "osm_node_id": 5220776411, diff --git a/tests/src/bristol_contraflow_cycleway/geometry.json b/tests/src/bristol_contraflow_cycleway/geometry.json index 346e3920..723d0a8b 100644 --- a/tests/src/bristol_contraflow_cycleway/geometry.json +++ b/tests/src/bristol_contraflow_cycleway/geometry.json @@ -1547,7 +1547,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/260742833", "osm_node_id": 260742833, @@ -1711,7 +1711,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/260742941", "osm_node_id": 260742941, @@ -1908,7 +1908,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1223212928", "osm_node_id": 1223212928, @@ -1957,7 +1957,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1316486883", "osm_node_id": 1316486883, @@ -2117,7 +2117,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2847905816", "osm_node_id": 2847905816, @@ -2170,7 +2170,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2847905817", "osm_node_id": 2847905817, @@ -2215,7 +2215,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2847905819", "osm_node_id": 2847905819, @@ -2301,7 +2301,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8411724259", "osm_node_id": 8411724259, @@ -2346,7 +2346,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8411724268", "osm_node_id": 8411724268, @@ -2391,7 +2391,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8411977276", "osm_node_id": 8411977276, @@ -2440,7 +2440,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8411977306", "osm_node_id": 8411977306, diff --git a/tests/src/bristol_sausage_links/geometry.json b/tests/src/bristol_sausage_links/geometry.json index c199ec21..a04565c4 100644 --- a/tests/src/bristol_sausage_links/geometry.json +++ b/tests/src/bristol_sausage_links/geometry.json @@ -806,7 +806,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/21257313", "osm_node_id": 21257313, @@ -966,7 +966,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/154650255", "osm_node_id": 154650255, @@ -1003,7 +1003,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/1316486886", "osm_node_id": 1316486886, @@ -1109,7 +1109,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1695906751", "osm_node_id": 1695906751, @@ -1294,7 +1294,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/4740760678", "osm_node_id": 4740760678, @@ -1331,7 +1331,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/4740760680", "osm_node_id": 4740760680, @@ -1421,7 +1421,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/4740760690", "osm_node_id": 4740760690, diff --git a/tests/src/cycleway_rejoin_road/geometry.json b/tests/src/cycleway_rejoin_road/geometry.json index 0c696b61..7d7cece9 100644 --- a/tests/src/cycleway_rejoin_road/geometry.json +++ b/tests/src/cycleway_rejoin_road/geometry.json @@ -7570,7 +7570,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25502896", "osm_node_id": 25502896, @@ -7611,7 +7611,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25503378", "osm_node_id": 25503378, @@ -7697,7 +7697,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25504033", "osm_node_id": 25504033, @@ -7857,7 +7857,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/264803343", "osm_node_id": 264803343, @@ -7906,7 +7906,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/266138052", "osm_node_id": 266138052, @@ -7988,7 +7988,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/730856463", "osm_node_id": 730856463, @@ -8193,7 +8193,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126025785", "osm_node_id": 1126025785, @@ -8500,7 +8500,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126222441", "osm_node_id": 1126222441, @@ -8553,7 +8553,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126222447", "osm_node_id": 1126222447, @@ -8618,7 +8618,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126222450", "osm_node_id": 1126222450, @@ -8671,7 +8671,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126222455", "osm_node_id": 1126222455, @@ -8843,7 +8843,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126222586", "osm_node_id": 1126222586, @@ -8888,7 +8888,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1240373509", "osm_node_id": 1240373509, @@ -9089,7 +9089,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3218009838", "osm_node_id": 3218009838, @@ -9175,7 +9175,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4673133618", "osm_node_id": 4673133618, @@ -9253,7 +9253,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4839044022", "osm_node_id": 4839044022, @@ -9294,7 +9294,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4839044023", "osm_node_id": 4839044023, @@ -9343,7 +9343,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4839044024", "osm_node_id": 4839044024, @@ -9429,7 +9429,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4957735651", "osm_node_id": 4957735651, @@ -9683,7 +9683,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5021048663", "osm_node_id": 5021048663, @@ -9732,7 +9732,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5021048664", "osm_node_id": 5021048664, @@ -9892,7 +9892,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5268321224", "osm_node_id": 5268321224, @@ -10052,7 +10052,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5739261534", "osm_node_id": 5739261534, @@ -10277,7 +10277,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6847224398", "osm_node_id": 6847224398, @@ -10359,7 +10359,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7330281376", "osm_node_id": 7330281376, @@ -10621,7 +10621,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343947", "osm_node_id": 9136343947, @@ -10711,7 +10711,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343969", "osm_node_id": 9136343969, @@ -10764,7 +10764,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343970", "osm_node_id": 9136343970, @@ -10813,7 +10813,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343971", "osm_node_id": 9136343971, @@ -10862,7 +10862,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343972", "osm_node_id": 9136343972, @@ -11116,7 +11116,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343980", "osm_node_id": 9136343980, @@ -11251,7 +11251,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343987", "osm_node_id": 9136343987, @@ -11337,7 +11337,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343996", "osm_node_id": 9136343996, @@ -11394,7 +11394,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343997", "osm_node_id": 9136343997, @@ -11439,7 +11439,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343998", "osm_node_id": 9136343998, @@ -11488,7 +11488,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136344004", "osm_node_id": 9136344004, @@ -11529,7 +11529,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136344005", "osm_node_id": 9136344005, @@ -11582,7 +11582,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136344008", "osm_node_id": 9136344008, @@ -11639,7 +11639,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136344009", "osm_node_id": 9136344009, @@ -11684,7 +11684,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136344010", "osm_node_id": 9136344010, @@ -11741,7 +11741,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136360630", "osm_node_id": 9136360630, @@ -11786,7 +11786,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136360631", "osm_node_id": 9136360631, @@ -11835,7 +11835,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136383822", "osm_node_id": 9136383822, @@ -11958,7 +11958,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136383834", "osm_node_id": 9136383834, @@ -12011,7 +12011,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136383835", "osm_node_id": 9136383835, @@ -12060,7 +12060,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136383836", "osm_node_id": 9136383836, @@ -12105,7 +12105,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136383837", "osm_node_id": 9136383837, @@ -12195,7 +12195,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136383840", "osm_node_id": 9136383840, @@ -12486,7 +12486,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150256922", "osm_node_id": 9150256922, @@ -12543,7 +12543,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150256934", "osm_node_id": 9150256934, @@ -12629,7 +12629,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276536", "osm_node_id": 9150276536, @@ -12682,7 +12682,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276543", "osm_node_id": 9150276543, @@ -12727,7 +12727,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276546", "osm_node_id": 9150276546, @@ -12780,7 +12780,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276548", "osm_node_id": 9150276548, @@ -12821,7 +12821,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276550", "osm_node_id": 9150276550, @@ -12878,7 +12878,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276551", "osm_node_id": 9150276551, @@ -12931,7 +12931,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276553", "osm_node_id": 9150276553, @@ -12984,7 +12984,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276554", "osm_node_id": 9150276554, @@ -13041,7 +13041,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276555", "osm_node_id": 9150276555, @@ -13180,7 +13180,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276560", "osm_node_id": 9150276560, @@ -13429,7 +13429,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276567", "osm_node_id": 9150276567, @@ -13478,7 +13478,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276568", "osm_node_id": 9150276568, diff --git a/tests/src/i5_exit_ramp/geometry.json b/tests/src/i5_exit_ramp/geometry.json index 4d95b8d0..1538c912 100644 --- a/tests/src/i5_exit_ramp/geometry.json +++ b/tests/src/i5_exit_ramp/geometry.json @@ -2315,7 +2315,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/29484936", "osm_node_id": 29484936, @@ -2504,7 +2504,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/29545445", "osm_node_id": 29545445, @@ -2549,7 +2549,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/29937543", "osm_node_id": 29937543, @@ -3328,7 +3328,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/631370102", "osm_node_id": 631370102, @@ -3492,7 +3492,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1864943558", "osm_node_id": 1864943558, @@ -3742,7 +3742,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3670717205", "osm_node_id": 3670717205, @@ -3787,7 +3787,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3670717206", "osm_node_id": 3670717206, diff --git a/tests/src/kingsway_junction/geometry.json b/tests/src/kingsway_junction/geometry.json index d9d0d3a1..4602a3d0 100644 --- a/tests/src/kingsway_junction/geometry.json +++ b/tests/src/kingsway_junction/geometry.json @@ -7349,7 +7349,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/31287525", "osm_node_id": 31287525, @@ -7390,7 +7390,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/32025947", "osm_node_id": 32025947, @@ -7443,7 +7443,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/32025949", "osm_node_id": 32025949, @@ -7521,7 +7521,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/32025961", "osm_node_id": 32025961, @@ -7611,7 +7611,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/306917570", "osm_node_id": 306917570, @@ -8054,7 +8054,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/743548189", "osm_node_id": 743548189, @@ -8558,7 +8558,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/929679768", "osm_node_id": 929679768, @@ -8599,7 +8599,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/955165980", "osm_node_id": 955165980, @@ -8677,7 +8677,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/955166004", "osm_node_id": 955166004, @@ -8726,7 +8726,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/955166067", "osm_node_id": 955166067, @@ -8767,7 +8767,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/955166095", "osm_node_id": 955166095, @@ -8812,7 +8812,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/955166125", "osm_node_id": 955166125, @@ -8861,7 +8861,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/955166153", "osm_node_id": 955166153, @@ -9226,7 +9226,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2265010779", "osm_node_id": 2265010779, @@ -9345,7 +9345,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790145016", "osm_node_id": 2790145016, @@ -9394,7 +9394,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790145018", "osm_node_id": 2790145018, @@ -9451,7 +9451,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790153398", "osm_node_id": 2790153398, @@ -9611,7 +9611,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790153421", "osm_node_id": 2790153421, @@ -9775,7 +9775,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790153452", "osm_node_id": 2790153452, @@ -9820,7 +9820,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790153455", "osm_node_id": 2790153455, @@ -10029,7 +10029,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2913662306", "osm_node_id": 2913662306, @@ -10086,7 +10086,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2913662315", "osm_node_id": 2913662315, @@ -10127,7 +10127,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2918379027", "osm_node_id": 2918379027, @@ -10217,7 +10217,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2918402991", "osm_node_id": 2918402991, @@ -10315,7 +10315,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2918402993", "osm_node_id": 2918402993, @@ -10364,7 +10364,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2918434149", "osm_node_id": 2918434149, @@ -10417,7 +10417,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2918472522", "osm_node_id": 2918472522, @@ -10474,7 +10474,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2920872874", "osm_node_id": 2920872874, @@ -10597,7 +10597,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4140571229", "osm_node_id": 4140571229, @@ -11067,7 +11067,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5405641445", "osm_node_id": 5405641445, @@ -11149,7 +11149,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6137128080", "osm_node_id": 6137128080, @@ -11243,7 +11243,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6137128391", "osm_node_id": 6137128391, @@ -11292,7 +11292,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6439595293", "osm_node_id": 6439595293, @@ -11538,7 +11538,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6480352139", "osm_node_id": 6480352139, @@ -11665,7 +11665,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7218399545", "osm_node_id": 7218399545, @@ -11718,7 +11718,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7796391487", "osm_node_id": 7796391487, @@ -11870,7 +11870,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8672774809", "osm_node_id": 8672774809, @@ -11915,7 +11915,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8672774810", "osm_node_id": 8672774810, @@ -11993,7 +11993,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8778504595", "osm_node_id": 8778504595, @@ -12243,7 +12243,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401787", "osm_node_id": 9298401787, @@ -12288,7 +12288,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401793", "osm_node_id": 9298401793, @@ -12333,7 +12333,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401794", "osm_node_id": 9298401794, @@ -12378,7 +12378,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401795", "osm_node_id": 9298401795, @@ -12513,7 +12513,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401798", "osm_node_id": 9298401798, @@ -12562,7 +12562,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401799", "osm_node_id": 9298401799, @@ -12599,7 +12599,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401802", "osm_node_id": 9298401802, @@ -12652,7 +12652,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401807", "osm_node_id": 9298401807, @@ -12783,7 +12783,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401918", "osm_node_id": 9298401918, @@ -12840,7 +12840,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401919", "osm_node_id": 9298401919, diff --git a/tests/src/leeds_cycleway/geometry.json b/tests/src/leeds_cycleway/geometry.json index d61890f2..30ee4f4f 100644 --- a/tests/src/leeds_cycleway/geometry.json +++ b/tests/src/leeds_cycleway/geometry.json @@ -31346,7 +31346,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/643852", "osm_node_id": 643852, @@ -31399,7 +31399,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/643906", "osm_node_id": 643906, @@ -31440,7 +31440,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/643907", "osm_node_id": 643907, @@ -31485,7 +31485,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/643911", "osm_node_id": 643911, @@ -31587,7 +31587,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/643945", "osm_node_id": 643945, @@ -31628,7 +31628,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/643946", "osm_node_id": 643946, @@ -31689,7 +31689,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/643950", "osm_node_id": 643950, @@ -31730,7 +31730,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/643951", "osm_node_id": 643951, @@ -31783,7 +31783,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9791699", "osm_node_id": 9791699, @@ -32033,7 +32033,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/10440056", "osm_node_id": 10440056, @@ -32168,7 +32168,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26109190", "osm_node_id": 26109190, @@ -32217,7 +32217,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26109191", "osm_node_id": 26109191, @@ -32262,7 +32262,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26109193", "osm_node_id": 26109193, @@ -32307,7 +32307,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26298420", "osm_node_id": 26298420, @@ -32352,7 +32352,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26298423", "osm_node_id": 26298423, @@ -32584,7 +32584,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26298428", "osm_node_id": 26298428, @@ -32633,7 +32633,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26298429", "osm_node_id": 26298429, @@ -32682,7 +32682,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26298430", "osm_node_id": 26298430, @@ -32723,7 +32723,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26298432", "osm_node_id": 26298432, @@ -32768,7 +32768,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26298441", "osm_node_id": 26298441, @@ -32920,7 +32920,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26300437", "osm_node_id": 26300437, @@ -32969,7 +32969,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26660391", "osm_node_id": 26660391, @@ -33010,7 +33010,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26660405", "osm_node_id": 26660405, @@ -33059,7 +33059,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26660637", "osm_node_id": 26660637, @@ -33153,7 +33153,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/26661426", "osm_node_id": 26661426, @@ -33198,7 +33198,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26661432", "osm_node_id": 26661432, @@ -33239,7 +33239,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26661442", "osm_node_id": 26661442, @@ -33284,7 +33284,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26661443", "osm_node_id": 26661443, @@ -33345,7 +33345,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26661446", "osm_node_id": 26661446, @@ -33488,7 +33488,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26661452", "osm_node_id": 26661452, @@ -33574,7 +33574,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26661455", "osm_node_id": 26661455, @@ -33824,7 +33824,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/250348721", "osm_node_id": 250348721, @@ -33877,7 +33877,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/301689294", "osm_node_id": 301689294, @@ -33926,7 +33926,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/301689309", "osm_node_id": 301689309, @@ -33975,7 +33975,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/301689312", "osm_node_id": 301689312, @@ -34028,7 +34028,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/301689321", "osm_node_id": 301689321, @@ -34073,7 +34073,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/301689323", "osm_node_id": 301689323, @@ -34155,7 +34155,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/319558919", "osm_node_id": 319558919, @@ -34208,7 +34208,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/320943570", "osm_node_id": 320943570, @@ -34261,7 +34261,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/320943571", "osm_node_id": 320943571, @@ -34306,7 +34306,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/320943572", "osm_node_id": 320943572, @@ -34355,7 +34355,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/320943573", "osm_node_id": 320943573, @@ -34412,7 +34412,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/320943575", "osm_node_id": 320943575, @@ -34465,7 +34465,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/320943606", "osm_node_id": 320943606, @@ -34510,7 +34510,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/320943615", "osm_node_id": 320943615, @@ -34559,7 +34559,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/320943617", "osm_node_id": 320943617, @@ -34608,7 +34608,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/320943620", "osm_node_id": 320943620, @@ -34669,7 +34669,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/320943623", "osm_node_id": 320943623, @@ -34722,7 +34722,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/320943624", "osm_node_id": 320943624, @@ -34808,7 +34808,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/320951161", "osm_node_id": 320951161, @@ -34943,7 +34943,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/320959868", "osm_node_id": 320959868, @@ -34996,7 +34996,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/320959869", "osm_node_id": 320959869, @@ -35143,7 +35143,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342529324", "osm_node_id": 342529324, @@ -35229,7 +35229,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342529363", "osm_node_id": 342529363, @@ -35278,7 +35278,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342529365", "osm_node_id": 342529365, @@ -35319,7 +35319,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579502", "osm_node_id": 342579502, @@ -35368,7 +35368,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579512", "osm_node_id": 342579512, @@ -35417,7 +35417,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579517", "osm_node_id": 342579517, @@ -35462,7 +35462,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579521", "osm_node_id": 342579521, @@ -35503,7 +35503,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579538", "osm_node_id": 342579538, @@ -35560,7 +35560,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579554", "osm_node_id": 342579554, @@ -35740,7 +35740,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579576", "osm_node_id": 342579576, @@ -35793,7 +35793,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579578", "osm_node_id": 342579578, @@ -35973,7 +35973,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579601", "osm_node_id": 342579601, @@ -36198,7 +36198,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579666", "osm_node_id": 342579666, @@ -36239,7 +36239,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579667", "osm_node_id": 342579667, @@ -36333,7 +36333,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342605804", "osm_node_id": 342605804, @@ -36419,7 +36419,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342626328", "osm_node_id": 342626328, @@ -36595,7 +36595,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/358204009", "osm_node_id": 358204009, @@ -36751,7 +36751,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/370191920", "osm_node_id": 370191920, @@ -36796,7 +36796,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/370191923", "osm_node_id": 370191923, @@ -36976,7 +36976,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/475070618", "osm_node_id": 475070618, @@ -37033,7 +37033,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/475070619", "osm_node_id": 475070619, @@ -37127,7 +37127,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/478743247", "osm_node_id": 478743247, @@ -37192,7 +37192,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/615978081", "osm_node_id": 615978081, @@ -37237,7 +37237,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/659971029", "osm_node_id": 659971029, @@ -37327,7 +37327,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/682218116", "osm_node_id": 682218116, @@ -37503,7 +37503,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/1020737577", "osm_node_id": 1020737577, @@ -37560,7 +37560,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1020737601", "osm_node_id": 1020737601, @@ -37605,7 +37605,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1020737603", "osm_node_id": 1020737603, @@ -37736,7 +37736,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1022749752", "osm_node_id": 1022749752, @@ -37830,7 +37830,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/1152092781", "osm_node_id": 1152092781, @@ -37879,7 +37879,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/1152092841", "osm_node_id": 1152092841, @@ -37924,7 +37924,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1152092910", "osm_node_id": 1152092910, @@ -38018,7 +38018,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1284137007", "osm_node_id": 1284137007, @@ -38075,7 +38075,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/1284137095", "osm_node_id": 1284137095, @@ -38251,7 +38251,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1569761300", "osm_node_id": 1569761300, @@ -38386,7 +38386,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1591373154", "osm_node_id": 1591373154, @@ -38439,7 +38439,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1591373158", "osm_node_id": 1591373158, @@ -38508,7 +38508,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/1591373161", "osm_node_id": 1591373161, @@ -38553,7 +38553,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1591373171", "osm_node_id": 1591373171, @@ -38618,7 +38618,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1591373175", "osm_node_id": 1591373175, @@ -38663,7 +38663,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1591373192", "osm_node_id": 1591373192, @@ -38712,7 +38712,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1591373193", "osm_node_id": 1591373193, @@ -38757,7 +38757,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1591373207", "osm_node_id": 1591373207, @@ -38839,7 +38839,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1601683577", "osm_node_id": 1601683577, @@ -38970,7 +38970,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1606819535", "osm_node_id": 1606819535, @@ -39191,7 +39191,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1675168026", "osm_node_id": 1675168026, @@ -39691,7 +39691,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1877939942", "osm_node_id": 1877939942, @@ -39744,7 +39744,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1877939944", "osm_node_id": 1877939944, @@ -39928,7 +39928,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1877939971", "osm_node_id": 1877939971, @@ -40063,7 +40063,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304851", "osm_node_id": 2014304851, @@ -40112,7 +40112,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2014304855", "osm_node_id": 2014304855, @@ -40165,7 +40165,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304856", "osm_node_id": 2014304856, @@ -40218,7 +40218,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304862", "osm_node_id": 2014304862, @@ -40267,7 +40267,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2014304864", "osm_node_id": 2014304864, @@ -40320,7 +40320,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2014304895", "osm_node_id": 2014304895, @@ -40369,7 +40369,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2014304901", "osm_node_id": 2014304901, @@ -40422,7 +40422,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304908", "osm_node_id": 2014304908, @@ -40475,7 +40475,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304911", "osm_node_id": 2014304911, @@ -40524,7 +40524,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2014304912", "osm_node_id": 2014304912, @@ -40577,7 +40577,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2014304914", "osm_node_id": 2014304914, @@ -40626,7 +40626,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304915", "osm_node_id": 2014304915, @@ -40671,7 +40671,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2014304918", "osm_node_id": 2014304918, @@ -40724,7 +40724,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2014304919", "osm_node_id": 2014304919, @@ -40777,7 +40777,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2014304920", "osm_node_id": 2014304920, @@ -40826,7 +40826,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304923", "osm_node_id": 2014304923, @@ -40957,7 +40957,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2275824794", "osm_node_id": 2275824794, @@ -40998,7 +40998,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2377604550", "osm_node_id": 2377604550, @@ -41076,7 +41076,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3181227677", "osm_node_id": 3181227677, @@ -41121,7 +41121,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/3181227681", "osm_node_id": 3181227681, @@ -41511,7 +41511,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3371780106", "osm_node_id": 3371780106, @@ -41564,7 +41564,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3371780107", "osm_node_id": 3371780107, @@ -41605,7 +41605,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3381506663", "osm_node_id": 3381506663, @@ -41703,7 +41703,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3381506666", "osm_node_id": 3381506666, @@ -41756,7 +41756,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3381506667", "osm_node_id": 3381506667, @@ -41797,7 +41797,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3672602007", "osm_node_id": 3672602007, @@ -41850,7 +41850,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3672604268", "osm_node_id": 3672604268, @@ -41903,7 +41903,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4029217614", "osm_node_id": 4029217614, @@ -42050,7 +42050,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4361246654", "osm_node_id": 4361246654, @@ -42263,7 +42263,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4365671268", "osm_node_id": 4365671268, @@ -42316,7 +42316,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4365671270", "osm_node_id": 4365671270, @@ -42373,7 +42373,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4365671272", "osm_node_id": 4365671272, @@ -42426,7 +42426,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4457095867", "osm_node_id": 4457095867, @@ -42479,7 +42479,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4457095868", "osm_node_id": 4457095868, @@ -42528,7 +42528,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/4457095870", "osm_node_id": 4457095870, @@ -42618,7 +42618,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4457095875", "osm_node_id": 4457095875, @@ -42675,7 +42675,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4457095876", "osm_node_id": 4457095876, @@ -42716,7 +42716,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4457813299", "osm_node_id": 4457813299, @@ -42905,7 +42905,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/4540786888", "osm_node_id": 4540786888, @@ -42958,7 +42958,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4833244387", "osm_node_id": 4833244387, @@ -43044,7 +43044,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4833244389", "osm_node_id": 4833244389, @@ -43126,7 +43126,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5071469690", "osm_node_id": 5071469690, @@ -43183,7 +43183,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5071469692", "osm_node_id": 5071469692, @@ -43404,7 +43404,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5071469699", "osm_node_id": 5071469699, @@ -43498,7 +43498,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5071469703", "osm_node_id": 5071469703, @@ -43621,7 +43621,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5452444895", "osm_node_id": 5452444895, @@ -43682,7 +43682,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452444896", "osm_node_id": 5452444896, @@ -43735,7 +43735,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5452444899", "osm_node_id": 5452444899, @@ -43780,7 +43780,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452444904", "osm_node_id": 5452444904, @@ -43829,7 +43829,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452444905", "osm_node_id": 5452444905, @@ -43878,7 +43878,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452444908", "osm_node_id": 5452444908, @@ -43923,7 +43923,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452444913", "osm_node_id": 5452444913, @@ -43980,7 +43980,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452444914", "osm_node_id": 5452444914, @@ -44029,7 +44029,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452444915", "osm_node_id": 5452444915, @@ -44074,7 +44074,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452456321", "osm_node_id": 5452456321, @@ -44123,7 +44123,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452456322", "osm_node_id": 5452456322, @@ -44401,7 +44401,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378757", "osm_node_id": 5506378757, @@ -44446,7 +44446,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378761", "osm_node_id": 5506378761, @@ -44737,7 +44737,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378775", "osm_node_id": 5506378775, @@ -44786,7 +44786,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378777", "osm_node_id": 5506378777, @@ -44876,7 +44876,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378779", "osm_node_id": 5506378779, @@ -44929,7 +44929,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378781", "osm_node_id": 5506378781, @@ -44974,7 +44974,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378782", "osm_node_id": 5506378782, @@ -45015,7 +45015,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378793", "osm_node_id": 5506378793, @@ -45068,7 +45068,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5518536453", "osm_node_id": 5518536453, @@ -45121,7 +45121,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5518536456", "osm_node_id": 5518536456, @@ -45178,7 +45178,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5728993687", "osm_node_id": 5728993687, @@ -45288,7 +45288,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5728993691", "osm_node_id": 5728993691, @@ -45345,7 +45345,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5728993707", "osm_node_id": 5728993707, @@ -45390,7 +45390,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5728993713", "osm_node_id": 5728993713, @@ -45431,7 +45431,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5728993720", "osm_node_id": 5728993720, @@ -45492,7 +45492,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5728993833", "osm_node_id": 5728993833, @@ -45537,7 +45537,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5728993834", "osm_node_id": 5728993834, @@ -45594,7 +45594,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5728993836", "osm_node_id": 5728993836, @@ -45655,7 +45655,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5728993838", "osm_node_id": 5728993838, @@ -45745,7 +45745,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5924236779", "osm_node_id": 5924236779, @@ -45790,7 +45790,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5924236780", "osm_node_id": 5924236780, @@ -45843,7 +45843,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5924236781", "osm_node_id": 5924236781, @@ -45941,7 +45941,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5931863419", "osm_node_id": 5931863419, @@ -45986,7 +45986,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5931863420", "osm_node_id": 5931863420, @@ -46031,7 +46031,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5931863421", "osm_node_id": 5931863421, @@ -46084,7 +46084,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5931863422", "osm_node_id": 5931863422, @@ -46153,7 +46153,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5931863423", "osm_node_id": 5931863423, @@ -46206,7 +46206,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5981573959", "osm_node_id": 5981573959, @@ -46349,7 +46349,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482090", "osm_node_id": 6001482090, @@ -46414,7 +46414,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482091", "osm_node_id": 6001482091, @@ -46463,7 +46463,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482092", "osm_node_id": 6001482092, @@ -46557,7 +46557,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482094", "osm_node_id": 6001482094, @@ -46610,7 +46610,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482097", "osm_node_id": 6001482097, @@ -46667,7 +46667,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482098", "osm_node_id": 6001482098, @@ -46720,7 +46720,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482100", "osm_node_id": 6001482100, @@ -46773,7 +46773,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482101", "osm_node_id": 6001482101, @@ -46834,7 +46834,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482128", "osm_node_id": 6001482128, @@ -46883,7 +46883,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482131", "osm_node_id": 6001482131, @@ -46940,7 +46940,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482132", "osm_node_id": 6001482132, @@ -47042,7 +47042,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482136", "osm_node_id": 6001482136, @@ -47087,7 +47087,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022850276", "osm_node_id": 6022850276, @@ -47140,7 +47140,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022850278", "osm_node_id": 6022850278, @@ -47193,7 +47193,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022850279", "osm_node_id": 6022850279, @@ -47287,7 +47287,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6047091983", "osm_node_id": 6047091983, @@ -47348,7 +47348,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6047609624", "osm_node_id": 6047609624, @@ -47426,7 +47426,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6111971409", "osm_node_id": 6111971409, @@ -47532,7 +47532,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6211582994", "osm_node_id": 6211582994, @@ -47585,7 +47585,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/6211582997", "osm_node_id": 6211582997, @@ -47642,7 +47642,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6211582998", "osm_node_id": 6211582998, @@ -47683,7 +47683,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6211583000", "osm_node_id": 6211583000, @@ -47736,7 +47736,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/6211583002", "osm_node_id": 6211583002, @@ -47781,7 +47781,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6211583003", "osm_node_id": 6211583003, @@ -47826,7 +47826,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6211583004", "osm_node_id": 6211583004, @@ -47875,7 +47875,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6211583005", "osm_node_id": 6211583005, @@ -47916,7 +47916,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6211583008", "osm_node_id": 6211583008, @@ -47965,7 +47965,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6211583009", "osm_node_id": 6211583009, @@ -48047,7 +48047,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6211583013", "osm_node_id": 6211583013, @@ -48100,7 +48100,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6211583020", "osm_node_id": 6211583020, @@ -48157,7 +48157,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/6211583022", "osm_node_id": 6211583022, @@ -48418,7 +48418,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6216919223", "osm_node_id": 6216919223, @@ -48479,7 +48479,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264559092", "osm_node_id": 6264559092, @@ -48561,7 +48561,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264670253", "osm_node_id": 6264670253, @@ -48614,7 +48614,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264670255", "osm_node_id": 6264670255, @@ -48655,7 +48655,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264670261", "osm_node_id": 6264670261, @@ -48708,7 +48708,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264670275", "osm_node_id": 6264670275, @@ -48843,7 +48843,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264671916", "osm_node_id": 6264671916, @@ -48888,7 +48888,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264671921", "osm_node_id": 6264671921, @@ -48953,7 +48953,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264671922", "osm_node_id": 6264671922, @@ -48998,7 +48998,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6309354601", "osm_node_id": 6309354601, @@ -49043,7 +49043,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6309354609", "osm_node_id": 6309354609, @@ -49133,7 +49133,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6309354662", "osm_node_id": 6309354662, @@ -49260,7 +49260,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6309407701", "osm_node_id": 6309407701, @@ -49383,7 +49383,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6500031458", "osm_node_id": 6500031458, @@ -49436,7 +49436,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6500031459", "osm_node_id": 6500031459, @@ -49485,7 +49485,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6584827765", "osm_node_id": 6584827765, @@ -49550,7 +49550,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Diverge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/6584937015", "osm_node_id": 6584937015, @@ -49747,7 +49747,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6584937084", "osm_node_id": 6584937084, @@ -50008,7 +50008,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6596024418", "osm_node_id": 6596024418, @@ -50061,7 +50061,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6596024419", "osm_node_id": 6596024419, @@ -50114,7 +50114,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6596024421", "osm_node_id": 6596024421, @@ -50208,7 +50208,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6596024424", "osm_node_id": 6596024424, @@ -50290,7 +50290,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6665254428", "osm_node_id": 6665254428, @@ -50401,7 +50401,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6665254454", "osm_node_id": 6665254454, @@ -50442,7 +50442,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6665254462", "osm_node_id": 6665254462, @@ -50487,7 +50487,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6665254467", "osm_node_id": 6665254467, @@ -50622,7 +50622,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6740104094", "osm_node_id": 6740104094, @@ -50667,7 +50667,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6905250281", "osm_node_id": 6905250281, @@ -50712,7 +50712,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6905278494", "osm_node_id": 6905278494, @@ -50769,7 +50769,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6905278495", "osm_node_id": 6905278495, @@ -50892,7 +50892,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6905278501", "osm_node_id": 6905278501, @@ -50953,7 +50953,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6935272506", "osm_node_id": 6935272506, @@ -51006,7 +51006,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6935272509", "osm_node_id": 6935272509, @@ -51059,7 +51059,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6935272510", "osm_node_id": 6935272510, @@ -51104,7 +51104,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6979945557", "osm_node_id": 6979945557, @@ -51149,7 +51149,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6979945558", "osm_node_id": 6979945558, @@ -51206,7 +51206,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6979945559", "osm_node_id": 6979945559, @@ -51247,7 +51247,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7105816299", "osm_node_id": 7105816299, @@ -51329,7 +51329,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237435065", "osm_node_id": 7237435065, @@ -51374,7 +51374,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237435066", "osm_node_id": 7237435066, @@ -51497,7 +51497,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237435071", "osm_node_id": 7237435071, @@ -51550,7 +51550,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237436996", "osm_node_id": 7237436996, @@ -51603,7 +51603,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237436997", "osm_node_id": 7237436997, @@ -51656,7 +51656,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237436998", "osm_node_id": 7237436998, @@ -51693,7 +51693,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237436999", "osm_node_id": 7237436999, @@ -51750,7 +51750,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437001", "osm_node_id": 7237437001, @@ -51795,7 +51795,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437002", "osm_node_id": 7237437002, @@ -51844,7 +51844,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437041", "osm_node_id": 7237437041, @@ -51889,7 +51889,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437048", "osm_node_id": 7237437048, @@ -51975,7 +51975,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/7237437075", "osm_node_id": 7237437075, @@ -52065,7 +52065,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437091", "osm_node_id": 7237437091, @@ -52151,7 +52151,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437093", "osm_node_id": 7237437093, @@ -52521,7 +52521,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7261942264", "osm_node_id": 7261942264, @@ -52574,7 +52574,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7261942265", "osm_node_id": 7261942265, @@ -52619,7 +52619,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7261942266", "osm_node_id": 7261942266, @@ -52668,7 +52668,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7261942269", "osm_node_id": 7261942269, @@ -52717,7 +52717,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7261942271", "osm_node_id": 7261942271, @@ -52787,7 +52787,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7261942277", "osm_node_id": 7261942277, @@ -52988,7 +52988,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7924241274", "osm_node_id": 7924241274, @@ -53078,7 +53078,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/8174077586", "osm_node_id": 8174077586, @@ -53139,7 +53139,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/8174077587", "osm_node_id": 8174077587, @@ -53192,7 +53192,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/8174077588", "osm_node_id": 8174077588, @@ -53237,7 +53237,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8273166694", "osm_node_id": 8273166694, @@ -53286,7 +53286,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8312439326", "osm_node_id": 8312439326, @@ -53331,7 +53331,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8312439329", "osm_node_id": 8312439329, @@ -53372,7 +53372,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8312439358", "osm_node_id": 8312439358, @@ -53458,7 +53458,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8312439361", "osm_node_id": 8312439361, @@ -53515,7 +53515,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8312439368", "osm_node_id": 8312439368, @@ -53601,7 +53601,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8450014339", "osm_node_id": 8450014339, @@ -53650,7 +53650,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8450014342", "osm_node_id": 8450014342, @@ -53744,7 +53744,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640857", "osm_node_id": 8481640857, @@ -53789,7 +53789,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640858", "osm_node_id": 8481640858, @@ -53846,7 +53846,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640859", "osm_node_id": 8481640859, @@ -53903,7 +53903,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640860", "osm_node_id": 8481640860, @@ -53972,7 +53972,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640861", "osm_node_id": 8481640861, @@ -54037,7 +54037,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640862", "osm_node_id": 8481640862, @@ -54094,7 +54094,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640863", "osm_node_id": 8481640863, @@ -54147,7 +54147,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640864", "osm_node_id": 8481640864, @@ -54204,7 +54204,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640865", "osm_node_id": 8481640865, @@ -54257,7 +54257,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640866", "osm_node_id": 8481640866, @@ -54318,7 +54318,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640867", "osm_node_id": 8481640867, @@ -54379,7 +54379,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640868", "osm_node_id": 8481640868, @@ -54432,7 +54432,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640869", "osm_node_id": 8481640869, @@ -54489,7 +54489,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640870", "osm_node_id": 8481640870, @@ -54542,7 +54542,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640871", "osm_node_id": 8481640871, @@ -54611,7 +54611,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640872", "osm_node_id": 8481640872, @@ -54680,7 +54680,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640873", "osm_node_id": 8481640873, @@ -54737,7 +54737,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640874", "osm_node_id": 8481640874, @@ -54798,7 +54798,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640875", "osm_node_id": 8481640875, @@ -54855,7 +54855,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640876", "osm_node_id": 8481640876, @@ -54908,7 +54908,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640877", "osm_node_id": 8481640877, @@ -54977,7 +54977,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640878", "osm_node_id": 8481640878, @@ -55046,7 +55046,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640879", "osm_node_id": 8481640879, @@ -55103,7 +55103,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640880", "osm_node_id": 8481640880, @@ -55160,7 +55160,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640881", "osm_node_id": 8481640881, @@ -55229,7 +55229,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640882", "osm_node_id": 8481640882, @@ -55298,7 +55298,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640883", "osm_node_id": 8481640883, @@ -55359,7 +55359,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481640884", "osm_node_id": 8481640884, @@ -55416,7 +55416,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481692879", "osm_node_id": 8481692879, @@ -55535,7 +55535,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/8733041518", "osm_node_id": 8733041518, @@ -55580,7 +55580,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/8733041519", "osm_node_id": 8733041519, @@ -55633,7 +55633,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8740550411", "osm_node_id": 8740550411, @@ -55686,7 +55686,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8740550412", "osm_node_id": 8740550412, @@ -55768,7 +55768,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8892765835", "osm_node_id": 8892765835, @@ -55813,7 +55813,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8892765836", "osm_node_id": 8892765836, @@ -55862,7 +55862,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8892765838", "osm_node_id": 8892765838, @@ -55919,7 +55919,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8990249593", "osm_node_id": 8990249593, @@ -55976,7 +55976,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8990249594", "osm_node_id": 8990249594, @@ -56095,7 +56095,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9258530363", "osm_node_id": 9258530363, @@ -56152,7 +56152,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9258530380", "osm_node_id": 9258530380, @@ -56246,7 +56246,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9258530385", "osm_node_id": 9258530385, @@ -56299,7 +56299,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9258530387", "osm_node_id": 9258530387, @@ -56393,7 +56393,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9316506541", "osm_node_id": 9316506541, @@ -56442,7 +56442,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9316506597", "osm_node_id": 9316506597, @@ -56491,7 +56491,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9316506598", "osm_node_id": 9316506598, @@ -56614,7 +56614,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/9319419230", "osm_node_id": 9319419230, @@ -56696,7 +56696,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9319419235", "osm_node_id": 9319419235, @@ -56753,7 +56753,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9319419240", "osm_node_id": 9319419240, @@ -56921,7 +56921,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9319419267", "osm_node_id": 9319419267, @@ -57007,7 +57007,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9319419274", "osm_node_id": 9319419274, @@ -57130,7 +57130,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9319419293", "osm_node_id": 9319419293, @@ -57179,7 +57179,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9356627340", "osm_node_id": 9356627340, @@ -57273,7 +57273,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9740274255", "osm_node_id": 9740274255, diff --git a/tests/src/northgate_dual_carriageway/geometry.json b/tests/src/northgate_dual_carriageway/geometry.json index eb64fa6b..d3291836 100644 --- a/tests/src/northgate_dual_carriageway/geometry.json +++ b/tests/src/northgate_dual_carriageway/geometry.json @@ -6904,7 +6904,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/53092589", "osm_node_id": 53092589, @@ -7203,7 +7203,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/95600603", "osm_node_id": 95600603, @@ -7448,7 +7448,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/411602472", "osm_node_id": 411602472, @@ -7579,7 +7579,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/476254734", "osm_node_id": 476254734, @@ -7677,7 +7677,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/476254742", "osm_node_id": 476254742, @@ -7726,7 +7726,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/476661975", "osm_node_id": 476661975, @@ -7861,7 +7861,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/476715048", "osm_node_id": 476715048, @@ -8430,7 +8430,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1905102152", "osm_node_id": 1905102152, @@ -8471,7 +8471,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1905102153", "osm_node_id": 1905102153, @@ -8512,7 +8512,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1968559734", "osm_node_id": 1968559734, @@ -8557,7 +8557,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1968559768", "osm_node_id": 1968559768, @@ -8598,7 +8598,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1968559770", "osm_node_id": 1968559770, @@ -8786,7 +8786,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2706302792", "osm_node_id": 2706302792, @@ -8872,7 +8872,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2706302796", "osm_node_id": 2706302796, @@ -8929,7 +8929,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2706302803", "osm_node_id": 2706302803, @@ -9019,7 +9019,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2706302812", "osm_node_id": 2706302812, @@ -9068,7 +9068,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2706302814", "osm_node_id": 2706302814, @@ -9154,7 +9154,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3711400490", "osm_node_id": 3711400490, @@ -10185,7 +10185,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4787774433", "osm_node_id": 4787774433, @@ -10743,7 +10743,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7625387502", "osm_node_id": 7625387502, @@ -10902,7 +10902,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8500809111", "osm_node_id": 8500809111, @@ -10959,7 +10959,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8500809112", "osm_node_id": 8500809112, @@ -11008,7 +11008,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8500822585", "osm_node_id": 8500822585, @@ -11139,7 +11139,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8500822594", "osm_node_id": 8500822594, @@ -11184,7 +11184,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8500822634", "osm_node_id": 8500822634, @@ -11753,7 +11753,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9188152684", "osm_node_id": 9188152684, @@ -11843,7 +11843,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9188152718", "osm_node_id": 9188152718, @@ -11974,7 +11974,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9322923125", "osm_node_id": 9322923125, @@ -12675,7 +12675,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9718788161", "osm_node_id": 9718788161, @@ -12728,7 +12728,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9718788163", "osm_node_id": 9718788163, @@ -13114,7 +13114,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9718788179", "osm_node_id": 9718788179, @@ -13282,7 +13282,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9725987906", "osm_node_id": 9725987906, @@ -13339,7 +13339,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9734066143", "osm_node_id": 9734066143, @@ -13421,7 +13421,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/9772983384", "osm_node_id": 9772983384, @@ -14082,7 +14082,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9801096644", "osm_node_id": 9801096644, @@ -14229,7 +14229,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9812120063", "osm_node_id": 9812120063, diff --git a/tests/src/oneway_loop/geometry.json b/tests/src/oneway_loop/geometry.json index 795c1292..8ea9a602 100644 --- a/tests/src/oneway_loop/geometry.json +++ b/tests/src/oneway_loop/geometry.json @@ -1831,7 +1831,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25496664", "osm_node_id": 25496664, @@ -1892,7 +1892,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25496666", "osm_node_id": 25496666, @@ -1945,7 +1945,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25496667", "osm_node_id": 25496667, @@ -1986,7 +1986,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1080429761", "osm_node_id": 1080429761, @@ -2035,7 +2035,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1080429785", "osm_node_id": 1080429785, @@ -2080,7 +2080,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1080429836", "osm_node_id": 1080429836, @@ -2129,7 +2129,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1080429864", "osm_node_id": 1080429864, @@ -2371,7 +2371,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1701265003", "osm_node_id": 1701265003, @@ -2412,7 +2412,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1701265007", "osm_node_id": 1701265007, @@ -2691,7 +2691,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9568915239", "osm_node_id": 9568915239, @@ -2748,7 +2748,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9568915240", "osm_node_id": 9568915240, @@ -2805,7 +2805,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9568915241", "osm_node_id": 9568915241, @@ -2854,7 +2854,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9568915256", "osm_node_id": 9568915256, @@ -2911,7 +2911,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9568915258", "osm_node_id": 9568915258, @@ -3005,7 +3005,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9586144486", "osm_node_id": 9586144486, @@ -3054,7 +3054,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9586144488", "osm_node_id": 9586144488, @@ -3103,7 +3103,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9586144492", "osm_node_id": 9586144492, diff --git a/tests/src/perth_peanut_roundabout/geometry.json b/tests/src/perth_peanut_roundabout/geometry.json index d57fad7d..c14e9e7d 100644 --- a/tests/src/perth_peanut_roundabout/geometry.json +++ b/tests/src/perth_peanut_roundabout/geometry.json @@ -1792,7 +1792,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/61067223", "osm_node_id": 61067223, @@ -2284,7 +2284,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/585206951", "osm_node_id": 585206951, @@ -2329,7 +2329,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/585206952", "osm_node_id": 585206952, @@ -2370,7 +2370,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/585206954", "osm_node_id": 585206954, @@ -2423,7 +2423,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/585206956", "osm_node_id": 585206956, @@ -2472,7 +2472,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/585206957", "osm_node_id": 585206957, @@ -2521,7 +2521,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/585206960", "osm_node_id": 585206960, @@ -2820,7 +2820,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5082188321", "osm_node_id": 5082188321, @@ -2898,7 +2898,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5548292618", "osm_node_id": 5548292618, @@ -3021,7 +3021,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6257803111", "osm_node_id": 6257803111, @@ -3074,7 +3074,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6257803113", "osm_node_id": 6257803113, @@ -3115,7 +3115,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/6257803115", "osm_node_id": 6257803115, diff --git a/tests/src/perth_stretched_lights/geometry.json b/tests/src/perth_stretched_lights/geometry.json index e52803cb..db35fb63 100644 --- a/tests/src/perth_stretched_lights/geometry.json +++ b/tests/src/perth_stretched_lights/geometry.json @@ -431,7 +431,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/367715264", "osm_node_id": 367715264, diff --git a/tests/src/roosevelt_cycletrack/geometry.json b/tests/src/roosevelt_cycletrack/geometry.json index ce131d18..4f43a733 100644 --- a/tests/src/roosevelt_cycletrack/geometry.json +++ b/tests/src/roosevelt_cycletrack/geometry.json @@ -4771,7 +4771,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/53102770", "osm_node_id": 53102770, @@ -4845,7 +4845,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/53108154", "osm_node_id": 53108154, @@ -5095,7 +5095,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/53190558", "osm_node_id": 53190558, @@ -5304,7 +5304,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/53231062", "osm_node_id": 53231062, @@ -5460,7 +5460,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/59711142", "osm_node_id": 59711142, @@ -5501,7 +5501,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/59713117", "osm_node_id": 59713117, @@ -6542,7 +6542,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4583297951", "osm_node_id": 4583297951, @@ -7300,7 +7300,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5674754355", "osm_node_id": 5674754355, @@ -7464,7 +7464,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5908851929", "osm_node_id": 5908851929, @@ -7505,7 +7505,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5908851932", "osm_node_id": 5908851932, @@ -7550,7 +7550,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5908863566", "osm_node_id": 5908863566, @@ -7640,7 +7640,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5908863568", "osm_node_id": 5908863568, @@ -7685,7 +7685,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5908863569", "osm_node_id": 5908863569, @@ -7734,7 +7734,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6040524426", "osm_node_id": 6040524426, @@ -7984,7 +7984,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7797741149", "osm_node_id": 7797741149, diff --git a/tests/src/seattle_slip_lane/geometry.json b/tests/src/seattle_slip_lane/geometry.json index 378fbb42..0f528c73 100644 --- a/tests/src/seattle_slip_lane/geometry.json +++ b/tests/src/seattle_slip_lane/geometry.json @@ -1922,7 +1922,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/59711142", "osm_node_id": 59711142, @@ -2217,7 +2217,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4583297951", "osm_node_id": 4583297951, @@ -2303,7 +2303,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5674754355", "osm_node_id": 5674754355, diff --git a/tests/src/service_road_loop/geometry.json b/tests/src/service_road_loop/geometry.json index af52b394..b4ed7466 100644 --- a/tests/src/service_road_loop/geometry.json +++ b/tests/src/service_road_loop/geometry.json @@ -1366,7 +1366,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/30984582", "osm_node_id": 30984582, @@ -1526,7 +1526,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3710247242", "osm_node_id": 3710247242, @@ -1575,7 +1575,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3710247245", "osm_node_id": 3710247245, @@ -1624,7 +1624,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3710247247", "osm_node_id": 3710247247, @@ -1935,7 +1935,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6036958569", "osm_node_id": 6036958569, @@ -2037,7 +2037,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6036958616", "osm_node_id": 6036958616, @@ -2094,7 +2094,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6036958633", "osm_node_id": 6036958633, @@ -2200,7 +2200,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6036958639", "osm_node_id": 6036958639, diff --git a/tests/src/st_georges_cycletrack/geometry.json b/tests/src/st_georges_cycletrack/geometry.json index 7b8a5454..677b44fc 100644 --- a/tests/src/st_georges_cycletrack/geometry.json +++ b/tests/src/st_georges_cycletrack/geometry.json @@ -6355,7 +6355,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25472584", "osm_node_id": 25472584, @@ -6404,7 +6404,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25472725", "osm_node_id": 25472725, @@ -6535,7 +6535,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25472956", "osm_node_id": 25472956, @@ -6703,7 +6703,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/61334099", "osm_node_id": 61334099, @@ -6752,7 +6752,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/61334104", "osm_node_id": 61334104, @@ -6879,7 +6879,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/96619956", "osm_node_id": 96619956, @@ -7064,7 +7064,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/264341506", "osm_node_id": 264341506, @@ -7113,7 +7113,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/264790813", "osm_node_id": 264790813, @@ -7240,7 +7240,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/287248398", "osm_node_id": 287248398, @@ -7416,7 +7416,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1819350066", "osm_node_id": 1819350066, @@ -7502,7 +7502,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1819350083", "osm_node_id": 1819350083, @@ -7551,7 +7551,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1819350092", "osm_node_id": 1819350092, @@ -7600,7 +7600,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1819350122", "osm_node_id": 1819350122, @@ -7649,7 +7649,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1819350128", "osm_node_id": 1819350128, @@ -7698,7 +7698,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1819350134", "osm_node_id": 1819350134, @@ -7743,7 +7743,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1819350153", "osm_node_id": 1819350153, @@ -7841,7 +7841,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1819350194", "osm_node_id": 1819350194, @@ -7927,7 +7927,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2059768444", "osm_node_id": 2059768444, @@ -7972,7 +7972,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2180693485", "osm_node_id": 2180693485, @@ -8066,7 +8066,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2464418698", "osm_node_id": 2464418698, @@ -8156,7 +8156,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2467649384", "osm_node_id": 2467649384, @@ -8201,7 +8201,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2932500919", "osm_node_id": 2932500919, @@ -8246,7 +8246,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2932500926", "osm_node_id": 2932500926, @@ -8537,7 +8537,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3374579450", "osm_node_id": 3374579450, @@ -8578,7 +8578,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3799274007", "osm_node_id": 3799274007, @@ -8635,7 +8635,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/3799274008", "osm_node_id": 3799274008, @@ -8688,7 +8688,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/3799274009", "osm_node_id": 3799274009, @@ -8737,7 +8737,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3799274011", "osm_node_id": 3799274011, @@ -8786,7 +8786,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3799274013", "osm_node_id": 3799274013, @@ -8831,7 +8831,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3799274014", "osm_node_id": 3799274014, @@ -8880,7 +8880,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3799274015", "osm_node_id": 3799274015, @@ -8925,7 +8925,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3799274019", "osm_node_id": 3799274019, @@ -8970,7 +8970,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3874597627", "osm_node_id": 3874597627, @@ -9093,7 +9093,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3890206820", "osm_node_id": 3890206820, @@ -9175,7 +9175,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3890206822", "osm_node_id": 3890206822, @@ -9220,7 +9220,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/3890206825", "osm_node_id": 3890206825, @@ -9273,7 +9273,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/3890206831", "osm_node_id": 3890206831, @@ -9318,7 +9318,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4156272581", "osm_node_id": 4156272581, @@ -9363,7 +9363,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4156272585", "osm_node_id": 4156272585, @@ -9412,7 +9412,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4156273389", "osm_node_id": 4156273389, @@ -9461,7 +9461,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4156273393", "osm_node_id": 4156273393, @@ -9539,7 +9539,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4169653677", "osm_node_id": 4169653677, @@ -9588,7 +9588,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4169653680", "osm_node_id": 4169653680, @@ -9662,7 +9662,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4421018012", "osm_node_id": 4421018012, @@ -9781,7 +9781,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022813716", "osm_node_id": 6022813716, @@ -9830,7 +9830,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/6022813718", "osm_node_id": 6022813718, @@ -9875,7 +9875,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/6022813720", "osm_node_id": 6022813720, @@ -10109,7 +10109,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022813734", "osm_node_id": 6022813734, @@ -10347,7 +10347,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6231431196", "osm_node_id": 6231431196, @@ -10449,7 +10449,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6329043358", "osm_node_id": 6329043358, @@ -10806,7 +10806,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6970648943", "osm_node_id": 6970648943, @@ -11007,7 +11007,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8936977833", "osm_node_id": 8936977833, @@ -11056,7 +11056,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8936977834", "osm_node_id": 8936977834, @@ -11204,7 +11204,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8942303836", "osm_node_id": 8942303836, @@ -11265,7 +11265,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8942303872", "osm_node_id": 8942303872, @@ -11544,7 +11544,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136430541", "osm_node_id": 9136430541, @@ -11597,7 +11597,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136430547", "osm_node_id": 9136430547, diff --git a/tests/src/taipei/geometry.json b/tests/src/taipei/geometry.json index 1d9b5743..e104b5f5 100644 --- a/tests/src/taipei/geometry.json +++ b/tests/src/taipei/geometry.json @@ -2651,7 +2651,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/656415898", "osm_node_id": 656415898, @@ -2905,7 +2905,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/656415974", "osm_node_id": 656415974, @@ -3657,7 +3657,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/662161241", "osm_node_id": 662161241, @@ -3776,7 +3776,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/662161891", "osm_node_id": 662161891, @@ -3992,7 +3992,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/662161955", "osm_node_id": 662161955, @@ -4143,7 +4143,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/662161980", "osm_node_id": 662161980, @@ -4262,7 +4262,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2137955743", "osm_node_id": 2137955743, @@ -4319,7 +4319,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2137955785", "osm_node_id": 2137955785, @@ -4364,7 +4364,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Diverge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2137955831", "osm_node_id": 2137955831, @@ -4458,7 +4458,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2137955866", "osm_node_id": 2137955866, @@ -4683,7 +4683,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4568589283", "osm_node_id": 4568589283, @@ -4744,7 +4744,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4568593105", "osm_node_id": 4568593105, @@ -4974,7 +4974,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6982946642", "osm_node_id": 6982946642, diff --git a/tests/src/tempe_light_rail/geometry.json b/tests/src/tempe_light_rail/geometry.json index fe3c2f32..1b9c3e89 100644 --- a/tests/src/tempe_light_rail/geometry.json +++ b/tests/src/tempe_light_rail/geometry.json @@ -1308,7 +1308,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7509154723", "osm_node_id": 7509154723, diff --git a/tests/src/tempe_split/geometry.json b/tests/src/tempe_split/geometry.json index 9985abfd..0f53418c 100644 --- a/tests/src/tempe_split/geometry.json +++ b/tests/src/tempe_split/geometry.json @@ -1453,7 +1453,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2239876836", "osm_node_id": 2239876836, @@ -1502,7 +1502,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2860653268", "osm_node_id": 2860653268, @@ -1965,7 +1965,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5415307199", "osm_node_id": 5415307199, @@ -2088,7 +2088,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5707494413", "osm_node_id": 5707494413, From e9cbad02837ceac5320969f8af0a649f54279b89 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Wed, 9 Nov 2022 22:50:47 +0800 Subject: [PATCH 14/27] Pass around (&OriginalRoad, &Road) tuples instead of two lists --- .../src/transform/classify_intersections.rs | 55 ++++++++++--------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 80d678f7..77d60d66 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -35,25 +35,28 @@ fn guess_complexity( intersection_id: &NodeID, ) -> (IntersectionComplexity, ConflictType, Vec) { use ConflictType::*; - let road_ids = streets.roads_per_intersection(*intersection_id); - let roads: Vec<&Road> = road_ids.iter().map(|id| &streets.roads[id]).collect(); - // TODO filter out all non-driving roads before continuing. + let roads: Vec<_> = streets + .roads_per_intersection(*intersection_id) + .iter() + .map(|id| streets.roads.get_key_value(id).unwrap()) + //TODO .filter(|(_id, road)| road.is_driveable()) + .collect(); // A terminus is characterised by a single connected road. - if road_ids.len() == 1 { + if roads.len() == 1 { return (Terminus, Uncontested, Vec::new()); } // A Connection is characterised by exactly two connected roads. - if road_ids.len() == 2 { + if roads.len() == 2 { let mut movements = Vec::new(); - if can_drive_out_of(roads[0], road_ids[0], *intersection_id) - && can_drive_into(roads[1], road_ids[1], *intersection_id) + if can_drive_out_of(roads[0], *intersection_id) + && can_drive_into(roads[1], *intersection_id) { movements.push((0, 1)); } - if can_drive_out_of(roads[1], road_ids[1], *intersection_id) - && can_drive_into(roads[0], road_ids[0], *intersection_id) + if can_drive_out_of(roads[1], *intersection_id) + && can_drive_into(roads[0], *intersection_id) { movements.push((1, 0)); } @@ -64,26 +67,26 @@ fn guess_complexity( let mut connections = Vec::new(); // Consider all pairs of roads, from s to d. Identify them using their index in the list - which // is sorted in clockwise order - so that we can compare their position later. - for s in 0..road_ids.len() { - for d in 0..road_ids.len() { + for s in 0..roads.len() { + for d in 0..roads.len() { if s == d { continue; // Ignore U-turns. } // Calculate if it is possible to emerge from s into the intersection. let src_road = roads[s]; - if !can_drive_out_of(src_road, road_ids[s], *intersection_id) { + if !can_drive_out_of(src_road, *intersection_id) { continue; } // Calculate if it is possible to leave the intersection into d. let dst_road = roads[d]; - if !can_drive_into(dst_road, road_ids[d], *intersection_id) { + if !can_drive_into(dst_road, *intersection_id) { continue; } // Check for any turn restrictions. - if turn_is_allowed(src_road, &road_ids[d]) { + if turn_is_allowed(src_road, dst_road) { connections.push((s, d)); } } @@ -110,12 +113,12 @@ fn guess_complexity( } } -fn can_drive_out_of(road: &Road, road_id: OriginalRoad, which_end: NodeID) -> bool { - if !road.is_driveable() { +fn can_drive_out_of(id_road: (&OriginalRoad, &Road), which_end: NodeID) -> bool { + if !id_road.1.is_driveable() { return false; } - if let Some(driving_dir) = road.oneway_for_driving() { - let required_dir = if road_id.i2 == which_end { + if let Some(driving_dir) = id_road.1.oneway_for_driving() { + let required_dir = if id_road.0.i2 == which_end { Direction::Fwd } else { Direction::Back @@ -125,12 +128,12 @@ fn can_drive_out_of(road: &Road, road_id: OriginalRoad, which_end: NodeID) -> bo return true; } -fn can_drive_into(road: &Road, road_id: OriginalRoad, which_end: NodeID) -> bool { - if !road.is_driveable() { +fn can_drive_into(id_road: (&OriginalRoad, &Road), which_end: NodeID) -> bool { + if !id_road.1.is_driveable() { return false; } - if let Some(driving_dir) = road.oneway_for_driving() { - let required_dir = if road_id.i1 == which_end { + if let Some(driving_dir) = id_road.1.oneway_for_driving() { + let required_dir = if id_road.0.i1 == which_end { Direction::Fwd } else { Direction::Back @@ -140,17 +143,17 @@ fn can_drive_into(road: &Road, road_id: OriginalRoad, which_end: NodeID) -> bool return true; } -fn turn_is_allowed(src: &Road, dst_id: &OriginalRoad) -> bool { +fn turn_is_allowed(src: (&OriginalRoad, &Road), dst: (&OriginalRoad, &Road)) -> bool { let mut has_exclusive_allows = false; - for (t, other) in &src.turn_restrictions { + for (t, other) in src.1.turn_restrictions.iter() { match t { RestrictionType::BanTurns => { - if other == dst_id { + if *other == *dst.0 { return false; } } RestrictionType::OnlyAllowTurns => { - if other == dst_id { + if *other == *dst.0 { return true; } has_exclusive_allows = true; From 86432b4498304313da0a063357157d0f601cece8 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Wed, 9 Nov 2022 22:59:06 +0800 Subject: [PATCH 15/27] Pre-filter non-drivable roads. complexity and conflict_level are nonsense for bike intersections --- .../src/transform/classify_intersections.rs | 8 +- tests/src/borough_sausage_links/geometry.json | 20 +- .../bristol_contraflow_cycleway/geometry.json | 16 +- tests/src/bristol_sausage_links/geometry.json | 2 +- tests/src/cycleway_rejoin_road/geometry.json | 122 +++--- tests/src/i5_exit_ramp/geometry.json | 28 +- tests/src/kingsway_junction/geometry.json | 84 ++-- tests/src/leeds_cycleway/geometry.json | 384 +++++++++--------- .../northgate_dual_carriageway/geometry.json | 130 +++--- tests/src/oneway_loop/geometry.json | 26 +- tests/src/roosevelt_cycletrack/geometry.json | 70 ++-- tests/src/seattle_slip_lane/geometry.json | 6 +- tests/src/seattle_triangle/geometry.json | 46 +-- tests/src/service_road_loop/geometry.json | 8 +- tests/src/st_georges_cycletrack/geometry.json | 104 ++--- tests/src/taipei/geometry.json | 8 +- tests/src/tempe_light_rail/geometry.json | 2 +- tests/src/tempe_split/geometry.json | 8 +- 18 files changed, 533 insertions(+), 539 deletions(-) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 77d60d66..977f4d93 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -39,7 +39,7 @@ fn guess_complexity( .roads_per_intersection(*intersection_id) .iter() .map(|id| streets.roads.get_key_value(id).unwrap()) - //TODO .filter(|(_id, road)| road.is_driveable()) + .filter(|(_id, road)| road.is_driveable()) .collect(); // A terminus is characterised by a single connected road. @@ -114,9 +114,6 @@ fn guess_complexity( } fn can_drive_out_of(id_road: (&OriginalRoad, &Road), which_end: NodeID) -> bool { - if !id_road.1.is_driveable() { - return false; - } if let Some(driving_dir) = id_road.1.oneway_for_driving() { let required_dir = if id_road.0.i2 == which_end { Direction::Fwd @@ -129,9 +126,6 @@ fn can_drive_out_of(id_road: (&OriginalRoad, &Road), which_end: NodeID) -> bool } fn can_drive_into(id_road: (&OriginalRoad, &Road), which_end: NodeID) -> bool { - if !id_road.1.is_driveable() { - return false; - } if let Some(driving_dir) = id_road.1.oneway_for_driving() { let required_dir = if id_road.0.i1 == which_end { Direction::Fwd diff --git a/tests/src/borough_sausage_links/geometry.json b/tests/src/borough_sausage_links/geometry.json index 6a5c22ea..8acc35cd 100644 --- a/tests/src/borough_sausage_links/geometry.json +++ b/tests/src/borough_sausage_links/geometry.json @@ -3367,7 +3367,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/347413549", "osm_node_id": 347413549, @@ -3441,7 +3441,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/872828485", "osm_node_id": 872828485, @@ -4066,7 +4066,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2217442429", "osm_node_id": 2217442429, @@ -4103,7 +4103,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2217442436", "osm_node_id": 2217442436, @@ -4254,7 +4254,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2217475464", "osm_node_id": 2217475464, @@ -4291,7 +4291,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2217475492", "osm_node_id": 2217475492, @@ -4590,7 +4590,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5220719449", "osm_node_id": 5220719449, @@ -4832,7 +4832,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5220760621", "osm_node_id": 5220760621, @@ -4984,7 +4984,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5220776406", "osm_node_id": 5220776406, @@ -5033,7 +5033,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5220776407", "osm_node_id": 5220776407, diff --git a/tests/src/bristol_contraflow_cycleway/geometry.json b/tests/src/bristol_contraflow_cycleway/geometry.json index 723d0a8b..89d76a96 100644 --- a/tests/src/bristol_contraflow_cycleway/geometry.json +++ b/tests/src/bristol_contraflow_cycleway/geometry.json @@ -1711,7 +1711,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/260742941", "osm_node_id": 260742941, @@ -1957,7 +1957,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1316486883", "osm_node_id": 1316486883, @@ -2068,7 +2068,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2208694229", "osm_node_id": 2208694229, @@ -2117,7 +2117,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2847905816", "osm_node_id": 2847905816, @@ -2170,7 +2170,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2847905817", "osm_node_id": 2847905817, @@ -2215,7 +2215,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2847905819", "osm_node_id": 2847905819, @@ -2346,7 +2346,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8411724268", "osm_node_id": 8411724268, @@ -2391,7 +2391,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8411977276", "osm_node_id": 8411977276, diff --git a/tests/src/bristol_sausage_links/geometry.json b/tests/src/bristol_sausage_links/geometry.json index a04565c4..2d01ea0c 100644 --- a/tests/src/bristol_sausage_links/geometry.json +++ b/tests/src/bristol_sausage_links/geometry.json @@ -1421,7 +1421,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/4740760690", "osm_node_id": 4740760690, diff --git a/tests/src/cycleway_rejoin_road/geometry.json b/tests/src/cycleway_rejoin_road/geometry.json index 7d7cece9..96db783e 100644 --- a/tests/src/cycleway_rejoin_road/geometry.json +++ b/tests/src/cycleway_rejoin_road/geometry.json @@ -7570,7 +7570,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25502896", "osm_node_id": 25502896, @@ -7857,7 +7857,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/264803343", "osm_node_id": 264803343, @@ -8193,7 +8193,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126025785", "osm_node_id": 1126025785, @@ -8336,7 +8336,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126222387", "osm_node_id": 1126222387, @@ -8373,7 +8373,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126222388", "osm_node_id": 1126222388, @@ -8410,7 +8410,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126222425", "osm_node_id": 1126222425, @@ -8447,7 +8447,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126222438", "osm_node_id": 1126222438, @@ -8753,7 +8753,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126222569", "osm_node_id": 1126222569, @@ -8790,7 +8790,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1126222573", "osm_node_id": 1126222573, @@ -8888,7 +8888,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1240373509", "osm_node_id": 1240373509, @@ -9003,7 +9003,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2555516144", "osm_node_id": 2555516144, @@ -9126,7 +9126,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4462219991", "osm_node_id": 4462219991, @@ -9253,7 +9253,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4839044022", "osm_node_id": 4839044022, @@ -9343,7 +9343,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4839044024", "osm_node_id": 4839044024, @@ -9429,7 +9429,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4957735651", "osm_node_id": 4957735651, @@ -9732,7 +9732,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5021048664", "osm_node_id": 5021048664, @@ -9806,7 +9806,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5021048672", "osm_node_id": 5021048672, @@ -9843,7 +9843,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5023600724", "osm_node_id": 5023600724, @@ -9892,7 +9892,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5268321224", "osm_node_id": 5268321224, @@ -10052,7 +10052,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5739261534", "osm_node_id": 5739261534, @@ -10359,7 +10359,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7330281376", "osm_node_id": 7330281376, @@ -10621,7 +10621,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343947", "osm_node_id": 9136343947, @@ -10658,7 +10658,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343964", "osm_node_id": 9136343964, @@ -10899,7 +10899,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343973", "osm_node_id": 9136343973, @@ -10944,7 +10944,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343976", "osm_node_id": 9136343976, @@ -10989,7 +10989,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343977", "osm_node_id": 9136343977, @@ -11026,7 +11026,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343978", "osm_node_id": 9136343978, @@ -11067,7 +11067,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343979", "osm_node_id": 9136343979, @@ -11116,7 +11116,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343980", "osm_node_id": 9136343980, @@ -11153,7 +11153,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343985", "osm_node_id": 9136343985, @@ -11198,7 +11198,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343986", "osm_node_id": 9136343986, @@ -11251,7 +11251,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343987", "osm_node_id": 9136343987, @@ -11288,7 +11288,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343993", "osm_node_id": 9136343993, @@ -11337,7 +11337,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343996", "osm_node_id": 9136343996, @@ -11439,7 +11439,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136343998", "osm_node_id": 9136343998, @@ -11488,7 +11488,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136344004", "osm_node_id": 9136344004, @@ -11529,7 +11529,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136344005", "osm_node_id": 9136344005, @@ -11582,7 +11582,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136344008", "osm_node_id": 9136344008, @@ -11684,7 +11684,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136344010", "osm_node_id": 9136344010, @@ -11786,7 +11786,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136360631", "osm_node_id": 9136360631, @@ -11835,7 +11835,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136383822", "osm_node_id": 9136383822, @@ -11872,7 +11872,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136383827", "osm_node_id": 9136383827, @@ -11909,7 +11909,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136383828", "osm_node_id": 9136383828, @@ -11958,7 +11958,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136383834", "osm_node_id": 9136383834, @@ -12142,7 +12142,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136383839", "osm_node_id": 9136383839, @@ -12232,7 +12232,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136383851", "osm_node_id": 9136383851, @@ -12314,7 +12314,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150217908", "osm_node_id": 9150217908, @@ -12351,7 +12351,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150217910", "osm_node_id": 9150217910, @@ -12486,7 +12486,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150256922", "osm_node_id": 9150256922, @@ -12543,7 +12543,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150256934", "osm_node_id": 9150256934, @@ -12584,7 +12584,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276535", "osm_node_id": 9150276535, @@ -12629,7 +12629,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276536", "osm_node_id": 9150276536, @@ -12682,7 +12682,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276543", "osm_node_id": 9150276543, @@ -12727,7 +12727,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276546", "osm_node_id": 9150276546, @@ -12821,7 +12821,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276550", "osm_node_id": 9150276550, @@ -12984,7 +12984,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276554", "osm_node_id": 9150276554, @@ -13041,7 +13041,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276555", "osm_node_id": 9150276555, @@ -13078,7 +13078,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276556", "osm_node_id": 9150276556, @@ -13180,7 +13180,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276560", "osm_node_id": 9150276560, @@ -13372,7 +13372,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276566", "osm_node_id": 9150276566, @@ -13478,7 +13478,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9150276568", "osm_node_id": 9150276568, diff --git a/tests/src/i5_exit_ramp/geometry.json b/tests/src/i5_exit_ramp/geometry.json index 1538c912..1fe3009b 100644 --- a/tests/src/i5_exit_ramp/geometry.json +++ b/tests/src/i5_exit_ramp/geometry.json @@ -2783,7 +2783,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/32259207", "osm_node_id": 32259207, @@ -3201,7 +3201,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/400020830", "osm_node_id": 400020830, @@ -3246,7 +3246,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/400020831", "osm_node_id": 400020831, @@ -3377,7 +3377,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/978142408", "osm_node_id": 978142408, @@ -3570,7 +3570,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2672451447", "osm_node_id": 2672451447, @@ -3607,7 +3607,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2672451455", "osm_node_id": 2672451455, @@ -3947,7 +3947,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5757451241", "osm_node_id": 5757451241, @@ -3984,7 +3984,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5757451242", "osm_node_id": 5757451242, @@ -4021,7 +4021,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5757451243", "osm_node_id": 5757451243, @@ -4058,7 +4058,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5757451262", "osm_node_id": 5757451262, @@ -4185,7 +4185,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5766863607", "osm_node_id": 5766863607, @@ -4222,7 +4222,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5766863608", "osm_node_id": 5766863608, @@ -4304,7 +4304,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8041342867", "osm_node_id": 8041342867, @@ -4341,7 +4341,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8041342868", "osm_node_id": 8041342868, diff --git a/tests/src/kingsway_junction/geometry.json b/tests/src/kingsway_junction/geometry.json index 4602a3d0..31f17410 100644 --- a/tests/src/kingsway_junction/geometry.json +++ b/tests/src/kingsway_junction/geometry.json @@ -7443,7 +7443,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/32025949", "osm_node_id": 32025949, @@ -7931,7 +7931,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/743548122", "osm_node_id": 743548122, @@ -8009,7 +8009,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/743548183", "osm_node_id": 743548183, @@ -8136,7 +8136,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/743572640", "osm_node_id": 743572640, @@ -8636,7 +8636,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/955165990", "osm_node_id": 955165990, @@ -8812,7 +8812,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/955166125", "osm_node_id": 955166125, @@ -9136,7 +9136,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1278748166", "osm_node_id": 1278748166, @@ -9226,7 +9226,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2265010779", "osm_node_id": 2265010779, @@ -9300,7 +9300,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790145014", "osm_node_id": 2790145014, @@ -9345,7 +9345,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790145016", "osm_node_id": 2790145016, @@ -9394,7 +9394,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790145018", "osm_node_id": 2790145018, @@ -9492,7 +9492,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790153400", "osm_node_id": 2790153400, @@ -9529,7 +9529,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790153411", "osm_node_id": 2790153411, @@ -9566,7 +9566,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790153418", "osm_node_id": 2790153418, @@ -9648,7 +9648,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790153424", "osm_node_id": 2790153424, @@ -9685,7 +9685,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790153427", "osm_node_id": 2790153427, @@ -9726,7 +9726,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2790153430", "osm_node_id": 2790153430, @@ -9861,7 +9861,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2913567877", "osm_node_id": 2913567877, @@ -9898,7 +9898,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2913567879", "osm_node_id": 2913567879, @@ -9935,7 +9935,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2913621162", "osm_node_id": 2913621162, @@ -9972,7 +9972,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2913629004", "osm_node_id": 2913629004, @@ -10168,7 +10168,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2918402990", "osm_node_id": 2918402990, @@ -10217,7 +10217,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2918402991", "osm_node_id": 2918402991, @@ -10364,7 +10364,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2918434149", "osm_node_id": 2918434149, @@ -10474,7 +10474,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2920872874", "osm_node_id": 2920872874, @@ -10511,7 +10511,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2920872879", "osm_node_id": 2920872879, @@ -11407,7 +11407,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6439595307", "osm_node_id": 6439595307, @@ -11481,7 +11481,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6480352136", "osm_node_id": 6480352136, @@ -11538,7 +11538,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6480352139", "osm_node_id": 6480352139, @@ -11718,7 +11718,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7796391487", "osm_node_id": 7796391487, @@ -11915,7 +11915,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8672774810", "osm_node_id": 8672774810, @@ -11993,7 +11993,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8778504595", "osm_node_id": 8778504595, @@ -12120,7 +12120,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9169444979", "osm_node_id": 9169444979, @@ -12378,7 +12378,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401795", "osm_node_id": 9298401795, @@ -12423,7 +12423,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401796", "osm_node_id": 9298401796, @@ -12468,7 +12468,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401797", "osm_node_id": 9298401797, @@ -12513,7 +12513,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401798", "osm_node_id": 9298401798, @@ -12562,7 +12562,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401799", "osm_node_id": 9298401799, @@ -12652,7 +12652,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401807", "osm_node_id": 9298401807, @@ -12693,7 +12693,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401808", "osm_node_id": 9298401808, @@ -12734,7 +12734,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401809", "osm_node_id": 9298401809, @@ -12840,7 +12840,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9298401919", "osm_node_id": 9298401919, diff --git a/tests/src/leeds_cycleway/geometry.json b/tests/src/leeds_cycleway/geometry.json index 30ee4f4f..25599f86 100644 --- a/tests/src/leeds_cycleway/geometry.json +++ b/tests/src/leeds_cycleway/geometry.json @@ -31346,7 +31346,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/643852", "osm_node_id": 643852, @@ -31399,7 +31399,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/643906", "osm_node_id": 643906, @@ -31689,7 +31689,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/643950", "osm_node_id": 643950, @@ -32033,7 +32033,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/10440056", "osm_node_id": 10440056, @@ -32168,7 +32168,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26109190", "osm_node_id": 26109190, @@ -32262,7 +32262,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26109193", "osm_node_id": 26109193, @@ -32584,7 +32584,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26298428", "osm_node_id": 26298428, @@ -32723,7 +32723,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26298432", "osm_node_id": 26298432, @@ -32805,7 +32805,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26298442", "osm_node_id": 26298442, @@ -32969,7 +32969,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26660391", "osm_node_id": 26660391, @@ -33010,7 +33010,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26660405", "osm_node_id": 26660405, @@ -33059,7 +33059,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26660637", "osm_node_id": 26660637, @@ -33153,7 +33153,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/26661426", "osm_node_id": 26661426, @@ -33239,7 +33239,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26661442", "osm_node_id": 26661442, @@ -33284,7 +33284,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26661443", "osm_node_id": 26661443, @@ -33345,7 +33345,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26661446", "osm_node_id": 26661446, @@ -33574,7 +33574,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/26661455", "osm_node_id": 26661455, @@ -33693,7 +33693,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/60197210", "osm_node_id": 60197210, @@ -33734,7 +33734,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/60197213", "osm_node_id": 60197213, @@ -33824,7 +33824,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/250348721", "osm_node_id": 250348721, @@ -33877,7 +33877,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/301689294", "osm_node_id": 301689294, @@ -33926,7 +33926,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/301689309", "osm_node_id": 301689309, @@ -33975,7 +33975,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/301689312", "osm_node_id": 301689312, @@ -34073,7 +34073,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/301689323", "osm_node_id": 301689323, @@ -34155,7 +34155,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/319558919", "osm_node_id": 319558919, @@ -34261,7 +34261,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/320943571", "osm_node_id": 320943571, @@ -34306,7 +34306,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/320943572", "osm_node_id": 320943572, @@ -34559,7 +34559,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/320943617", "osm_node_id": 320943617, @@ -34608,7 +34608,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/320943620", "osm_node_id": 320943620, @@ -34669,7 +34669,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/320943623", "osm_node_id": 320943623, @@ -34722,7 +34722,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/320943624", "osm_node_id": 320943624, @@ -34808,7 +34808,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/320951161", "osm_node_id": 320951161, @@ -34943,7 +34943,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/320959868", "osm_node_id": 320959868, @@ -35180,7 +35180,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342529328", "osm_node_id": 342529328, @@ -35229,7 +35229,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342529363", "osm_node_id": 342529363, @@ -35278,7 +35278,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342529365", "osm_node_id": 342529365, @@ -35368,7 +35368,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579512", "osm_node_id": 342579512, @@ -35503,7 +35503,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579538", "osm_node_id": 342579538, @@ -35597,7 +35597,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579557", "osm_node_id": 342579557, @@ -35973,7 +35973,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579601", "osm_node_id": 342579601, @@ -36198,7 +36198,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579666", "osm_node_id": 342579666, @@ -36239,7 +36239,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342579667", "osm_node_id": 342579667, @@ -36280,7 +36280,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342605802", "osm_node_id": 342605802, @@ -36333,7 +36333,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/342605804", "osm_node_id": 342605804, @@ -36595,7 +36595,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/358204009", "osm_node_id": 358204009, @@ -36636,7 +36636,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/358204012", "osm_node_id": 358204012, @@ -36796,7 +36796,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/370191923", "osm_node_id": 370191923, @@ -37127,7 +37127,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/478743247", "osm_node_id": 478743247, @@ -37192,7 +37192,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/615978081", "osm_node_id": 615978081, @@ -37327,7 +37327,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/682218116", "osm_node_id": 682218116, @@ -37503,7 +37503,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/1020737577", "osm_node_id": 1020737577, @@ -37605,7 +37605,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1020737603", "osm_node_id": 1020737603, @@ -37830,7 +37830,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/1152092781", "osm_node_id": 1152092781, @@ -37879,7 +37879,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/1152092841", "osm_node_id": 1152092841, @@ -37924,7 +37924,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1152092910", "osm_node_id": 1152092910, @@ -38018,7 +38018,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1284137007", "osm_node_id": 1284137007, @@ -38075,7 +38075,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/1284137095", "osm_node_id": 1284137095, @@ -38251,7 +38251,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1569761300", "osm_node_id": 1569761300, @@ -38618,7 +38618,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1591373175", "osm_node_id": 1591373175, @@ -38712,7 +38712,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1591373193", "osm_node_id": 1591373193, @@ -38757,7 +38757,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1591373207", "osm_node_id": 1591373207, @@ -39109,7 +39109,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1606959650", "osm_node_id": 1606959650, @@ -39146,7 +39146,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1606959655", "osm_node_id": 1606959655, @@ -39228,7 +39228,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1675168030", "osm_node_id": 1675168030, @@ -39273,7 +39273,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1675168031", "osm_node_id": 1675168031, @@ -39318,7 +39318,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1675168033", "osm_node_id": 1675168033, @@ -39355,7 +39355,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1675168038", "osm_node_id": 1675168038, @@ -39638,7 +39638,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1877939939", "osm_node_id": 1877939939, @@ -39691,7 +39691,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1877939942", "osm_node_id": 1877939942, @@ -39789,7 +39789,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1877939950", "osm_node_id": 1877939950, @@ -39834,7 +39834,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1877939967", "osm_node_id": 1877939967, @@ -39875,7 +39875,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1877939969", "osm_node_id": 1877939969, @@ -39965,7 +39965,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1877939975", "osm_node_id": 1877939975, @@ -40006,7 +40006,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1877939977", "osm_node_id": 1877939977, @@ -40063,7 +40063,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304851", "osm_node_id": 2014304851, @@ -40165,7 +40165,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304856", "osm_node_id": 2014304856, @@ -40218,7 +40218,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304862", "osm_node_id": 2014304862, @@ -40422,7 +40422,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304908", "osm_node_id": 2014304908, @@ -40475,7 +40475,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304911", "osm_node_id": 2014304911, @@ -40577,7 +40577,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2014304914", "osm_node_id": 2014304914, @@ -40626,7 +40626,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304915", "osm_node_id": 2014304915, @@ -40777,7 +40777,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2014304920", "osm_node_id": 2014304920, @@ -40826,7 +40826,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2014304923", "osm_node_id": 2014304923, @@ -41199,7 +41199,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3193487666", "osm_node_id": 3193487666, @@ -41240,7 +41240,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3193487669", "osm_node_id": 3193487669, @@ -41351,7 +41351,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3219472259", "osm_node_id": 3219472259, @@ -41388,7 +41388,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3219472271", "osm_node_id": 3219472271, @@ -41425,7 +41425,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3219472273", "osm_node_id": 3219472273, @@ -41462,7 +41462,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3219472282", "osm_node_id": 3219472282, @@ -41605,7 +41605,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3381506663", "osm_node_id": 3381506663, @@ -41642,7 +41642,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3381506664", "osm_node_id": 3381506664, @@ -42050,7 +42050,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4361246654", "osm_node_id": 4361246654, @@ -42087,7 +42087,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4361246658", "osm_node_id": 4361246658, @@ -42528,7 +42528,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/4457095870", "osm_node_id": 4457095870, @@ -42565,7 +42565,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4457095874", "osm_node_id": 4457095874, @@ -42716,7 +42716,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4457813299", "osm_node_id": 4457813299, @@ -42827,7 +42827,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4457813310", "osm_node_id": 4457813310, @@ -42864,7 +42864,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4500478004", "osm_node_id": 4500478004, @@ -43044,7 +43044,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4833244389", "osm_node_id": 4833244389, @@ -43081,7 +43081,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5071469689", "osm_node_id": 5071469689, @@ -43126,7 +43126,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5071469690", "osm_node_id": 5071469690, @@ -43183,7 +43183,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5071469692", "osm_node_id": 5071469692, @@ -43302,7 +43302,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5071469697", "osm_node_id": 5071469697, @@ -43343,7 +43343,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5071469698", "osm_node_id": 5071469698, @@ -43449,7 +43449,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5071469702", "osm_node_id": 5071469702, @@ -43829,7 +43829,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452444905", "osm_node_id": 5452444905, @@ -43980,7 +43980,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452444914", "osm_node_id": 5452444914, @@ -44074,7 +44074,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452456321", "osm_node_id": 5452456321, @@ -44491,7 +44491,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378763", "osm_node_id": 5506378763, @@ -44536,7 +44536,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378764", "osm_node_id": 5506378764, @@ -44581,7 +44581,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378765", "osm_node_id": 5506378765, @@ -44618,7 +44618,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378766", "osm_node_id": 5506378766, @@ -44655,7 +44655,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378768", "osm_node_id": 5506378768, @@ -44692,7 +44692,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378774", "osm_node_id": 5506378774, @@ -44737,7 +44737,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378775", "osm_node_id": 5506378775, @@ -44827,7 +44827,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378778", "osm_node_id": 5506378778, @@ -45015,7 +45015,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5506378793", "osm_node_id": 5506378793, @@ -45390,7 +45390,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5728993713", "osm_node_id": 5728993713, @@ -45431,7 +45431,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5728993720", "osm_node_id": 5728993720, @@ -45492,7 +45492,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5728993833", "osm_node_id": 5728993833, @@ -46288,7 +46288,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482089", "osm_node_id": 6001482089, @@ -46508,7 +46508,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6001482093", "osm_node_id": 6001482093, @@ -47230,7 +47230,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022850280", "osm_node_id": 6022850280, @@ -47287,7 +47287,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6047091983", "osm_node_id": 6047091983, @@ -47348,7 +47348,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6047609624", "osm_node_id": 6047609624, @@ -48002,7 +48002,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6211583011", "osm_node_id": 6211583011, @@ -48100,7 +48100,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6211583020", "osm_node_id": 6211583020, @@ -48157,7 +48157,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/6211583022", "osm_node_id": 6211583022, @@ -48516,7 +48516,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264559102", "osm_node_id": 6264559102, @@ -48614,7 +48614,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264670255", "osm_node_id": 6264670255, @@ -48655,7 +48655,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264670261", "osm_node_id": 6264670261, @@ -48745,7 +48745,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264670280", "osm_node_id": 6264670280, @@ -48786,7 +48786,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6264671914", "osm_node_id": 6264671914, @@ -48998,7 +48998,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6309354601", "osm_node_id": 6309354601, @@ -49080,7 +49080,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6309354657", "osm_node_id": 6309354657, @@ -49170,7 +49170,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6309394776", "osm_node_id": 6309394776, @@ -49207,7 +49207,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6309394782", "osm_node_id": 6309394782, @@ -49297,7 +49297,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6309407702", "osm_node_id": 6309407702, @@ -49334,7 +49334,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6428423986", "osm_node_id": 6428423986, @@ -49587,7 +49587,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6584937053", "osm_node_id": 6584937053, @@ -49624,7 +49624,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6584937059", "osm_node_id": 6584937059, @@ -49698,7 +49698,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6584937067", "osm_node_id": 6584937067, @@ -50061,7 +50061,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6596024419", "osm_node_id": 6596024419, @@ -50151,7 +50151,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6596024422", "osm_node_id": 6596024422, @@ -50208,7 +50208,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6596024424", "osm_node_id": 6596024424, @@ -50364,7 +50364,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6665254450", "osm_node_id": 6665254450, @@ -50622,7 +50622,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6740104094", "osm_node_id": 6740104094, @@ -50769,7 +50769,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6905278495", "osm_node_id": 6905278495, @@ -50806,7 +50806,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6905278499", "osm_node_id": 6905278499, @@ -50843,7 +50843,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6905278500", "osm_node_id": 6905278500, @@ -50892,7 +50892,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6905278501", "osm_node_id": 6905278501, @@ -50953,7 +50953,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6935272506", "osm_node_id": 6935272506, @@ -51006,7 +51006,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6935272509", "osm_node_id": 6935272509, @@ -51104,7 +51104,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6979945557", "osm_node_id": 6979945557, @@ -51247,7 +51247,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7105816299", "osm_node_id": 7105816299, @@ -51284,7 +51284,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7105816301", "osm_node_id": 7105816301, @@ -51411,7 +51411,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237435069", "osm_node_id": 7237435069, @@ -51448,7 +51448,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237435070", "osm_node_id": 7237435070, @@ -51926,7 +51926,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437070", "osm_node_id": 7237437070, @@ -51975,7 +51975,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/7237437075", "osm_node_id": 7237437075, @@ -52012,7 +52012,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437077", "osm_node_id": 7237437077, @@ -52102,7 +52102,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437092", "osm_node_id": 7237437092, @@ -52188,7 +52188,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437094", "osm_node_id": 7237437094, @@ -52225,7 +52225,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437096", "osm_node_id": 7237437096, @@ -52262,7 +52262,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437098", "osm_node_id": 7237437098, @@ -52299,7 +52299,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7237437116", "osm_node_id": 7237437116, @@ -52336,7 +52336,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/7241259893", "osm_node_id": 7241259893, @@ -52373,7 +52373,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/7241259894", "osm_node_id": 7241259894, @@ -52410,7 +52410,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7241259895", "osm_node_id": 7241259895, @@ -52484,7 +52484,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7261942252", "osm_node_id": 7261942252, @@ -52521,7 +52521,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7261942264", "osm_node_id": 7261942264, @@ -52750,7 +52750,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7261942276", "osm_node_id": 7261942276, @@ -52988,7 +52988,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7924241274", "osm_node_id": 7924241274, @@ -53078,7 +53078,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/8174077586", "osm_node_id": 8174077586, @@ -53139,7 +53139,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/8174077587", "osm_node_id": 8174077587, @@ -53286,7 +53286,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8312439326", "osm_node_id": 8312439326, @@ -53601,7 +53601,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8450014339", "osm_node_id": 8450014339, @@ -55535,7 +55535,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/8733041518", "osm_node_id": 8733041518, @@ -55723,7 +55723,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8740550413", "osm_node_id": 8740550413, @@ -55862,7 +55862,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8892765838", "osm_node_id": 8892765838, @@ -55919,7 +55919,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8990249593", "osm_node_id": 8990249593, @@ -56013,7 +56013,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8990249596", "osm_node_id": 8990249596, @@ -56152,7 +56152,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9258530380", "osm_node_id": 9258530380, @@ -56189,7 +56189,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9258530382", "osm_node_id": 9258530382, @@ -56528,7 +56528,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9316506599", "osm_node_id": 9316506599, @@ -56614,7 +56614,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/9319419230", "osm_node_id": 9319419230, @@ -56790,7 +56790,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9319419244", "osm_node_id": 9319419244, @@ -56827,7 +56827,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9319419245", "osm_node_id": 9319419245, @@ -56864,7 +56864,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9319419252", "osm_node_id": 9319419252, @@ -56921,7 +56921,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9319419267", "osm_node_id": 9319419267, @@ -56958,7 +56958,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9319419273", "osm_node_id": 9319419273, @@ -57224,7 +57224,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9356627345", "osm_node_id": 9356627345, diff --git a/tests/src/northgate_dual_carriageway/geometry.json b/tests/src/northgate_dual_carriageway/geometry.json index d3291836..4a86a87b 100644 --- a/tests/src/northgate_dual_carriageway/geometry.json +++ b/tests/src/northgate_dual_carriageway/geometry.json @@ -7203,7 +7203,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Merge", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/95600603", "osm_node_id": 95600603, @@ -7285,7 +7285,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/400473864", "osm_node_id": 400473864, @@ -8725,7 +8725,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2706302783", "osm_node_id": 2706302783, @@ -8823,7 +8823,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2706302794", "osm_node_id": 2706302794, @@ -8966,7 +8966,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2706302805", "osm_node_id": 2706302805, @@ -9881,7 +9881,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4632418344", "osm_node_id": 4632418344, @@ -9918,7 +9918,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4723314713", "osm_node_id": 4723314713, @@ -10312,7 +10312,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4789250352", "osm_node_id": 4789250352, @@ -10460,7 +10460,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6139800717", "osm_node_id": 6139800717, @@ -10571,7 +10571,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7518081809", "osm_node_id": 7518081809, @@ -10608,7 +10608,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7518081836", "osm_node_id": 7518081836, @@ -10645,7 +10645,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7518081853", "osm_node_id": 7518081853, @@ -11045,7 +11045,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8500822586", "osm_node_id": 8500822586, @@ -11082,7 +11082,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8500822593", "osm_node_id": 8500822593, @@ -11221,7 +11221,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8975595220", "osm_node_id": 8975595220, @@ -11258,7 +11258,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8986750916", "osm_node_id": 8986750916, @@ -11332,7 +11332,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8986752620", "osm_node_id": 8986752620, @@ -11369,7 +11369,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8986752621", "osm_node_id": 8986752621, @@ -11557,7 +11557,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9188152666", "osm_node_id": 9188152666, @@ -11594,7 +11594,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9188152667", "osm_node_id": 9188152667, @@ -11659,7 +11659,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9188152680", "osm_node_id": 9188152680, @@ -11696,7 +11696,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9188152681", "osm_node_id": 9188152681, @@ -12080,7 +12080,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9384044289", "osm_node_id": 9384044289, @@ -12117,7 +12117,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9384044299", "osm_node_id": 9384044299, @@ -12154,7 +12154,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9384044300", "osm_node_id": 9384044300, @@ -12191,7 +12191,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9384178855", "osm_node_id": 9384178855, @@ -12236,7 +12236,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9384317428", "osm_node_id": 9384317428, @@ -12273,7 +12273,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9687585569", "osm_node_id": 9687585569, @@ -12318,7 +12318,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9687585570", "osm_node_id": 9687585570, @@ -12355,7 +12355,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9687585571", "osm_node_id": 9687585571, @@ -12392,7 +12392,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9687585572", "osm_node_id": 9687585572, @@ -12429,7 +12429,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9693399658", "osm_node_id": 9693399658, @@ -12474,7 +12474,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9693399659", "osm_node_id": 9693399659, @@ -12511,7 +12511,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9693399661", "osm_node_id": 9693399661, @@ -12548,7 +12548,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9693399662", "osm_node_id": 9693399662, @@ -12585,7 +12585,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9693399664", "osm_node_id": 9693399664, @@ -12622,7 +12622,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9693399665", "osm_node_id": 9693399665, @@ -12765,7 +12765,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9718788164", "osm_node_id": 9718788164, @@ -12802,7 +12802,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9718788165", "osm_node_id": 9718788165, @@ -12839,7 +12839,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9718788166", "osm_node_id": 9718788166, @@ -12876,7 +12876,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9718788167", "osm_node_id": 9718788167, @@ -12913,7 +12913,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9718788168", "osm_node_id": 9718788168, @@ -12950,7 +12950,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9718788169", "osm_node_id": 9718788169, @@ -12987,7 +12987,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9718788170", "osm_node_id": 9718788170, @@ -13024,7 +13024,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9718788177", "osm_node_id": 9718788177, @@ -13061,7 +13061,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9718788178", "osm_node_id": 9718788178, @@ -13151,7 +13151,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9725719359", "osm_node_id": 9725719359, @@ -13188,7 +13188,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9725987903", "osm_node_id": 9725987903, @@ -13229,7 +13229,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9725987904", "osm_node_id": 9725987904, @@ -13458,7 +13458,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9772983386", "osm_node_id": 9772983386, @@ -13495,7 +13495,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9772983388", "osm_node_id": 9772983388, @@ -13532,7 +13532,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9772983389", "osm_node_id": 9772983389, @@ -13569,7 +13569,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9800403235", "osm_node_id": 9800403235, @@ -13643,7 +13643,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9800404629", "osm_node_id": 9800404629, @@ -13680,7 +13680,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9800404631", "osm_node_id": 9800404631, @@ -13717,7 +13717,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9801096630", "osm_node_id": 9801096630, @@ -13754,7 +13754,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9801096631", "osm_node_id": 9801096631, @@ -13791,7 +13791,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9801096633", "osm_node_id": 9801096633, @@ -13828,7 +13828,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9801096634", "osm_node_id": 9801096634, @@ -13873,7 +13873,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9801096635", "osm_node_id": 9801096635, @@ -13910,7 +13910,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9801096636", "osm_node_id": 9801096636, @@ -13947,7 +13947,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9801096637", "osm_node_id": 9801096637, @@ -13992,7 +13992,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9801096638", "osm_node_id": 9801096638, @@ -14029,7 +14029,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9801096640", "osm_node_id": 9801096640, @@ -14119,7 +14119,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9801096645", "osm_node_id": 9801096645, diff --git a/tests/src/oneway_loop/geometry.json b/tests/src/oneway_loop/geometry.json index 8ea9a602..9d4cc44e 100644 --- a/tests/src/oneway_loop/geometry.json +++ b/tests/src/oneway_loop/geometry.json @@ -1892,7 +1892,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25496666", "osm_node_id": 25496666, @@ -1945,7 +1945,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25496667", "osm_node_id": 25496667, @@ -1986,7 +1986,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1080429761", "osm_node_id": 1080429761, @@ -2129,7 +2129,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1080429864", "osm_node_id": 1080429864, @@ -2203,7 +2203,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1080430042", "osm_node_id": 1080430042, @@ -2240,7 +2240,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1249482198", "osm_node_id": 1249482198, @@ -2314,7 +2314,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1701264964", "osm_node_id": 1701264964, @@ -2371,7 +2371,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1701265003", "osm_node_id": 1701265003, @@ -2453,7 +2453,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1701265019", "osm_node_id": 1701265019, @@ -2527,7 +2527,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1933344140", "osm_node_id": 1933344140, @@ -2564,7 +2564,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3080103386", "osm_node_id": 3080103386, @@ -2854,7 +2854,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9568915256", "osm_node_id": 9568915256, @@ -2948,7 +2948,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9568915259", "osm_node_id": 9568915259, diff --git a/tests/src/roosevelt_cycletrack/geometry.json b/tests/src/roosevelt_cycletrack/geometry.json index 4f43a733..f1327f33 100644 --- a/tests/src/roosevelt_cycletrack/geometry.json +++ b/tests/src/roosevelt_cycletrack/geometry.json @@ -5710,7 +5710,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/752191853", "osm_node_id": 752191853, @@ -5747,7 +5747,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/752191859", "osm_node_id": 752191859, @@ -5866,7 +5866,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3003528165", "osm_node_id": 3003528165, @@ -5977,7 +5977,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3976726723", "osm_node_id": 3976726723, @@ -6006,7 +6006,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3976726724", "osm_node_id": 3976726724, @@ -6043,7 +6043,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3976726725", "osm_node_id": 3976726725, @@ -6166,7 +6166,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739623", "osm_node_id": 4384739623, @@ -6211,7 +6211,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739624", "osm_node_id": 4384739624, @@ -6260,7 +6260,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739627", "osm_node_id": 4384739627, @@ -6305,7 +6305,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739630", "osm_node_id": 4384739630, @@ -6358,7 +6358,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739631", "osm_node_id": 4384739631, @@ -6403,7 +6403,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739632", "osm_node_id": 4384739632, @@ -6456,7 +6456,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739635", "osm_node_id": 4384739635, @@ -6620,7 +6620,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4694384138", "osm_node_id": 4694384138, @@ -6657,7 +6657,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4694405879", "osm_node_id": 4694405879, @@ -6694,7 +6694,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4829706954", "osm_node_id": 4829706954, @@ -6731,7 +6731,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4829706955", "osm_node_id": 4829706955, @@ -6768,7 +6768,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4829706956", "osm_node_id": 4829706956, @@ -6805,7 +6805,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4829706959", "osm_node_id": 4829706959, @@ -6842,7 +6842,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4831220179", "osm_node_id": 4831220179, @@ -6879,7 +6879,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4831220200", "osm_node_id": 4831220200, @@ -6916,7 +6916,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4831220201", "osm_node_id": 4831220201, @@ -6953,7 +6953,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5154286399", "osm_node_id": 5154286399, @@ -7010,7 +7010,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5443485497", "osm_node_id": 5443485497, @@ -7255,7 +7255,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452243878", "osm_node_id": 5452243878, @@ -7300,7 +7300,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5674754355", "osm_node_id": 5674754355, @@ -7349,7 +7349,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5674754357", "osm_node_id": 5674754357, @@ -7382,7 +7382,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5908851924", "osm_node_id": 5908851924, @@ -7419,7 +7419,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5908851926", "osm_node_id": 5908851926, @@ -7587,7 +7587,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5908863567", "osm_node_id": 5908863567, @@ -7771,7 +7771,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6338026453", "osm_node_id": 6338026453, @@ -7808,7 +7808,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6338033838", "osm_node_id": 6338033838, @@ -7845,7 +7845,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6697419470", "osm_node_id": 6697419470, @@ -8188,7 +8188,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8428577667", "osm_node_id": 8428577667, @@ -8590,7 +8590,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9451600301", "osm_node_id": 9451600301, diff --git a/tests/src/seattle_slip_lane/geometry.json b/tests/src/seattle_slip_lane/geometry.json index 0f528c73..3e9eefa1 100644 --- a/tests/src/seattle_slip_lane/geometry.json +++ b/tests/src/seattle_slip_lane/geometry.json @@ -2303,7 +2303,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5674754355", "osm_node_id": 5674754355, @@ -2352,7 +2352,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5674754357", "osm_node_id": 5674754357, @@ -2814,7 +2814,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8428577667", "osm_node_id": 8428577667, diff --git a/tests/src/seattle_triangle/geometry.json b/tests/src/seattle_triangle/geometry.json index 635e56fd..e2e3021f 100644 --- a/tests/src/seattle_triangle/geometry.json +++ b/tests/src/seattle_triangle/geometry.json @@ -1379,7 +1379,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5768923253", "osm_node_id": 5768923253, @@ -1416,7 +1416,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021878", "osm_node_id": 5772021878, @@ -1453,7 +1453,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021889", "osm_node_id": 5772021889, @@ -1490,7 +1490,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021890", "osm_node_id": 5772021890, @@ -1527,7 +1527,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021891", "osm_node_id": 5772021891, @@ -1564,7 +1564,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021892", "osm_node_id": 5772021892, @@ -1601,7 +1601,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021893", "osm_node_id": 5772021893, @@ -1638,7 +1638,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021895", "osm_node_id": 5772021895, @@ -1675,7 +1675,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021896", "osm_node_id": 5772021896, @@ -1712,7 +1712,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021897", "osm_node_id": 5772021897, @@ -1749,7 +1749,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021898", "osm_node_id": 5772021898, @@ -1786,7 +1786,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021899", "osm_node_id": 5772021899, @@ -1823,7 +1823,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021900", "osm_node_id": 5772021900, @@ -1860,7 +1860,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021901", "osm_node_id": 5772021901, @@ -1897,7 +1897,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021902", "osm_node_id": 5772021902, @@ -1934,7 +1934,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021903", "osm_node_id": 5772021903, @@ -1971,7 +1971,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021904", "osm_node_id": 5772021904, @@ -2008,7 +2008,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021905", "osm_node_id": 5772021905, @@ -2045,7 +2045,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5772021906", "osm_node_id": 5772021906, @@ -2082,7 +2082,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7083431696", "osm_node_id": 7083431696, @@ -2123,7 +2123,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8780140700", "osm_node_id": 8780140700, @@ -2168,7 +2168,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8780140703", "osm_node_id": 8780140703, @@ -2225,7 +2225,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8780140709", "osm_node_id": 8780140709, diff --git a/tests/src/service_road_loop/geometry.json b/tests/src/service_road_loop/geometry.json index b4ed7466..eded0727 100644 --- a/tests/src/service_road_loop/geometry.json +++ b/tests/src/service_road_loop/geometry.json @@ -1366,7 +1366,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/30984582", "osm_node_id": 30984582, @@ -1575,7 +1575,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3710247245", "osm_node_id": 3710247245, @@ -1935,7 +1935,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6036958569", "osm_node_id": 6036958569, @@ -2200,7 +2200,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6036958639", "osm_node_id": 6036958639, diff --git a/tests/src/st_georges_cycletrack/geometry.json b/tests/src/st_georges_cycletrack/geometry.json index 677b44fc..5fb13fc7 100644 --- a/tests/src/st_georges_cycletrack/geometry.json +++ b/tests/src/st_georges_cycletrack/geometry.json @@ -6654,7 +6654,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/61334096", "osm_node_id": 61334096, @@ -6703,7 +6703,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/61334099", "osm_node_id": 61334099, @@ -7113,7 +7113,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/264790813", "osm_node_id": 264790813, @@ -7199,7 +7199,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/265241535", "osm_node_id": 265241535, @@ -7453,7 +7453,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1819350081", "osm_node_id": 1819350081, @@ -7780,7 +7780,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1819350182", "osm_node_id": 1819350182, @@ -7972,7 +7972,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2180693485", "osm_node_id": 2180693485, @@ -8066,7 +8066,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2464418698", "osm_node_id": 2464418698, @@ -8201,7 +8201,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2932500919", "osm_node_id": 2932500919, @@ -8324,7 +8324,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2932500936", "osm_node_id": 2932500936, @@ -8578,7 +8578,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3799274007", "osm_node_id": 3799274007, @@ -8635,7 +8635,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/3799274008", "osm_node_id": 3799274008, @@ -8688,7 +8688,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/3799274009", "osm_node_id": 3799274009, @@ -8737,7 +8737,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3799274011", "osm_node_id": 3799274011, @@ -9011,7 +9011,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3874597641", "osm_node_id": 3874597641, @@ -9130,7 +9130,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3890206821", "osm_node_id": 3890206821, @@ -9220,7 +9220,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/3890206825", "osm_node_id": 3890206825, @@ -9273,7 +9273,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/3890206831", "osm_node_id": 3890206831, @@ -9363,7 +9363,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4156272585", "osm_node_id": 4156272585, @@ -9498,7 +9498,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/4169653676", "osm_node_id": 4169653676, @@ -9625,7 +9625,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/4175070882", "osm_node_id": 4175070882, @@ -9736,7 +9736,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022813715", "osm_node_id": 6022813715, @@ -9781,7 +9781,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022813716", "osm_node_id": 6022813716, @@ -9830,7 +9830,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/6022813718", "osm_node_id": 6022813718, @@ -9875,7 +9875,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/6022813720", "osm_node_id": 6022813720, @@ -9912,7 +9912,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022813723", "osm_node_id": 6022813723, @@ -9949,7 +9949,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022813725", "osm_node_id": 6022813725, @@ -9986,7 +9986,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022813726", "osm_node_id": 6022813726, @@ -10023,7 +10023,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022813729", "osm_node_id": 6022813729, @@ -10060,7 +10060,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022813731", "osm_node_id": 6022813731, @@ -10183,7 +10183,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6022823874", "osm_node_id": 6022823874, @@ -10261,7 +10261,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6231431191", "osm_node_id": 6231431191, @@ -10298,7 +10298,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6231431193", "osm_node_id": 6231431193, @@ -10384,7 +10384,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6329043357", "osm_node_id": 6329043357, @@ -10576,7 +10576,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6502835822", "osm_node_id": 6502835822, @@ -10613,7 +10613,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6502835823", "osm_node_id": 6502835823, @@ -10650,7 +10650,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6502835826", "osm_node_id": 6502835826, @@ -10687,7 +10687,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/6502835827", "osm_node_id": 6502835827, @@ -10724,7 +10724,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6896299617", "osm_node_id": 6896299617, @@ -10761,7 +10761,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6970648941", "osm_node_id": 6970648941, @@ -10843,7 +10843,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6970648945", "osm_node_id": 6970648945, @@ -10880,7 +10880,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "MultiConnection Uncontested", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/7004860404", "osm_node_id": 7004860404, @@ -11007,7 +11007,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8936977833", "osm_node_id": 8936977833, @@ -11093,7 +11093,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8936997805", "osm_node_id": 8936997805, @@ -11167,7 +11167,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8942303831", "osm_node_id": 8942303831, @@ -11302,7 +11302,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8947417389", "osm_node_id": 8947417389, @@ -11339,7 +11339,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8947417390", "osm_node_id": 8947417390, @@ -11376,7 +11376,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8947442148", "osm_node_id": 8947442148, @@ -11413,7 +11413,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8947442152", "osm_node_id": 8947442152, @@ -11454,7 +11454,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/8952790002", "osm_node_id": 8952790002, @@ -11491,7 +11491,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136430525", "osm_node_id": 9136430525, @@ -11597,7 +11597,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9136430547", "osm_node_id": 9136430547, diff --git a/tests/src/taipei/geometry.json b/tests/src/taipei/geometry.json index e104b5f5..06ecf212 100644 --- a/tests/src/taipei/geometry.json +++ b/tests/src/taipei/geometry.json @@ -4683,7 +4683,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4568589283", "osm_node_id": 4568589283, @@ -4744,7 +4744,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4568593105", "osm_node_id": 4568593105, @@ -4781,7 +4781,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4568593109", "osm_node_id": 4568593109, @@ -4892,7 +4892,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5262459478", "osm_node_id": 5262459478, diff --git a/tests/src/tempe_light_rail/geometry.json b/tests/src/tempe_light_rail/geometry.json index 1b9c3e89..32b77168 100644 --- a/tests/src/tempe_light_rail/geometry.json +++ b/tests/src/tempe_light_rail/geometry.json @@ -788,7 +788,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Terminus", + "complexity": "MultiConnection Uncontested", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1501648604", "osm_node_id": 1501648604, diff --git a/tests/src/tempe_split/geometry.json b/tests/src/tempe_split/geometry.json index 0f53418c..f6f9af4a 100644 --- a/tests/src/tempe_split/geometry.json +++ b/tests/src/tempe_split/geometry.json @@ -1453,7 +1453,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2239876836", "osm_node_id": 2239876836, @@ -1502,7 +1502,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/2860653268", "osm_node_id": 2860653268, @@ -1875,7 +1875,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4346605156", "osm_node_id": 4346605156, @@ -2182,7 +2182,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5717678154", "osm_node_id": 5717678154, From e58eaa95449646af40f153db8315aa696ca9bd4c Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Fri, 11 Nov 2022 15:48:20 +0800 Subject: [PATCH 16/27] tmp: Add todos --- osm2streets/src/transform/classify_intersections.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 977f4d93..496325dc 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -85,8 +85,15 @@ fn guess_complexity( continue; } + // TODO detect U-Turns that should be assumed forbidden. + // if src and dst are oneway and + // adjacent on the intersection and + // ordered with the "insides" touching and + // the angle between them is small enough. + // Check for any turn restrictions. if turn_is_allowed(src_road, dst_road) { + //FIXME this is no longer accurate because s and d are indexes into a filtered list: connections.push((s, d)); } } From 24845f3a43eb3ff689725e9d7ed79da6d2137d6d Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Mon, 14 Nov 2022 15:05:09 +0800 Subject: [PATCH 17/27] Fix debug_movements_geojson now that InitialMap has gone away --- osm2streets-js/src/lib.rs | 4 +--- osm2streets/src/render.rs | 20 ++++++++------------ 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/osm2streets-js/src/lib.rs b/osm2streets-js/src/lib.rs index e9e57aef..ac06d474 100644 --- a/osm2streets-js/src/lib.rs +++ b/osm2streets-js/src/lib.rs @@ -99,9 +99,7 @@ impl JsStreetNetwork { #[wasm_bindgen(js_name = debugMovementsGeojson)] pub fn debug_movements_geojson(&self) -> String { - self.inner - .debug_movements_geojson(&mut Timer::throwaway()) - .unwrap() + self.inner.debug_movements_geojson().unwrap() } } diff --git a/osm2streets/src/render.rs b/osm2streets/src/render.rs index 79fad9d0..66f2a462 100644 --- a/osm2streets/src/render.rs +++ b/osm2streets/src/render.rs @@ -251,8 +251,7 @@ impl StreetNetwork { } /// For an intersection, show all the movements. - pub fn debug_movements_geojson(&self, timer: &mut Timer) -> Result { - let initial_map = crate::initial::InitialMap::new(self, timer); + pub fn debug_movements_geojson(&self) -> Result { let arrow_shift_dist = if self.config.driving_side == DrivingSide::Right { Distance::meters(-1.3) } else { @@ -262,22 +261,19 @@ impl StreetNetwork { let mut pairs = Vec::new(); for (i, intersection) in &self.intersections { - // Find the endpoints + // Find the points where the arrows should (leave, enter) the roads. let road_points: Vec<_> = intersection .roads .iter() .map(|r| { - let pl = &initial_map.roads[r].trimmed_center_pts; - let first_road_segment = if r.i1 == *i { - pl.first_line() + let road = &self.roads[r]; + let first_road_segment = if road.id.i1 == *i { + road.trimmed_center_line.first_line() } else { - pl.last_line().reversed() + road.trimmed_center_line.last_line().reversed() }; - if self - .roads - .get(r) - .map_or(false, |road| road.oneway_for_driving().is_some()) - { + // Offset the arrow start/end points if it is bidirectional. + if road.oneway_for_driving().is_some() { (first_road_segment.pt1(), first_road_segment.pt1()) } else { ( From ad8e7e85b0268b83f04a1b312326ae196f62b7f6 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Mon, 14 Nov 2022 15:14:12 +0800 Subject: [PATCH 18/27] Make use of embedded road ids instead of passing around (id, road) pairs --- .../src/transform/classify_intersections.rs | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 496325dc..d41e454d 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -38,8 +38,8 @@ fn guess_complexity( let roads: Vec<_> = streets .roads_per_intersection(*intersection_id) .iter() - .map(|id| streets.roads.get_key_value(id).unwrap()) - .filter(|(_id, road)| road.is_driveable()) + .map(|id| &streets.roads[id]) + .filter(|road| road.is_driveable()) .collect(); // A terminus is characterised by a single connected road. @@ -120,9 +120,9 @@ fn guess_complexity( } } -fn can_drive_out_of(id_road: (&OriginalRoad, &Road), which_end: NodeID) -> bool { - if let Some(driving_dir) = id_road.1.oneway_for_driving() { - let required_dir = if id_road.0.i2 == which_end { +fn can_drive_out_of(road: &Road, which_end: NodeID) -> bool { + if let Some(driving_dir) = road.oneway_for_driving() { + let required_dir = if road.id.i2 == which_end { Direction::Fwd } else { Direction::Back @@ -132,9 +132,9 @@ fn can_drive_out_of(id_road: (&OriginalRoad, &Road), which_end: NodeID) -> bool return true; } -fn can_drive_into(id_road: (&OriginalRoad, &Road), which_end: NodeID) -> bool { - if let Some(driving_dir) = id_road.1.oneway_for_driving() { - let required_dir = if id_road.0.i1 == which_end { +fn can_drive_into(road: &Road, which_end: NodeID) -> bool { + if let Some(driving_dir) = road.oneway_for_driving() { + let required_dir = if road.id.i1 == which_end { Direction::Fwd } else { Direction::Back @@ -144,17 +144,17 @@ fn can_drive_into(id_road: (&OriginalRoad, &Road), which_end: NodeID) -> bool { return true; } -fn turn_is_allowed(src: (&OriginalRoad, &Road), dst: (&OriginalRoad, &Road)) -> bool { +fn turn_is_allowed(src: &Road, dst: &Road) -> bool { let mut has_exclusive_allows = false; - for (t, other) in src.1.turn_restrictions.iter() { + for (t, other) in src.turn_restrictions.iter() { match t { RestrictionType::BanTurns => { - if *other == *dst.0 { + if *other == dst.id { return false; } } RestrictionType::OnlyAllowTurns => { - if *other == *dst.0 { + if *other == dst.id { return true; } has_exclusive_allows = true; From d46babde96ec601811eed64e0147dda1c489ef59 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Mon, 14 Nov 2022 16:02:24 +0800 Subject: [PATCH 19/27] Represent movements stored in `Intersection` as roads ids instead or indexes The indexes we had were indexing into a filtered road list. Road ids seems better anyway. --- osm2streets/src/lib.rs | 4 +- osm2streets/src/render.rs | 34 +++++++++------- .../src/transform/classify_intersections.rs | 39 ++++++++----------- osm2streets/src/types.rs | 5 +-- 4 files changed, 40 insertions(+), 42 deletions(-) diff --git a/osm2streets/src/lib.rs b/osm2streets/src/lib.rs index f8ca9623..2d3bc04f 100644 --- a/osm2streets/src/lib.rs +++ b/osm2streets/src/lib.rs @@ -20,7 +20,7 @@ pub use self::lanes::{ }; pub use self::transform::Transformation; pub use self::types::{ - ConflictType, ControlType, DrivingSide, IndexedMovement, IntersectionComplexity, MapConfig, + ConflictType, ControlType, DrivingSide, IntersectionComplexity, MapConfig, Movement, NamePerLanguage, }; @@ -555,7 +555,7 @@ pub struct Intersection { /// All roads connected to this intersection. They may be incoming or outgoing relative to this /// intersection. They're ordered clockwise aroundd the intersection. pub roads: Vec, - pub movements: Vec, + pub movements: Vec, // true if src_i matches this intersection (or the deleted/consolidated one, whatever) pub trim_roads_for_merging: BTreeMap<(osm::WayID, bool), Pt2D>, diff --git a/osm2streets/src/render.rs b/osm2streets/src/render.rs index 66f2a462..0130fbff 100644 --- a/osm2streets/src/render.rs +++ b/osm2streets/src/render.rs @@ -1,3 +1,4 @@ +use std::collections::BTreeMap; use std::fs::File; use std::io::Write; use std::path::Path; @@ -262,7 +263,7 @@ impl StreetNetwork { for (i, intersection) in &self.intersections { // Find the points where the arrows should (leave, enter) the roads. - let road_points: Vec<_> = intersection + let road_points: BTreeMap<_, _> = intersection .roads .iter() .map(|r| { @@ -273,23 +274,26 @@ impl StreetNetwork { road.trimmed_center_line.last_line().reversed() }; // Offset the arrow start/end points if it is bidirectional. - if road.oneway_for_driving().is_some() { - (first_road_segment.pt1(), first_road_segment.pt1()) - } else { - ( - first_road_segment - .shift_either_direction(arrow_shift_dist) - .pt1(), - first_road_segment - .shift_either_direction(-arrow_shift_dist) - .pt1(), - ) - } + ( + r, + if road.oneway_for_driving().is_some() { + (first_road_segment.pt1(), first_road_segment.pt1()) + } else { + ( + first_road_segment + .shift_either_direction(arrow_shift_dist) + .pt1(), + first_road_segment + .shift_either_direction(-arrow_shift_dist) + .pt1(), + ) + }, + ) }) .collect(); for (a, b) in intersection.movements.iter() { - if *a != *b { - if let Ok(line) = Line::new(road_points[*a].0, road_points[*b].1) { + if a != b { + if let Ok(line) = Line::new(road_points[a].0, road_points[b].1) { pairs.push(( line.to_polyline() .make_arrow(Distance::meters(0.5), ArrowCap::Triangle) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index d41e454d..b49d19a6 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -1,10 +1,9 @@ use crate::osm::NodeID; -use crate::types::IndexedMovement; +use crate::types::Movement; use crate::Direction; use crate::IntersectionComplexity::*; use crate::{ - ConflictType, DrivingSide, IntersectionComplexity, OriginalRoad, RestrictionType, Road, - StreetNetwork, + ConflictType, DrivingSide, IntersectionComplexity, RestrictionType, Road, StreetNetwork, }; use std::cmp::{max, min}; use std::collections::BTreeMap; @@ -33,7 +32,7 @@ pub fn classify_intersections(streets: &mut StreetNetwork) { fn guess_complexity( streets: &StreetNetwork, intersection_id: &NodeID, -) -> (IntersectionComplexity, ConflictType, Vec) { +) -> (IntersectionComplexity, ConflictType, Vec) { use ConflictType::*; let roads: Vec<_> = streets .roads_per_intersection(*intersection_id) @@ -47,22 +46,6 @@ fn guess_complexity( return (Terminus, Uncontested, Vec::new()); } - // A Connection is characterised by exactly two connected roads. - if roads.len() == 2 { - let mut movements = Vec::new(); - if can_drive_out_of(roads[0], *intersection_id) - && can_drive_into(roads[1], *intersection_id) - { - movements.push((0, 1)); - } - if can_drive_out_of(roads[1], *intersection_id) - && can_drive_into(roads[0], *intersection_id) - { - movements.push((1, 0)); - } - return (Connection, Uncontested, movements); - } - // Calculate all the possible movements, (except U-turns, for now). let mut connections = Vec::new(); // Consider all pairs of roads, from s to d. Identify them using their index in the list - which @@ -114,9 +97,21 @@ fn guess_complexity( } } + let full_connections = connections + .iter() + .map(|(s, d)| (roads[*s].id, roads[*d].id)) + .collect(); match worst_conflict { - Cross => (Crossing, Cross, connections), - c => (MultiConnection, c, connections), + Cross => (Crossing, Cross, full_connections), + c => ( + if roads.len() == 2 { + Connection + } else { + MultiConnection + }, + c, + full_connections, + ), } } diff --git a/osm2streets/src/types.rs b/osm2streets/src/types.rs index 66141a25..1d2c21cf 100644 --- a/osm2streets/src/types.rs +++ b/osm2streets/src/types.rs @@ -172,6 +172,5 @@ pub enum ControlType { Construction, // Are these treated as "closed"? } -/// The path that some lanes of traffic can take through an intersection. -/// This representation is the (from, to) roads, identified by their index in the Intersection. -pub type IndexedMovement = (usize, usize); +/// The path that some group of adjacent lanes of traffic can take through an intersection. +pub type Movement = (OriginalRoad, OriginalRoad); From 427aaea1b3e57f8c2c68805f9ab39d2b40af5591 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Mon, 14 Nov 2022 16:56:17 +0800 Subject: [PATCH 20/27] Recalculate intersection movements and complexity after inserting or removing a road --- osm2streets/src/lib.rs | 32 ++++++++++++++----- .../src/transform/classify_intersections.rs | 2 +- tests/src/arizona_highways/geometry.json | 4 +-- tests/src/aurora_sausage_link/geometry.json | 2 +- tests/src/borough_sausage_links/geometry.json | 24 +++++++------- .../bristol_contraflow_cycleway/geometry.json | 2 +- tests/src/bristol_sausage_links/geometry.json | 6 ++-- tests/src/i5_exit_ramp/geometry.json | 10 +++--- tests/src/kingsway_junction/geometry.json | 4 +-- tests/src/leeds_cycleway/geometry.json | 20 ++++++------ .../northgate_dual_carriageway/geometry.json | 24 +++++++------- tests/src/roosevelt_cycletrack/geometry.json | 24 +++++++------- tests/src/seattle_slip_lane/geometry.json | 6 ++-- tests/src/seattle_triangle/geometry.json | 6 ++-- tests/src/st_georges_cycletrack/geometry.json | 2 +- tests/src/tempe_light_rail/geometry.json | 4 +-- tests/src/tempe_split/geometry.json | 8 ++--- 17 files changed, 98 insertions(+), 82 deletions(-) diff --git a/osm2streets/src/lib.rs b/osm2streets/src/lib.rs index 2d3bc04f..74c265c7 100644 --- a/osm2streets/src/lib.rs +++ b/osm2streets/src/lib.rs @@ -85,21 +85,37 @@ impl StreetNetwork { assert_eq!(id, road.id); self.roads.insert(id, road); for i in [id.i1, id.i2] { - { - let intersection = self.intersections.get_mut(&i).unwrap(); - intersection.roads.push(id); - intersection.movements = Vec::new(); // TODO restore this - } + self.intersections.get_mut(&i).unwrap().roads.push(id); self.sort_roads(i); + // Recalculate movements and complexity. + let (complexity, conflict_level, movements) = + crate::transform::classify_intersections::guess_complexity(self, &i); + let int = self.intersections.get_mut(&i).unwrap(); + if int.complexity != IntersectionComplexity::MapEdge { + int.complexity = complexity; + } + int.conflict_level = conflict_level; + int.movements = movements; } } pub fn remove_road(&mut self, id: &OriginalRoad) -> Road { for i in [id.i1, id.i2] { + self.intersections + .get_mut(&i) + .unwrap() + .roads + .retain(|r| r != id); // Since the roads are already sorted, removing doesn't break the sort. - let intersection = self.intersections.get_mut(&i).unwrap(); - intersection.roads.retain(|r| r != id); - intersection.movements = Vec::new(); // TODO restore this + // Recalculate movements and complexity. + let (complexity, conflict_level, movements) = + crate::transform::classify_intersections::guess_complexity(self, &i); + let int = self.intersections.get_mut(&i).unwrap(); + if int.complexity != IntersectionComplexity::MapEdge { + int.complexity = complexity; + } + int.conflict_level = conflict_level; + int.movements = movements; } self.roads.remove(id).unwrap() } diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index b49d19a6..41a12c3c 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -29,7 +29,7 @@ pub fn classify_intersections(streets: &mut StreetNetwork) { /// Guesses the complexity of the intersection based on the connecting roads and their lanes. /// /// The existing complexity field is ignored, so be careful how you use the guessed value. -fn guess_complexity( +pub fn guess_complexity( streets: &StreetNetwork, intersection_id: &NodeID, ) -> (IntersectionComplexity, ConflictType, Vec) { diff --git a/tests/src/arizona_highways/geometry.json b/tests/src/arizona_highways/geometry.json index 27131616..f4132b27 100644 --- a/tests/src/arizona_highways/geometry.json +++ b/tests/src/arizona_highways/geometry.json @@ -5124,7 +5124,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Merge", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1950975923", "osm_node_id": 1950975923, @@ -6919,7 +6919,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5572469746", "osm_node_id": 5572469746, diff --git a/tests/src/aurora_sausage_link/geometry.json b/tests/src/aurora_sausage_link/geometry.json index c3fdc8f8..4dadc5b5 100644 --- a/tests/src/aurora_sausage_link/geometry.json +++ b/tests/src/aurora_sausage_link/geometry.json @@ -692,7 +692,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7404463397", "osm_node_id": 7404463397, diff --git a/tests/src/borough_sausage_links/geometry.json b/tests/src/borough_sausage_links/geometry.json index 8acc35cd..7b886994 100644 --- a/tests/src/borough_sausage_links/geometry.json +++ b/tests/src/borough_sausage_links/geometry.json @@ -2973,7 +2973,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25497966", "osm_node_id": 25497966, @@ -3047,7 +3047,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/25500014", "osm_node_id": 25500014, @@ -3125,7 +3125,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/31349035", "osm_node_id": 31349035, @@ -3404,7 +3404,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/352928523", "osm_node_id": 352928523, @@ -3927,7 +3927,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2217388387", "osm_node_id": 2217388387, @@ -4422,7 +4422,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5220719428", "osm_node_id": 5220719428, @@ -4537,7 +4537,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Merge", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5220719448", "osm_node_id": 5220719448, @@ -4684,7 +4684,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5220719463", "osm_node_id": 5220719463, @@ -4869,7 +4869,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Merge", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5220776401", "osm_node_id": 5220776401, @@ -4906,7 +4906,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5220776402", "osm_node_id": 5220776402, @@ -4943,7 +4943,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Merge", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5220776403", "osm_node_id": 5220776403, @@ -5123,7 +5123,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/5220776411", "osm_node_id": 5220776411, diff --git a/tests/src/bristol_contraflow_cycleway/geometry.json b/tests/src/bristol_contraflow_cycleway/geometry.json index 89d76a96..341be811 100644 --- a/tests/src/bristol_contraflow_cycleway/geometry.json +++ b/tests/src/bristol_contraflow_cycleway/geometry.json @@ -2477,7 +2477,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8411977307", "osm_node_id": 8411977307, diff --git a/tests/src/bristol_sausage_links/geometry.json b/tests/src/bristol_sausage_links/geometry.json index 2d01ea0c..3b6cfe15 100644 --- a/tests/src/bristol_sausage_links/geometry.json +++ b/tests/src/bristol_sausage_links/geometry.json @@ -1003,7 +1003,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Merge", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/1316486886", "osm_node_id": 1316486886, @@ -1294,7 +1294,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Merge", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/4740760678", "osm_node_id": 4740760678, @@ -1331,7 +1331,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Merge", + "complexity": "Connection", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/4740760680", "osm_node_id": 4740760680, diff --git a/tests/src/i5_exit_ramp/geometry.json b/tests/src/i5_exit_ramp/geometry.json index 1fe3009b..46a35869 100644 --- a/tests/src/i5_exit_ramp/geometry.json +++ b/tests/src/i5_exit_ramp/geometry.json @@ -2504,7 +2504,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/29545445", "osm_node_id": 29545445, @@ -3377,7 +3377,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/978142408", "osm_node_id": 978142408, @@ -3689,7 +3689,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3588212119", "osm_node_id": 3588212119, @@ -3910,7 +3910,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4789275355", "osm_node_id": 4789275355, @@ -4267,7 +4267,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8041342861", "osm_node_id": 8041342861, diff --git a/tests/src/kingsway_junction/geometry.json b/tests/src/kingsway_junction/geometry.json index 31f17410..c881c733 100644 --- a/tests/src/kingsway_junction/geometry.json +++ b/tests/src/kingsway_junction/geometry.json @@ -8271,7 +8271,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/745988141", "osm_node_id": 745988141, @@ -11022,7 +11022,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5401617887", "osm_node_id": 5401617887, diff --git a/tests/src/leeds_cycleway/geometry.json b/tests/src/leeds_cycleway/geometry.json index 17515bb5..fd0bff89 100644 --- a/tests/src/leeds_cycleway/geometry.json +++ b/tests/src/leeds_cycleway/geometry.json @@ -39068,7 +39068,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Crossing", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1606959629", "osm_node_id": 1606959629, @@ -42716,7 +42716,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4457813299", "osm_node_id": 4457813299, @@ -42790,7 +42790,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4457813308", "osm_node_id": 4457813308, @@ -47463,7 +47463,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6146456169", "osm_node_id": 6146456169, @@ -51247,7 +51247,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7105816299", "osm_node_id": 7105816299, @@ -52824,7 +52824,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/7261942280", "osm_node_id": 7261942280, @@ -55416,7 +55416,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Merge", + "complexity": "Connection", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8481692879", "osm_node_id": 8481692879, @@ -56336,7 +56336,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9316506539", "osm_node_id": 9316506539, @@ -56921,7 +56921,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9319419267", "osm_node_id": 9319419267, @@ -57396,7 +57396,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9740274265", "osm_node_id": 9740274265, diff --git a/tests/src/northgate_dual_carriageway/geometry.json b/tests/src/northgate_dual_carriageway/geometry.json index 4a86a87b..1e0a880b 100644 --- a/tests/src/northgate_dual_carriageway/geometry.json +++ b/tests/src/northgate_dual_carriageway/geometry.json @@ -7019,7 +7019,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/53100766", "osm_node_id": 53100766, @@ -7861,7 +7861,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/476715048", "osm_node_id": 476715048, @@ -8430,7 +8430,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1905102152", "osm_node_id": 1905102152, @@ -8471,7 +8471,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1905102153", "osm_node_id": 1905102153, @@ -8598,7 +8598,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "MultiConnection Merge", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/1968559770", "osm_node_id": 1968559770, @@ -9105,7 +9105,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/3409784125", "osm_node_id": 3409784125, @@ -9371,7 +9371,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4022851877", "osm_node_id": 4022851877, @@ -9955,7 +9955,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4787708489", "osm_node_id": 4787708489, @@ -9992,7 +9992,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4787774424", "osm_node_id": 4787774424, @@ -10029,7 +10029,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4787774425", "osm_node_id": 4787774425, @@ -10386,7 +10386,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5420650496", "osm_node_id": 5420650496, @@ -11659,7 +11659,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/9188152680", "osm_node_id": 9188152680, diff --git a/tests/src/roosevelt_cycletrack/geometry.json b/tests/src/roosevelt_cycletrack/geometry.json index f1327f33..b2d889a2 100644 --- a/tests/src/roosevelt_cycletrack/geometry.json +++ b/tests/src/roosevelt_cycletrack/geometry.json @@ -6166,7 +6166,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739623", "osm_node_id": 4384739623, @@ -6211,7 +6211,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739624", "osm_node_id": 4384739624, @@ -6260,7 +6260,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739627", "osm_node_id": 4384739627, @@ -6305,7 +6305,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739630", "osm_node_id": 4384739630, @@ -6358,7 +6358,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739631", "osm_node_id": 4384739631, @@ -6403,7 +6403,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739632", "osm_node_id": 4384739632, @@ -6456,7 +6456,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4384739635", "osm_node_id": 4384739635, @@ -6493,7 +6493,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4531063551", "osm_node_id": 4531063551, @@ -7010,7 +7010,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5443485497", "osm_node_id": 5443485497, @@ -7255,7 +7255,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5452243878", "osm_node_id": 5452243878, @@ -7349,7 +7349,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5674754357", "osm_node_id": 5674754357, @@ -8188,7 +8188,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8428577667", "osm_node_id": 8428577667, diff --git a/tests/src/seattle_slip_lane/geometry.json b/tests/src/seattle_slip_lane/geometry.json index 3e9eefa1..5793366f 100644 --- a/tests/src/seattle_slip_lane/geometry.json +++ b/tests/src/seattle_slip_lane/geometry.json @@ -2168,7 +2168,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4531063551", "osm_node_id": 4531063551, @@ -2352,7 +2352,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5674754357", "osm_node_id": 5674754357, @@ -2814,7 +2814,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8428577667", "osm_node_id": 8428577667, diff --git a/tests/src/seattle_triangle/geometry.json b/tests/src/seattle_triangle/geometry.json index e2e3021f..88285298 100644 --- a/tests/src/seattle_triangle/geometry.json +++ b/tests/src/seattle_triangle/geometry.json @@ -2123,7 +2123,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8780140700", "osm_node_id": 8780140700, @@ -2168,7 +2168,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8780140703", "osm_node_id": 8780140703, @@ -2225,7 +2225,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/8780140709", "osm_node_id": 8780140709, diff --git a/tests/src/st_georges_cycletrack/geometry.json b/tests/src/st_georges_cycletrack/geometry.json index 5fb13fc7..a4ccac2a 100644 --- a/tests/src/st_georges_cycletrack/geometry.json +++ b/tests/src/st_georges_cycletrack/geometry.json @@ -7927,7 +7927,7 @@ "type": "Polygon" }, "properties": { - "complexity": "MultiConnection Uncontested", + "complexity": "MultiConnection Merge", "control": "TrafficSignal", "osm_link": "https://www.openstreetmap.org/node/2059768444", "osm_node_id": 2059768444, diff --git a/tests/src/tempe_light_rail/geometry.json b/tests/src/tempe_light_rail/geometry.json index 32b77168..743419aa 100644 --- a/tests/src/tempe_light_rail/geometry.json +++ b/tests/src/tempe_light_rail/geometry.json @@ -1103,7 +1103,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4347879967", "osm_node_id": 4347879967, @@ -1177,7 +1177,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4347879970", "osm_node_id": 4347879970, diff --git a/tests/src/tempe_split/geometry.json b/tests/src/tempe_split/geometry.json index f6f9af4a..4923fcfd 100644 --- a/tests/src/tempe_split/geometry.json +++ b/tests/src/tempe_split/geometry.json @@ -1834,7 +1834,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4346605155", "osm_node_id": 4346605155, @@ -1875,7 +1875,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/4346605156", "osm_node_id": 4346605156, @@ -2182,7 +2182,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Crossing", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/5717678154", "osm_node_id": 5717678154, @@ -2350,7 +2350,7 @@ "type": "Polygon" }, "properties": { - "complexity": "Connection", + "complexity": "Terminus", "control": "StopSign", "osm_link": "https://www.openstreetmap.org/node/6672807665", "osm_node_id": 6672807665, From 479d636b4e88aade416c829d2fe1eac748e37d11 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Mon, 14 Nov 2022 17:03:19 +0800 Subject: [PATCH 21/27] cleanup use statements and old FIXME --- osm2streets/src/render.rs | 7 ++++--- osm2streets/src/transform/classify_intersections.rs | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/osm2streets/src/render.rs b/osm2streets/src/render.rs index 0130fbff..fef1d6a0 100644 --- a/osm2streets/src/render.rs +++ b/osm2streets/src/render.rs @@ -6,8 +6,9 @@ use std::path::Path; use anyhow::Result; use geom::{ArrowCap, Distance, Line, PolyLine}; -use crate::IntersectionComplexity::MultiConnection; -use crate::{DebugStreets, Direction, DrivingSide, LaneType, StreetNetwork}; +use crate::{ + DebugStreets, Direction, DrivingSide, IntersectionComplexity, LaneType, StreetNetwork, +}; impl StreetNetwork { /// Saves the plain GeoJSON rendering to a file. @@ -47,7 +48,7 @@ impl StreetNetwork { ("osm_node_id", id.0.into()), ( "complexity", - if intersection.complexity == MultiConnection { + if intersection.complexity == IntersectionComplexity::MultiConnection { format!( "{:?} {:?}", intersection.complexity, intersection.conflict_level diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 41a12c3c..347cb0d7 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -76,7 +76,6 @@ pub fn guess_complexity( // Check for any turn restrictions. if turn_is_allowed(src_road, dst_road) { - //FIXME this is no longer accurate because s and d are indexes into a filtered list: connections.push((s, d)); } } From 19ab9384990a161b36707e83ee5ff9f74884b615 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Tue, 15 Nov 2022 17:18:58 +0800 Subject: [PATCH 22/27] Introduce StreetNetwork::recalculate_movements(self, i) to hold repeated logic and document it --- osm2streets/src/lib.rs | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/osm2streets/src/lib.rs b/osm2streets/src/lib.rs index 74c265c7..d77d34f3 100644 --- a/osm2streets/src/lib.rs +++ b/osm2streets/src/lib.rs @@ -88,14 +88,7 @@ impl StreetNetwork { self.intersections.get_mut(&i).unwrap().roads.push(id); self.sort_roads(i); // Recalculate movements and complexity. - let (complexity, conflict_level, movements) = - crate::transform::classify_intersections::guess_complexity(self, &i); - let int = self.intersections.get_mut(&i).unwrap(); - if int.complexity != IntersectionComplexity::MapEdge { - int.complexity = complexity; - } - int.conflict_level = conflict_level; - int.movements = movements; + self.recalculate_movements(i); } } @@ -107,15 +100,7 @@ impl StreetNetwork { .roads .retain(|r| r != id); // Since the roads are already sorted, removing doesn't break the sort. - // Recalculate movements and complexity. - let (complexity, conflict_level, movements) = - crate::transform::classify_intersections::guess_complexity(self, &i); - let int = self.intersections.get_mut(&i).unwrap(); - if int.complexity != IntersectionComplexity::MapEdge { - int.complexity = complexity; - } - int.conflict_level = conflict_level; - int.movements = movements; + self.recalculate_movements(i); } self.roads.remove(id).unwrap() } @@ -276,6 +261,20 @@ impl StreetNetwork { intersection.roads = road_centers.into_iter().map(|(r, _, _)| r).collect(); } + + /// Recalculate movements, complexity, and conflict_level of an intersection. + fn recalculate_movements(&mut self, i: osm::NodeID) { + let (complexity, conflict_level, movements) = + crate::transform::classify_intersections::guess_complexity(self, &i); + let int = self.intersections.get_mut(&i).unwrap(); + int.movements = movements; + int.conflict_level = conflict_level; + // The fact that an intersection represents a road leaving the map bounds is stored in the + // complexity field but guess_complexity ignores that. Make sure we don't overwrite it. + if int.complexity != IntersectionComplexity::MapEdge { + int.complexity = complexity; + } + } } // Mutations and supporting queries From 34eecc24d03264dcf85008a24be35d6a294f979e Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Tue, 15 Nov 2022 17:19:24 +0800 Subject: [PATCH 23/27] Document IntersectionComplexity and note its awkwardness --- osm2streets/src/types.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/osm2streets/src/types.rs b/osm2streets/src/types.rs index 1d2c21cf..fee6e143 100644 --- a/osm2streets/src/types.rs +++ b/osm2streets/src/types.rs @@ -120,6 +120,12 @@ pub enum ConflictType { Cross, } +/// What kind of feature an Intersection actually represents. Any connection between roads in the +/// network graph is represented by an Intersection, but many of them are not "intersections" in +/// the traditional sense. +/// +/// This type might be better named IntersectionType and the distinction between MultiConnection, +/// Merge and Crossing is of dubious value and will probably change in the future. #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)] pub enum IntersectionComplexity { /// The edge of the data that we have. From 1bca406f7f7640eb7661d4c4f2650fc3ebb14017 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Tue, 15 Nov 2022 17:33:10 +0800 Subject: [PATCH 24/27] Comment arrow offset variable --- osm2streets/src/render.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/osm2streets/src/render.rs b/osm2streets/src/render.rs index fef1d6a0..068fa768 100644 --- a/osm2streets/src/render.rs +++ b/osm2streets/src/render.rs @@ -254,7 +254,10 @@ impl StreetNetwork { /// For an intersection, show all the movements. pub fn debug_movements_geojson(&self) -> Result { - let arrow_shift_dist = if self.config.driving_side == DrivingSide::Right { + // Each movement is represented as an arrow from the end of one road to the beginning of + // another. To stop arrows overlapping, arrows to/from bidirectional roads are offset from + // the center to the appropriate driving side. + let arrow_fwd_offset_dist = if self.config.driving_side == DrivingSide::Right { Distance::meters(-1.3) } else { Distance::meters(1.3) @@ -282,10 +285,10 @@ impl StreetNetwork { } else { ( first_road_segment - .shift_either_direction(arrow_shift_dist) + .shift_either_direction(arrow_fwd_offset_dist) .pt1(), first_road_segment - .shift_either_direction(-arrow_shift_dist) + .shift_either_direction(-arrow_fwd_offset_dist) .pt1(), ) }, From beca66217893a7bb90e1f58e7c86622ec1497f86 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Tue, 15 Nov 2022 18:06:39 +0800 Subject: [PATCH 25/27] Don't bother calculating all conflicts, and remove unneeded assertion in comment --- .../src/transform/classify_intersections.rs | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 347cb0d7..02e22b61 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -81,27 +81,31 @@ pub fn guess_complexity( } } - // Calculate all the collisions. - let mut conflicts = BTreeMap::new(); + // Calculate the highest level of conflict between movements. let mut worst_conflict = Uncontested; - // Compare every pair of connections. Use the order of the roads around the intersection to - // detect if they diverge, merge, or cross. - // assert!(connections is sorted) so small_con large_con makes sense. + // Compare every unordered pair of connections. Use the order of the roads around the + // intersection to detect if they diverge, merge, or cross. let mut each_con = connections.iter(); - while let Some(small_con) = each_con.next() { - for large_con in each_con.clone() { - let conflict = calc_conflict(small_con, large_con, streets.config.driving_side); - worst_conflict = max(worst_conflict, conflict); - conflicts.insert((small_con, large_con), conflict); + while let Some(con_a) = each_con.next() { + for con_b in each_con.clone() { + worst_conflict = max( + worst_conflict, + calc_conflict(con_a, con_b, streets.config.driving_side), + ); + + // Stop looking if we've already found the worst. + if worst_conflict == ConflictType::Cross { + break; + } } } - let full_connections = connections + let movements = connections .iter() .map(|(s, d)| (roads[*s].id, roads[*d].id)) .collect(); match worst_conflict { - Cross => (Crossing, Cross, full_connections), + Cross => (Crossing, Cross, movements), c => ( if roads.len() == 2 { Connection @@ -109,7 +113,7 @@ pub fn guess_complexity( MultiConnection }, c, - full_connections, + movements, ), } } From 05def900b1f2c20a1a2f8fab2ee027488dcb3322 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Tue, 15 Nov 2022 18:11:14 +0800 Subject: [PATCH 26/27] Fix comment typos --- osm2streets/src/transform/classify_intersections.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index 02e22b61..d158f16f 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -165,7 +165,7 @@ fn turn_is_allowed(src: &Road, dst: &Road) -> bool { fn calc_conflict(a: &(usize, usize), b: &(usize, usize), side: DrivingSide) -> ConflictType { use ConflictType::*; - // If the traffic starts of ends at the same place in the same direction... + // If the traffic starts and ends at the same place in the same direction... if a.0 == b.0 && a.1 == b.1 { return Uncontested; } @@ -179,8 +179,8 @@ fn calc_conflict(a: &(usize, usize), b: &(usize, usize), side: DrivingSide) -> C // The intersection has a boundary that we have labelled 0 to n-1 in clockwise order (from an // arbitrary point), like a string laying in a circle. If we represent `a` as an arc from one // point on the string to another, then there is a section of the string between the two points, - // connecting them the two points and two ends of string "on the outside". A second arc, `b`, - // crosses `a` if and only if `b` has one end between the points and one end outside. + // connecting them and two ends of string "on the outside". A second arc, `b`, crosses `a` if + // and only if `b` has one end between the points and one end outside. // ______ // / | \ // | |a n From ffe0e9db1a8502a4738f88ded119db3c62afd577 Mon Sep 17 00:00:00 2001 From: Ben Ritter Date: Tue, 15 Nov 2022 18:11:45 +0800 Subject: [PATCH 27/27] rust style improvements --- osm2streets/src/render.rs | 2 +- osm2streets/src/transform/classify_intersections.rs | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/osm2streets/src/render.rs b/osm2streets/src/render.rs index 068fa768..de253dd7 100644 --- a/osm2streets/src/render.rs +++ b/osm2streets/src/render.rs @@ -295,7 +295,7 @@ impl StreetNetwork { ) }) .collect(); - for (a, b) in intersection.movements.iter() { + for (a, b) in &intersection.movements { if a != b { if let Ok(line) = Line::new(road_points[a].0, road_points[b].1) { pairs.push(( diff --git a/osm2streets/src/transform/classify_intersections.rs b/osm2streets/src/transform/classify_intersections.rs index d158f16f..c679507e 100644 --- a/osm2streets/src/transform/classify_intersections.rs +++ b/osm2streets/src/transform/classify_intersections.rs @@ -1,19 +1,19 @@ use crate::osm::NodeID; use crate::types::Movement; use crate::Direction; -use crate::IntersectionComplexity::*; use crate::{ ConflictType, DrivingSide, IntersectionComplexity, RestrictionType, Road, StreetNetwork, }; use std::cmp::{max, min}; -use std::collections::BTreeMap; +use ConflictType::*; +use IntersectionComplexity::*; /// Determines the initial complexity of all intersections. Intersections marked "Crossing" are /// considered "unclassified" and will be updated with a guess, others will be left unchanged. pub fn classify_intersections(streets: &mut StreetNetwork) { let mut changes: Vec<_> = Vec::new(); for (id, inter) in &streets.intersections { - if let Crossing = inter.complexity { + if inter.complexity == Crossing { changes.push((*id, guess_complexity(streets, id))); } } @@ -33,7 +33,6 @@ pub fn guess_complexity( streets: &StreetNetwork, intersection_id: &NodeID, ) -> (IntersectionComplexity, ConflictType, Vec) { - use ConflictType::*; let roads: Vec<_> = streets .roads_per_intersection(*intersection_id) .iter()