diff --git a/docs/how_it_works.md b/docs/how_it_works.md index 9caead9f..5f5418b9 100644 --- a/docs/how_it_works.md +++ b/docs/how_it_works.md @@ -49,6 +49,11 @@ For each intersection, this calculates vehicle movements (at the granularity of It first calculates trimmed intersection geometry for the two intersections. On each connected road (besides the short one being collapsed, of course), we store the trimming distance in `trim_roads_for_merging`, so that later the intersection geometry algorithm can follow a special case for the single merged intersection. +### update_geometry + +This follows [this algorithm](https://a-b-street.github.io/docs/tech/map/geometry/index.html) (outdated!). Road center-lines get "trimmed" back from the intersection, and the intersection gets a polygon. + +This process trims every road on both ends. Sometimes the trims overlap and the road disappears entirely. In that case, we mark the road as `internal_junction_road` and remove it entirely with a later pass of `CollapseShortRoads`. ## Transformations @@ -99,9 +104,3 @@ A "simple sausage link" is a dual carriageway that split very briefly and then r ### MergeDualCarriageways (experimental) TODO. Explain branches and bridges. - -### GenerateIntersectionGeometry - -Along with `ClassifyIntersections`, this is the most important transformation (and maybe should be expressed differently). For every intersection, it runs through [this algorithm](https://a-b-street.github.io/docs/tech/map/geometry/index.html). Road center-lines get "trimmed" back from the intersection, and the intersection gets a polygon. - -This process trims every road on both ends. Sometimes the trims overlap and the road disappears entirely. In that case, we mark the road as `internal_junction_road` and remove it entirely with a later pass of `CollapseShortRoads`. diff --git a/osm2streets-js/src/lib.rs b/osm2streets-js/src/lib.rs index 621a7e49..b1e1c5a4 100644 --- a/osm2streets-js/src/lib.rs +++ b/osm2streets-js/src/lib.rs @@ -1,4 +1,4 @@ -use std::collections::BTreeMap; +use std::collections::{BTreeMap, BTreeSet}; use abstutil::{Tags, Timer}; use geom::{Distance, LonLat, PolyLine, Polygon}; @@ -70,24 +70,9 @@ impl JsStreetNetwork { transformations.push(Transformation::SnapCycleways); transformations.push(Transformation::TrimDeadendCycleways); transformations.push(Transformation::CollapseDegenerateIntersections); - // TODO Indeed it'd be much nicer to recalculate this as the above transformations - // modify things - transformations.push(Transformation::GenerateIntersectionGeometry); } if input.debug_each_step { street_network.apply_transformations_stepwise_debugging(transformations, &mut timer); - - // For all but the last step, generate intersection geometry, so these - // intermediate states can be rendered. - // TODO Revisit this -- rendering should use untrimmed geometry, or an initial guess of - // trimmed geometry. - let mut steps = street_network.debug_steps.borrow_mut(); - for i in 0..steps.len() - 1 { - steps[i].streets.apply_transformations( - vec![Transformation::GenerateIntersectionGeometry], - &mut timer, - ); - } } else { street_network.apply_transformations(transformations, &mut timer); } @@ -203,22 +188,23 @@ impl JsStreetNetwork { abstutil::to_json(&polygon.to_geojson(Some(&self.inner.gps_bounds))) } - /// Modifies all affected roads and only reruns `Transformation::GenerateIntersectionGeometry`. + /// Modifies all affected roads #[wasm_bindgen(js_name = overwriteOsmTagsForWay)] pub fn overwrite_osm_tags_for_way(&mut self, id: i64, tags: String) { let id = osm::WayID(id); let tags: Tags = abstutil::from_json(tags.as_bytes()).unwrap(); + let mut intersections = BTreeSet::new(); for road in self.inner.roads.values_mut() { if road.from_osm_way(id) { // TODO This could panic, for example if the user removes the highway tag road.lane_specs_ltr = osm2streets::get_lane_specs_ltr(&tags, &self.inner.config); + intersections.extend(road.endpoints()); } } - self.inner.apply_transformations( - vec![Transformation::GenerateIntersectionGeometry], - &mut Timer::throwaway(), - ); + for i in intersections { + self.inner.update_geometry(i); + } self.ways.get_mut(&id).unwrap().tags = tags; } diff --git a/osm2streets/src/geometry/mod.rs b/osm2streets/src/geometry/mod.rs index 89196aa4..cd2bae1f 100644 --- a/osm2streets/src/geometry/mod.rs +++ b/osm2streets/src/geometry/mod.rs @@ -109,8 +109,6 @@ pub fn intersection_polygon( roads.insert(r.id, r); } - assert!(!roads.is_empty()); - let results = Results { intersection_id, intersection_polygon: Polygon::dummy(), @@ -119,6 +117,14 @@ pub fn intersection_polygon( trim_starts: BTreeMap::new(), trim_ends: BTreeMap::new(), }; + + // TODO Hack! Transformation::CollapseDegenerateIntersections triggers this, because we try to + // update_geometry in the middle. We need to track changes and defer the recalculation. + if roads.is_empty() { + error!("Hack! intersection_polygon({intersection_id}) called with no roads"); + return Ok(results); + } + let mut untrimmed_roads = roads.clone(); let mut results = if roads.len() == 1 { diff --git a/osm2streets/src/intersection.rs b/osm2streets/src/intersection.rs index d81a8394..8598eb49 100644 --- a/osm2streets/src/intersection.rs +++ b/osm2streets/src/intersection.rs @@ -14,7 +14,7 @@ pub struct Intersection { /// intersection may have multiple OSM nodes (when the intersection is consolidated). pub osm_ids: Vec, - /// This will be a placeholder until `Transformation::GenerateIntersectionGeometry` runs. + /// This will be a placeholder circle until `update_geometry` runs or if errors occur. /// /// TODO Consistently make this clockwise. pub polygon: Polygon, diff --git a/osm2streets/src/lib.rs b/osm2streets/src/lib.rs index 6bf057ba..04597688 100644 --- a/osm2streets/src/lib.rs +++ b/osm2streets/src/lib.rs @@ -99,7 +99,7 @@ impl StreetNetwork { for i in endpts { self.intersections.get_mut(&i).unwrap().roads.push(id); self.sort_roads(i); - // Recalculate movements and complexity. + self.update_geometry(i); self.update_movements(i); } } @@ -112,6 +112,7 @@ impl StreetNetwork { .roads .retain(|r| *r != id); // Since the roads are already sorted, removing doesn't break the sort. + self.update_geometry(i); self.update_movements(i); } self.roads.remove(&id).unwrap() @@ -145,9 +146,7 @@ impl StreetNetwork { .collect() } - /// This calculates a road's `trimmed_center_line` early, before - /// `Transformation::GenerateIntersectionGeometry` has run. Use sparingly. - // TODO Remove and maintain trim_start/end instead + /// This calculates a road's trimmed `center_line` early. TODO Remove entirely... pub(crate) fn estimate_trimmed_geometry(&self, road_id: RoadID) -> Option { let orig_road = &self.roads[&road_id]; let untrimmed = orig_road.get_untrimmed_center_line(self.config.driving_side); diff --git a/osm2streets/src/operations/collapse_intersection.rs b/osm2streets/src/operations/collapse_intersection.rs index 516be470..86b580b5 100644 --- a/osm2streets/src/operations/collapse_intersection.rs +++ b/osm2streets/src/operations/collapse_intersection.rs @@ -29,6 +29,8 @@ impl StreetNetwork { // We could be more careful merging highway_type, layer, name, and other attributes, but in // practice, it doesn't matter for the short segments we're merging. + // TODO Here's an example where it'd be great to defer recalculating movements and + // geometry until insert_road() below. let mut keep_road = self.remove_road(keep_r); let destroy_road = self.remove_road(destroy_r); self.intersections.remove(&i).unwrap(); diff --git a/osm2streets/src/operations/collapse_short_road.rs b/osm2streets/src/operations/collapse_short_road.rs index e402bbb8..dafabd08 100644 --- a/osm2streets/src/operations/collapse_short_road.rs +++ b/osm2streets/src/operations/collapse_short_road.rs @@ -123,6 +123,7 @@ impl StreetNetwork { // We just connected a bunch of things to keep_i. Fix ordering and movements. self.sort_roads(keep_i); + self.update_geometry(keep_i); self.update_movements(keep_i); // TODO Fix up turn restrictions. Many cases: diff --git a/osm2streets/src/operations/update_geometry.rs b/osm2streets/src/operations/update_geometry.rs index 42d425be..58c6b5f6 100644 --- a/osm2streets/src/operations/update_geometry.rs +++ b/osm2streets/src/operations/update_geometry.rs @@ -35,9 +35,9 @@ impl StreetNetwork { // Don't trim lines back at all let road = &self.roads[&r]; let pt = if road.src_i == i.id { - road.center_line.first_pt() + road.reference_line.first_pt() } else { - road.center_line.last_pt() + road.reference_line.last_pt() }; self.intersections.get_mut(&id).unwrap().polygon = Circle::new(pt, Distance::meters(3.0)).to_polygon(); diff --git a/osm2streets/src/road.rs b/osm2streets/src/road.rs index ce52f6c7..c4aad6dd 100644 --- a/osm2streets/src/road.rs +++ b/osm2streets/src/road.rs @@ -39,10 +39,9 @@ pub struct Road { /// tag and might be nonsense for the first/last segment. pub reference_line: PolyLine, pub reference_line_placement: Placement, - /// The physical center of all the lanes, including sidewalks (at RoadPosition::FullWidthCenter). - /// This will differ from reference_line and modified by transformations, notably it will be - /// offset based on reference_line_placement and trimmed by - /// `Transformation::GenerateIntersectionGeometry`. + /// The physical center of all the lanes, including sidewalks (at + /// RoadPosition::FullWidthCenter). This will differ from `reference_line`, incorporating + /// `reference_line_placement`, `trim_start`, `trim_end`, etc. pub center_line: PolyLine, /// How much to trim from the start of `get_untrimmed_center_line`. Negative means to instead /// extend the first line. @@ -115,8 +114,8 @@ impl Road { result } - /// Calculates and sets the center_line from reference_line, reference_line_placement - /// (and TODO trim_start, trim_end). + /// Resets the center_line using reference_line and reference_line_placement. Does + /// not apply trim. pub fn update_center_line(&mut self, driving_side: DrivingSide) { self.center_line = self.get_untrimmed_center_line(driving_side); } @@ -391,9 +390,8 @@ impl Road { } } - /// Returns one PolyLine representing the center of each lane in this road. This must be called - /// after `Transformation::GenerateIntersectionGeometry` is run. The result also faces the same - /// direction as the road. + /// Returns one PolyLine representing the center of each lane in this road. The result also + /// faces the same direction as the road. pub(crate) fn get_lane_center_lines(&self) -> Vec { let total_width = self.total_width(); diff --git a/osm2streets/src/transform/intersection_geometry.rs b/osm2streets/src/transform/intersection_geometry.rs deleted file mode 100644 index b66a9d69..00000000 --- a/osm2streets/src/transform/intersection_geometry.rs +++ /dev/null @@ -1,16 +0,0 @@ -use abstutil::Timer; - -use crate::StreetNetwork; - -pub fn generate(streets: &mut StreetNetwork, timer: &mut Timer) { - timer.start_iter( - "find each intersection polygon", - streets.intersections.len(), - ); - - let ids = streets.intersections.keys().cloned().collect::>(); - for i in ids { - timer.next(); - streets.update_geometry(i); - } -} diff --git a/osm2streets/src/transform/mod.rs b/osm2streets/src/transform/mod.rs index 2984a0d4..81afa6c9 100644 --- a/osm2streets/src/transform/mod.rs +++ b/osm2streets/src/transform/mod.rs @@ -5,7 +5,6 @@ use crate::StreetNetwork; mod collapse_intersections; mod collapse_short_road; mod dual_carriageways; -mod intersection_geometry; mod remove_disconnected; mod sausage_links; mod separate_cycletracks; @@ -19,7 +18,6 @@ pub enum Transformation { CollapseDegenerateIntersections, CollapseSausageLinks, MergeDualCarriageways, - GenerateIntersectionGeometry, } impl Transformation { @@ -30,10 +28,8 @@ impl Transformation { Transformation::CollapseSausageLinks, Transformation::CollapseShortRoads, Transformation::CollapseDegenerateIntersections, - Transformation::GenerateIntersectionGeometry, // The above may discover more roads to collapse Transformation::CollapseShortRoads, - Transformation::GenerateIntersectionGeometry, ] } @@ -71,7 +67,6 @@ impl Transformation { Transformation::CollapseDegenerateIntersections => "collapse degenerate intersections", Transformation::CollapseSausageLinks => "collapse sausage links", Transformation::MergeDualCarriageways => "merge dual carriageways", - Transformation::GenerateIntersectionGeometry => "generate intersection geometry", } } @@ -99,9 +94,6 @@ impl Transformation { Transformation::MergeDualCarriageways => { dual_carriageways::merge(streets); } - Transformation::GenerateIntersectionGeometry => { - intersection_geometry::generate(streets, timer); - } } timer.stop(self.name()); } diff --git a/osm2streets/src/transform/sausage_links.rs b/osm2streets/src/transform/sausage_links.rs index 5f51d2a8..7afb5f47 100644 --- a/osm2streets/src/transform/sausage_links.rs +++ b/osm2streets/src/transform/sausage_links.rs @@ -153,6 +153,7 @@ fn fix(streets: &mut StreetNetwork, id1: RoadID, id2: RoadID) { road1.update_center_line(streets.config.driving_side); let intersections = road1.endpoints(); for i in intersections { + streets.update_geometry(i); streets.update_movements(i); } } diff --git a/streets_reader/src/split_ways.rs b/streets_reader/src/split_ways.rs index 4b8f8255..3ad1703d 100644 --- a/streets_reader/src/split_ways.rs +++ b/streets_reader/src/split_ways.rs @@ -220,13 +220,14 @@ pub fn split_up_roads( } timer.stop("match traffic signals to intersections"); - timer.start("calculate intersection movements"); + timer.start("calculate intersection geometry and movements"); let intersection_ids: Vec<_> = streets.intersections.keys().cloned().collect(); for i in intersection_ids { streets.sort_roads(i); + streets.update_geometry(i); streets.update_movements(i); } - timer.stop("calculate intersection movements"); + timer.stop("calculate intersection geometry and movements"); timer.stop("splitting up roads"); pt_to_road diff --git a/tests/src/arizona_highways/geometry.json b/tests/src/arizona_highways/geometry.json index d3a2d7d0..afaabaee 100644 --- a/tests/src/arizona_highways/geometry.json +++ b/tests/src/arizona_highways/geometry.json @@ -5329,248 +5329,248 @@ "coordinates": [ [ [ - -111.89208287198511, - 33.62996558526803 + -111.89208509802366, + 33.6299591002602 ], [ - -111.89208304911772, - 33.62996276499559 + -111.89208527515626, + 33.62995627998776 ], [ - -111.89208358051557, - 33.62995997619941 + -111.89208580655412, + 33.62995349119157 ], [ - -111.89208445753803, - 33.629957247657764 + -111.89208668357658, + 33.62995076264993 ], [ - -111.89208567370466, - 33.62995461174625 + -111.8920878997432, + 33.62994812673841 ], [ - -111.89208721281427, - 33.629952095444494 + -111.89208943885282, + 33.629945610436664 ], [ - -111.89208905974581, - 33.62994972663148 + -111.89209128578436, + 33.62994324162365 ], [ - -111.8920911950579, - 33.629947532286856 + -111.89209342109645, + 33.62994104727902 ], [ - -111.89209359282869, - 33.62994553579297 + -111.89209581886723, + 33.62993905078514 ], [ - -111.89209622821639, - 33.629943757834226 + -111.89209845425493, + 33.629937272826396 ], [ - -111.89209907313901, - 33.62994221999435 + -111.89210129917755, + 33.62993573498651 ], [ - -111.89210209519425, - 33.62994093846111 + -111.8921043212328, + 33.629934453453274 ], [ - -111.89210526089973, - 33.62993992582502 + -111.89210748693827, + 33.62993344081719 ], [ - -111.89210853785312, - 33.62993919557591 + -111.89211076389167, + 33.62993271056808 ], [ - -111.89211188717167, - 33.6299387531097 + -111.89211411321021, + 33.62993226810186 ], [ - -111.89211527429292, - 33.62993860562096 + -111.89211750033147, + 33.62993212061313 ], [ - -111.89211866141416, - 33.6299387531097 + -111.8921208874527, + 33.62993226810186 ], [ - -111.8921220107327, - 33.62993919557591 + -111.89212423677125, + 33.62993271056808 ], [ - -111.8921252876861, - 33.62993992582502 + -111.89212751372465, + 33.62993344081719 ], [ - -111.89212845339158, - 33.62994093846111 + -111.89213067943012, + 33.629934453453274 ], [ - -111.89213147544682, - 33.62994221999435 + -111.89213370148536, + 33.62993573498651 ], [ - -111.89213432036944, - 33.629943757834226 + -111.89213654640798, + 33.629937272826396 ], [ - -111.89213695575714, - 33.62994553579297 + -111.89213918179568, + 33.62993905078514 ], [ - -111.89213935352792, - 33.629947532286856 + -111.89214157956647, + 33.62994104727902 ], [ - -111.89214148884001, - 33.62994972663148 + -111.89214371487856, + 33.62994324162365 ], [ - -111.89214333577155, - 33.629952095444494 + -111.8921455618101, + 33.629945610436664 ], [ - -111.89214487488117, - 33.62995461174625 + -111.89214710091971, + 33.62994812673841 ], [ - -111.89214609104779, - 33.629957247657764 + -111.89214831708634, + 33.62995076264993 ], [ - -111.89214696807025, - 33.62995997619941 + -111.8921491941088, + 33.62995349119157 ], [ - -111.89214749946811, - 33.62996276499559 + -111.89214972550666, + 33.62995627998776 ], [ - -111.89214767660071, - 33.62996558526803 + -111.89214990263926, + 33.6299591002602 ], [ - -111.89214749946811, - 33.629968405540474 + -111.89214972550666, + 33.62996192053264 ], [ - -111.89214696807025, - 33.62997119433666 + -111.8921491941088, + 33.629964709328824 ], [ - -111.89214609104779, - 33.6299739228783 + -111.89214831708634, + 33.62996743787046 ], [ - -111.89214487488117, - 33.62997655878982 + -111.89214710091971, + 33.62997007378198 ], [ - -111.89214333577155, - 33.62997907509157 + -111.8921455618101, + 33.62997259008373 ], [ - -111.89214148884001, - 33.62998144390458 + -111.89214371487856, + 33.629974958896746 ], [ - -111.89213935352792, - 33.629983638249215 + -111.89214157956647, + 33.62997715324138 ], [ - -111.89213695575714, - 33.62998563474309 + -111.89213918179568, + 33.62997914973526 ], [ - -111.89213432036944, - 33.62998741270184 + -111.89213654640798, + 33.629980927694 ], [ - -111.89213147544682, - 33.62998895054172 + -111.89213370148536, + 33.629982465533885 ], [ - -111.89212845339158, - 33.62999023207495 + -111.89213067943012, + 33.62998374706712 ], [ - -111.8921252876861, - 33.62999124471104 + -111.89212751372465, + 33.629984759703206 ], [ - -111.8921220107327, - 33.629991974960156 + -111.89212423677125, + 33.62998548995232 ], [ - -111.89211866141416, - 33.629992417426365 + -111.8921208874527, + 33.629985932418535 ], [ - -111.89211527429292, - 33.629992564915106 + -111.89211750033147, + 33.62998607990727 ], [ - -111.89211188717167, - 33.629992417426365 + -111.89211411321021, + 33.629985932418535 ], [ - -111.89210853785312, - 33.629991974960156 + -111.89211076389167, + 33.62998548995232 ], [ - -111.89210526089973, - 33.62999124471104 + -111.89210748693827, + 33.629984759703206 ], [ - -111.89210209519425, - 33.62999023207495 + -111.8921043212328, + 33.62998374706712 ], [ - -111.89209907313901, - 33.62998895054172 + -111.89210129917755, + 33.629982465533885 ], [ - -111.89209622821639, - 33.62998741270184 + -111.89209845425493, + 33.629980927694 ], [ - -111.89209359282869, - 33.62998563474309 + -111.89209581886723, + 33.62997914973526 ], [ - -111.8920911950579, - 33.629983638249215 + -111.89209342109645, + 33.62997715324138 ], [ - -111.89208905974581, - 33.62998144390458 + -111.89209128578436, + 33.629974958896746 ], [ - -111.89208721281427, - 33.62997907509157 + -111.89208943885282, + 33.62997259008373 ], [ - -111.89208567370466, - 33.62997655878982 + -111.8920878997432, + 33.62997007378198 ], [ - -111.89208445753803, - 33.6299739228783 + -111.89208668357658, + 33.62996743787046 ], [ - -111.89208358051557, - 33.62997119433666 + -111.89208580655412, + 33.629964709328824 ], [ - -111.89208304911772, - 33.629968405540474 + -111.89208527515626, + 33.62996192053264 ], [ - -111.89208287198511, - 33.62996558526803 + -111.89208509802366, + 33.6299591002602 ] ] ], diff --git a/tests/src/borough_sausage_links/geometry.json b/tests/src/borough_sausage_links/geometry.json index c703b024..55067d5b 100644 --- a/tests/src/borough_sausage_links/geometry.json +++ b/tests/src/borough_sausage_links/geometry.json @@ -794,8 +794,12 @@ "type": "Polygon" }, "properties": { +<<<<<<< HEAD "dst_i": 22, "layer": 0, +======= + "dst_i": 19, +>>>>>>> Get rid of the transformation, and instead update geometry everywhere that's necessary. #136 "osm_way_ids": [ 211780341, 539540865 @@ -1243,6 +1247,7 @@ "coordinates": [ [ [ +<<<<<<< HEAD -0.09328985662431377, 51.50123626119595 ], @@ -1282,6 +1287,8 @@ "coordinates": [ [ [ +======= +>>>>>>> Get rid of the transformation, and instead update geometry everywhere that's necessary. #136 -0.09294306264761487, 51.50120000594694 ], @@ -3601,12 +3608,12 @@ "coordinates": [ [ [ - -0.09327868067335443, + -0.09327867922868652, 51.5012539607434 ], [ - -0.0932152510840549, - 51.501312772775556 + -0.0932152525287228, + 51.5013127745742 ], [ -0.09325497367293523, @@ -3625,15 +3632,15 @@ 51.50121034994342 ], [ - -0.09328985662431377, - 51.50123626119595 + -0.09319282839340856, + 51.501149830099635 ], [ - -0.09327868211802234, - 51.5012539607434 + -0.09333407501973308, + 51.501230301392035 ], [ - -0.09327868067335443, + -0.09327867922868652, 51.5012539607434 ] ] @@ -3641,25 +3648,26 @@ "type": "Polygon" }, "properties": { - "control": "Signed", + "control": "Signalled", "id": 19, "intersection_kind": "Intersection", "movements": [ "Road #65 -> Road #60", "Road #65 -> Road #19", - "Road #65 -> Road #32", + "Road #65 -> Road #20", "Road #60 -> Road #65", "Road #60 -> Road #19", - "Road #60 -> Road #32", + "Road #60 -> Road #20", "Road #19 -> Road #65", "Road #19 -> Road #60", - "Road #19 -> Road #32", - "Road #32 -> Road #65", - "Road #32 -> Road #60", - "Road #32 -> Road #19" + "Road #19 -> Road #20", + "Road #20 -> Road #65", + "Road #20 -> Road #60", + "Road #20 -> Road #19" ], "osm_node_ids": [ - 5220776408 + 5220776408, + 5220776403 ], "type": "intersection" }, @@ -3755,49 +3763,6 @@ }, "type": "Feature" }, - { - "geometry": { - "coordinates": [ - [ - [ - -0.09333407501973308, - 51.501230301392035 - ], - [ - -0.09330136918289639, - 51.50121802565286 - ], - [ - -0.09319546057834237, - 51.501192114400325 - ], - [ - -0.09319282839340856, - 51.501149830099635 - ], - [ - -0.09333407501973308, - 51.501230301392035 - ] - ] - ], - "type": "Polygon" - }, - "properties": { - "control": "Signalled", - "id": 22, - "intersection_kind": "Connection", - "movements": [ - "Road #32 -> Road #20", - "Road #20 -> Road #32" - ], - "osm_node_ids": [ - 5220776403 - ], - "type": "intersection" - }, - "type": "Feature" - }, { "geometry": { "coordinates": [ diff --git a/tests/src/borough_sausage_links/road_network.dot b/tests/src/borough_sausage_links/road_network.dot index e988c4a4..2916ff54 100644 --- a/tests/src/borough_sausage_links/road_network.dot +++ b/tests/src/borough_sausage_links/road_network.dot @@ -17,7 +17,7 @@ digraph { 15 [ label = "Slice" ] 16 [ label = "Slice" ] 17 [ label = "Slice" ] - 18 [ label = "Uncontrolled RoadIntersection" ] + 18 [ label = "Lights RoadIntersection" ] 19 [ label = "Slice" ] 20 [ label = "Slice" ] 21 [ label = "Slice" ] @@ -26,35 +26,34 @@ digraph { 24 [ label = "Slice" ] 25 [ label = "Slice" ] 26 [ label = "Slice" ] - 27 [ label = "Slice" ] + 27 [ label = "Merge" ] 28 [ label = "Merge" ] - 29 [ label = "Merge" ] - 30 [ label = "Lights RoadIntersection" ] + 29 [ label = "Lights RoadIntersection" ] + 30 [ label = "Slice" ] 31 [ label = "Slice" ] 32 [ label = "Slice" ] 33 [ label = "Slice" ] 34 [ label = "Slice" ] 35 [ label = "Slice" ] - 36 [ label = "Slice" ] + 36 [ label = "MapEdge" ] 37 [ label = "MapEdge" ] - 38 [ label = "MapEdge" ] - 39 [ label = "Merge" ] - 40 [ label = "Slice" ] - 41 [ label = "Uncontrolled RoadIntersection" ] + 38 [ label = "Merge" ] + 39 [ label = "Slice" ] + 40 [ label = "Uncontrolled RoadIntersection" ] + 41 [ label = "Slice" ] 42 [ label = "Slice" ] 43 [ label = "Slice" ] 44 [ label = "Slice" ] 45 [ label = "Slice" ] - 46 [ label = "Slice" ] - 47 [ label = "MapEdge" ] - 48 [ label = "Lights RoadIntersection" ] - 49 [ label = "Slice" ] - 50 [ label = "MapEdge" ] - 51 [ label = "Slice" ] + 46 [ label = "MapEdge" ] + 47 [ label = "Lights RoadIntersection" ] + 48 [ label = "Slice" ] + 49 [ label = "MapEdge" ] + 50 [ label = "Slice" ] 0 -> 1 [ label = "2 lanes" ] 1 -> 0 [ label = "2 lanes" ] - 2 -> 32 [ label = "1 lanes" ] - 32 -> 13 [ label = "1 lanes" ] + 2 -> 31 [ label = "1 lanes" ] + 31 -> 13 [ label = "1 lanes" ] 13 -> 3 [ label = "1 lanes" ] 1 -> 4 [ label = "5 lanes" ] 5 -> 12 [ label = "1 lanes" ] @@ -62,74 +61,72 @@ digraph { 10 -> 7 [ label = "1 lanes" ] 7 -> 6 [ label = "1 lanes" ] 7 -> 9 [ label = "1 lanes" ] - 9 -> 31 [ label = "1 lanes" ] - 31 -> 11 [ label = "1 lanes" ] + 9 -> 30 [ label = "1 lanes" ] + 30 -> 11 [ label = "1 lanes" ] 11 -> 8 [ label = "1 lanes" ] 9 -> 10 [ label = "1 lanes" ] 11 -> 12 [ label = "1 lanes" ] - 13 -> 31 [ label = "1 lanes" ] + 13 -> 30 [ label = "1 lanes" ] 14 -> 15 [ label = "2 lanes" ] 15 -> 14 [ label = "2 lanes" ] 16 -> 17 [ label = "2 lanes" ] 17 -> 16 [ label = "2 lanes" ] 18 -> 19 [ label = "1 lanes" ] 19 -> 18 [ label = "2 lanes" ] - 20 -> 21 [ label = "4 lanes" ] - 21 -> 20 [ label = "2 lanes" ] - 22 -> 23 [ label = "2 lanes" ] - 23 -> 22 [ label = "2 lanes" ] - 24 -> 25 [ label = "2 lanes" ] - 25 -> 24 [ label = "2 lanes" ] - 26 -> 39 [ label = "2 lanes" ] - 39 -> 17 [ label = "2 lanes" ] - 15 -> 27 [ label = "2 lanes" ] - 27 -> 15 [ label = "2 lanes" ] - 28 -> 16 [ label = "2 lanes" ] - 29 -> 30 [ label = "2 lanes" ] - 29 -> 28 [ label = "2 lanes" ] - 31 -> 32 [ label = "1 lanes" ] - 33 -> 34 [ label = "1 lanes" ] - 18 -> 21 [ label = "2 lanes" ] - 21 -> 18 [ label = "2 lanes" ] - 35 -> 33 [ label = "1 lanes" ] - 33 -> 36 [ label = "1 lanes" ] - 37 -> 2 [ label = "2 lanes" ] - 2 -> 37 [ label = "2 lanes" ] - 2 -> 51 [ label = "2 lanes" ] - 51 -> 2 [ label = "2 lanes" ] - 51 -> 22 [ label = "2 lanes" ] - 22 -> 51 [ label = "2 lanes" ] - 24 -> 41 [ label = "2 lanes" ] - 41 -> 24 [ label = "2 lanes" ] - 41 -> 38 [ label = "2 lanes" ] - 38 -> 41 [ label = "2 lanes" ] - 39 -> 40 [ label = "2 lanes" ] - 30 -> 19 [ label = "2 lanes" ] - 30 -> 28 [ label = "2 lanes" ] - 41 -> 42 [ label = "3 lanes" ] - 17 -> 40 [ label = "2 lanes" ] - 40 -> 26 [ label = "2 lanes" ] - 43 -> 44 [ label = "3 lanes" ] - 4 -> 45 [ label = "3 lanes" ] - 44 -> 1 [ label = "5 lanes" ] - 46 -> 40 [ label = "1 lanes" ] - 40 -> 33 [ label = "1 lanes" ] - 26 -> 47 [ label = "2 lanes" ] - 47 -> 26 [ label = "2 lanes" ] - 48 -> 25 [ label = "2 lanes" ] - 25 -> 48 [ label = "2 lanes" ] - 45 -> 39 [ label = "5 lanes" ] - 16 -> 48 [ label = "2 lanes" ] - 6 -> 49 [ label = "1 lanes" ] - 20 -> 50 [ label = "2 lanes" ] - 50 -> 20 [ label = "2 lanes" ] - 23 -> 18 [ label = "2 lanes" ] - 18 -> 23 [ label = "2 lanes" ] - 19 -> 29 [ label = "2 lanes" ] - 30 -> 48 [ label = "1 lanes" ] - 48 -> 30 [ label = "2 lanes" ] - 27 -> 18 [ label = "2 lanes" ] - 18 -> 27 [ label = "2 lanes" ] - 40 -> 51 [ label = "2 lanes" ] - 42 -> 43 [ label = "5 lanes" ] + 20 -> 18 [ label = "4 lanes" ] + 18 -> 20 [ label = "2 lanes" ] + 21 -> 22 [ label = "2 lanes" ] + 22 -> 21 [ label = "2 lanes" ] + 23 -> 24 [ label = "2 lanes" ] + 24 -> 23 [ label = "2 lanes" ] + 25 -> 38 [ label = "2 lanes" ] + 38 -> 17 [ label = "2 lanes" ] + 15 -> 26 [ label = "2 lanes" ] + 26 -> 15 [ label = "2 lanes" ] + 27 -> 16 [ label = "2 lanes" ] + 28 -> 29 [ label = "2 lanes" ] + 28 -> 27 [ label = "2 lanes" ] + 30 -> 31 [ label = "1 lanes" ] + 32 -> 33 [ label = "1 lanes" ] + 34 -> 32 [ label = "1 lanes" ] + 32 -> 35 [ label = "1 lanes" ] + 36 -> 2 [ label = "2 lanes" ] + 2 -> 36 [ label = "2 lanes" ] + 2 -> 50 [ label = "2 lanes" ] + 50 -> 2 [ label = "2 lanes" ] + 50 -> 21 [ label = "2 lanes" ] + 21 -> 50 [ label = "2 lanes" ] + 23 -> 40 [ label = "2 lanes" ] + 40 -> 23 [ label = "2 lanes" ] + 40 -> 37 [ label = "2 lanes" ] + 37 -> 40 [ label = "2 lanes" ] + 38 -> 39 [ label = "2 lanes" ] + 29 -> 19 [ label = "2 lanes" ] + 29 -> 27 [ label = "2 lanes" ] + 40 -> 41 [ label = "3 lanes" ] + 17 -> 39 [ label = "2 lanes" ] + 39 -> 25 [ label = "2 lanes" ] + 42 -> 43 [ label = "3 lanes" ] + 4 -> 44 [ label = "3 lanes" ] + 43 -> 1 [ label = "5 lanes" ] + 45 -> 39 [ label = "1 lanes" ] + 39 -> 32 [ label = "1 lanes" ] + 25 -> 46 [ label = "2 lanes" ] + 46 -> 25 [ label = "2 lanes" ] + 47 -> 24 [ label = "2 lanes" ] + 24 -> 47 [ label = "2 lanes" ] + 44 -> 38 [ label = "5 lanes" ] + 16 -> 47 [ label = "2 lanes" ] + 6 -> 48 [ label = "1 lanes" ] + 20 -> 49 [ label = "2 lanes" ] + 49 -> 20 [ label = "2 lanes" ] + 22 -> 18 [ label = "2 lanes" ] + 18 -> 22 [ label = "2 lanes" ] + 19 -> 28 [ label = "2 lanes" ] + 29 -> 47 [ label = "1 lanes" ] + 47 -> 29 [ label = "2 lanes" ] + 26 -> 18 [ label = "2 lanes" ] + 18 -> 26 [ label = "2 lanes" ] + 39 -> 50 [ label = "2 lanes" ] + 41 -> 42 [ label = "5 lanes" ] } diff --git a/tests/src/kingsway_junction/geometry.json b/tests/src/kingsway_junction/geometry.json index d85964ec..4e010b1f 100644 --- a/tests/src/kingsway_junction/geometry.json +++ b/tests/src/kingsway_junction/geometry.json @@ -1890,8 +1890,8 @@ "coordinates": [ [ [ - -2.3064140564541598, - 53.44606110121374 + -2.306377950193487, + 53.446037412183635 ], [ -2.3064500177582823, @@ -1926,12 +1926,12 @@ 53.44606330545097 ], [ - -2.3064699553237693, - 53.44603087681361 + -2.3064338490630965, + 53.4460071877835 ], [ - -2.3064140564541598, - 53.44606110121374 + -2.306377950193487, + 53.446037412183635 ] ] ], @@ -2633,23 +2633,23 @@ "coordinates": [ [ [ - -2.307020738875146, + -2.307020737365182, 53.446047139246 ], [ - -2.3070493859133476, - 53.44604160841819 + -2.307152875830292, + 53.446021629988984 ], [ - -2.3070380309835943, - 53.446020747754496 + -2.307141523920467, + 53.44600076932529 ], [ - -2.3070093839453927, + -2.307009385455357, 53.4460262785823 ], [ - -2.307020738875146, + -2.307020737365182, 53.446047139246 ] ] @@ -2711,11 +2711,15 @@ "coordinates": [ [ [ - -2.306944553638351, - 53.44601317906396 + -2.3069644096657784, + 53.446005243450216 ], [ - -2.3069395012985963, + -2.3069616071724774, + 53.44600761586058 + ], + [ + -2.3069395028085604, 53.44601482752044 ], [ @@ -2727,16 +2731,20 @@ 53.44605878096403 ], [ - -2.3069586989816924, + -2.306958697471728, 53.44605857232142 ], [ - -2.3069799351162734, - 53.44605164304854 + -2.3070119916533294, + 53.4460411839384 + ], + [ + -2.3070246360923923, + 53.446030478414144 ], [ - -2.306944553638351, - 53.44601317906396 + -2.3069644096657784, + 53.446005243450216 ] ] ], @@ -2758,24 +2766,24 @@ "coordinates": [ [ [ - -2.3070883716754884, - 53.44604347720846 + -2.307088367145596, + 53.44604347630914 ], [ - -2.3070954866261526, - 53.44604492781419 + -2.3071244190475624, + 53.446050828263175 ], [ - -2.307141039222003, - 53.445965668803474 + -2.3071699807031973, + 53.445971571051096 ], [ - -2.3071339242713385, - 53.445964218197744 + -2.307133928801231, + 53.445964219097064 ], [ - -2.3070883716754884, - 53.44604347720846 + -2.307088367145596, + 53.44604347630914 ] ] ], @@ -3039,12 +3047,12 @@ 53.44595250813126 ], [ - -2.3068026502356456, - 53.445972016215286 + -2.306809576440802, + 53.44597339217732 ], [ - -2.3068426733430973, - 53.44590055252414 + -2.306849599548254, + 53.44590192848617 ], [ -2.3067411282598655, @@ -4229,248 +4237,248 @@ "coordinates": [ [ [ - -2.307060553607557, - 53.446120449244376 + -2.3070012014501358, + 53.44609889970034 ], [ - -2.307060801241663, - 53.446117628971855 + -2.307001449084242, + 53.44609607942782 ], [ - -2.3070615441439823, - 53.44611484017559 + -2.307002191986561, + 53.44609329063156 ], [ - -2.3070627702348014, - 53.44611211163387 + -2.30700341807738, + 53.44609056208984 ], [ - -2.3070644704543364, - 53.44610947572228 + -2.3070051182969147, + 53.44608792617825 ], [ - -2.3070666221531257, - 53.44610695942046 + -2.3070072699957045, + 53.44608540987643 ], [ - -2.3070692041916736, - 53.44610459060738 + -2.307009852034252, + 53.446083041063346 ], [ - -2.307072189390626, - 53.446102396262695 + -2.3070128372332044, + 53.44608084671866 ], [ - -2.3070755415108457, - 53.44610039976876 + -2.307016189353424, + 53.44607885022472 ], [ - -2.307079225823159, - 53.446098621809966 + -2.307019873665738, + 53.44607707226593 ], [ - -2.3070832030685007, - 53.44609708397004 + -2.3070238509110794, + 53.446075534426 ], [ - -2.3070874279479487, - 53.446095802436766 + -2.3070280757905275, + 53.446074252892736 ], [ - -2.3070918536526173, - 53.446094789800654 + -2.307032501495196, + 53.44607324025662 ], [ - -2.3070964348835843, - 53.44609405955152 + -2.307037082726163, + 53.44607251000748 ], [ - -2.3071011172821434, - 53.446093617085296 + -2.307041765124722, + 53.44607206754126 ], [ - -2.307105852529445, - 53.446093469596555 + -2.3070465003720235, + 53.44607192005252 ], [ - -2.307110587776746, - 53.446093617085296 + -2.307051235619325, + 53.44607206754126 ], [ - -2.3071152701753053, - 53.44609405955152 + -2.307055918017884, + 53.44607251000748 ], [ - -2.3071198514062723, - 53.446094789800654 + -2.3070604992488506, + 53.44607324025662 ], [ - -2.3071242771109404, - 53.446095802436766 + -2.307064924953519, + 53.446074252892736 ], [ - -2.3071285019903884, - 53.44609708397004 + -2.307069149832967, + 53.446075534426 ], [ - -2.3071324792357304, - 53.446098621809966 + -2.307073127078309, + 53.44607707226593 ], [ - -2.307136163548044, - 53.44610039976876 + -2.3070768113906226, + 53.44607885022472 ], [ - -2.3071395156682635, - 53.446102396262695 + -2.307080163510842, + 53.44608084671866 ], [ - -2.307142500867216, - 53.44610459060738 + -2.3070831487097947, + 53.446083041063346 ], [ - -2.3071450829057634, - 53.44610695942046 + -2.307085730748342, + 53.44608540987643 ], [ - -2.307147234604553, - 53.44610947572228 + -2.307087882447132, + 53.44608792617825 ], [ - -2.307148934824088, - 53.44611211163387 + -2.307089582666667, + 53.44609056208984 ], [ - -2.307150160914907, - 53.44611484017559 + -2.307090808757486, + 53.44609329063156 ], [ - -2.307150903817226, - 53.446117628971855 + -2.3070915516598047, + 53.44609607942782 ], [ - -2.3071511514513325, - 53.446120449244376 + -2.3070917992939113, + 53.44609889970034 ], [ - -2.307150903817226, - 53.446123269516896 + -2.3070915516598047, + 53.44610171997286 ], [ - -2.307150160914907, - 53.446126058313155 + -2.307090808757486, + 53.44610450876912 ], [ - -2.307148934824088, - 53.44612878685487 + -2.307089582666667, + 53.446107237310834 ], [ - -2.307147234604553, - 53.44613142276646 + -2.307087882447132, + 53.446109873222426 ], [ - -2.3071450829057634, - 53.44613393906828 + -2.307085730748342, + 53.446112389524245 ], [ - -2.307142500867216, - 53.44613630788136 + -2.3070831487097947, + 53.44611475833733 ], [ - -2.3071395156682635, - 53.44613850222605 + -2.307080163510842, + 53.44611695268202 ], [ - -2.307136163548044, - 53.44614049871999 + -2.3070768113906226, + 53.446118949175954 ], [ - -2.3071324792357304, - 53.446142276678785 + -2.307073127078309, + 53.44612072713475 ], [ - -2.3071285019903884, - 53.446143814518706 + -2.307069149832967, + 53.44612226497467 ], [ - -2.3071242771109404, - 53.44614509605198 + -2.307064924953519, + 53.44612354650794 ], [ - -2.3071198514062723, - 53.4461461086881 + -2.3070604992488506, + 53.44612455914406 ], [ - -2.3071152701753053, - 53.44614683893723 + -2.307055918017884, + 53.446125289393194 ], [ - -2.307110587776746, - 53.446147281403455 + -2.307051235619325, + 53.44612573185942 ], [ - -2.307105852529445, - 53.446147428892196 + -2.3070465003720235, + 53.44612587934816 ], [ - -2.3071011172821434, - 53.446147281403455 + -2.307041765124722, + 53.44612573185942 ], [ - -2.3070964348835843, - 53.44614683893723 + -2.307037082726163, + 53.446125289393194 ], [ - -2.3070918536526173, - 53.4461461086881 + -2.307032501495196, + 53.44612455914406 ], [ - -2.3070874279479487, - 53.44614509605198 + -2.3070280757905275, + 53.44612354650794 ], [ - -2.3070832030685007, - 53.446143814518706 + -2.3070238509110794, + 53.44612226497467 ], [ - -2.307079225823159, - 53.446142276678785 + -2.307019873665738, + 53.44612072713475 ], [ - -2.3070755415108457, - 53.44614049871999 + -2.307016189353424, + 53.446118949175954 ], [ - -2.307072189390626, - 53.44613850222605 + -2.3070128372332044, + 53.44611695268202 ], [ - -2.3070692041916736, - 53.44613630788136 + -2.307009852034252, + 53.44611475833733 ], [ - -2.3070666221531257, - 53.44613393906828 + -2.3070072699957045, + 53.446112389524245 ], [ - -2.3070644704543364, - 53.44613142276646 + -2.3070051182969147, + 53.446109873222426 ], [ - -2.3070627702348014, - 53.44612878685487 + -2.30700341807738, + 53.446107237310834 ], [ - -2.3070615441439823, - 53.446126058313155 + -2.307002191986561, + 53.44610450876912 ], [ - -2.307060801241663, - 53.446123269516896 + -2.307001449084242, + 53.44610171997286 ], [ - -2.307060553607557, - 53.446120449244376 + -2.3070012014501358, + 53.44609889970034 ] ] ], @@ -4921,248 +4929,248 @@ "coordinates": [ [ [ - -2.3070658490515257, - 53.4460038477031 + -2.3069852003609608, + 53.44598740001047 ], [ - -2.307066096685632, - 53.44600102743058 + -2.3069854479950673, + 53.44598457973795 ], [ - -2.307066839587951, - 53.445998238634324 + -2.306986190897386, + 53.44598179094169 ], [ - -2.30706806567877, - 53.44599551009261 + -2.306987416988205, + 53.44597906239997 ], [ - -2.307069765898305, - 53.445992874181016 + -2.30698911720774, + 53.44597642648838 ], [ - -2.3070719175970944, - 53.44599035787919 + -2.3069912689065295, + 53.44597391018656 ], [ - -2.3070744996356423, - 53.44598798906611 + -2.3069938509450774, + 53.44597154137348 ], [ - -2.3070774848345947, - 53.44598579472142 + -2.30699683614403, + 53.44596934702879 ], [ - -2.3070808369548144, - 53.44598379822749 + -2.3070001882642495, + 53.44596735053485 ], [ - -2.307084521267128, - 53.445982020268694 + -2.307003872576563, + 53.445965572576064 ], [ - -2.3070884985124693, - 53.445980482428766 + -2.307007849821905, + 53.445964034736136 ], [ - -2.3070927233919174, - 53.4459792008955 + -2.307012074701353, + 53.44596275320286 ], [ - -2.307097149096586, - 53.44597818825938 + -2.307016500406021, + 53.44596174056675 ], [ - -2.307101730327553, - 53.44597745801025 + -2.307021081636988, + 53.44596101031762 ], [ - -2.307106412726112, - 53.445977015544024 + -2.307025764035547, + 53.445960567851394 ], [ - -2.3071111479734134, - 53.44597686805528 + -2.3070304992828485, + 53.44596042036265 ], [ - -2.307115883220715, - 53.445977015544024 + -2.30703523453015, + 53.445960567851394 ], [ - -2.307120565619274, - 53.44597745801025 + -2.307039916928709, + 53.44596101031762 ], [ - -2.307125146850241, - 53.44597818825938 + -2.307044498159676, + 53.44596174056675 ], [ - -2.307129572554909, - 53.4459792008955 + -2.3070489238643446, + 53.44596275320286 ], [ - -2.307133797434357, - 53.445980482428766 + -2.3070531487437926, + 53.445964034736136 ], [ - -2.307137774679699, - 53.445982020268694 + -2.307057125989134, + 53.445965572576064 ], [ - -2.3071414589920125, - 53.44598379822749 + -2.3070608103014476, + 53.44596735053485 ], [ - -2.307144811112232, - 53.44598579472142 + -2.3070641624216672, + 53.44596934702879 ], [ - -2.3071477963111846, - 53.44598798906611 + -2.3070671476206197, + 53.44597154137348 ], [ - -2.3071503783497325, - 53.44599035787919 + -2.3070697296591676, + 53.44597391018656 ], [ - -2.307152530048522, - 53.445992874181016 + -2.307071881357957, + 53.44597642648838 ], [ - -2.3071542302680568, - 53.44599551009261 + -2.307073581577492, + 53.44597906239997 ], [ - -2.307155456358876, - 53.445998238634324 + -2.307074807668311, + 53.44598179094169 ], [ - -2.3071561992611946, - 53.44600102743058 + -2.30707555057063, + 53.44598457973795 ], [ - -2.307156446895301, - 53.4460038477031 + -2.3070757982047363, + 53.44598740001047 ], [ - -2.3071561992611946, - 53.446006667975624 + -2.30707555057063, + 53.44599022028299 ], [ - -2.307155456358876, - 53.44600945677188 + -2.307074807668311, + 53.44599300907925 ], [ - -2.3071542302680568, - 53.4460121853136 + -2.307073581577492, + 53.44599573762097 ], [ - -2.307152530048522, - 53.44601482122519 + -2.307071881357957, + 53.44599837353256 ], [ - -2.3071503783497325, - 53.44601733752701 + -2.3070697296591676, + 53.44600088983438 ], [ - -2.3071477963111846, - 53.44601970634009 + -2.3070671476206197, + 53.44600325864746 ], [ - -2.307144811112232, - 53.446021900684784 + -2.3070641624216672, + 53.446005452992146 ], [ - -2.3071414589920125, - 53.44602389717872 + -2.3070608103014476, + 53.44600744948609 ], [ - -2.307137774679699, - 53.44602567513751 + -2.307057125989134, + 53.446009227444875 ], [ - -2.307133797434357, - 53.446027212977434 + -2.3070531487437926, + 53.446010765284804 ], [ - -2.307129572554909, - 53.446028494510706 + -2.3070489238643446, + 53.446012046818076 ], [ - -2.307125146850241, - 53.446029507146825 + -2.307044498159676, + 53.44601305945419 ], [ - -2.307120565619274, - 53.44603023739596 + -2.307039916928709, + 53.44601378970332 ], [ - -2.307115883220715, - 53.44603067986218 + -2.30703523453015, + 53.446014232169546 ], [ - -2.3071111479734134, - 53.446030827350924 + -2.3070304992828485, + 53.44601437965829 ], [ - -2.307106412726112, - 53.44603067986218 + -2.307025764035547, + 53.446014232169546 ], [ - -2.307101730327553, - 53.44603023739596 + -2.307021081636988, + 53.44601378970332 ], [ - -2.307097149096586, - 53.446029507146825 + -2.307016500406021, + 53.44601305945419 ], [ - -2.3070927233919174, - 53.446028494510706 + -2.307012074701353, + 53.446012046818076 ], [ - -2.3070884985124693, - 53.446027212977434 + -2.307007849821905, + 53.446010765284804 ], [ - -2.307084521267128, - 53.44602567513751 + -2.307003872576563, + 53.446009227444875 ], [ - -2.3070808369548144, - 53.44602389717872 + -2.3070001882642495, + 53.44600744948609 ], [ - -2.3070774848345947, - 53.446021900684784 + -2.30699683614403, + 53.446005452992146 ], [ - -2.3070744996356423, - 53.44601970634009 + -2.3069938509450774, + 53.44600325864746 ], [ - -2.3070719175970944, - 53.44601733752701 + -2.3069912689065295, + 53.44600088983438 ], [ - -2.307069765898305, - 53.44601482122519 + -2.30698911720774, + 53.44599837353256 ], [ - -2.30706806567877, - 53.4460121853136 + -2.306987416988205, + 53.44599573762097 ], [ - -2.307066839587951, - 53.44600945677188 + -2.306986190897386, + 53.44599300907925 ], [ - -2.307066096685632, - 53.446006667975624 + -2.3069854479950673, + 53.44599022028299 ], [ - -2.3070658490515257, - 53.4460038477031 + -2.3069852003609608, + 53.44598740001047 ] ] ], @@ -7073,12 +7081,16 @@ 53.4460327797781 ], [ - -2.3064699553237693, - 53.44603087681361 + -2.3064338490630965, + 53.4460071877835 ], [ - -2.3064140564541598, - 53.44606110121374 + -2.306377950193487, + 53.446037412183635 + ], + [ + -2.3064140549441956, + 53.446061100314424 ], [ -2.306357389012842, diff --git a/tests/src/leeds_cycleway/geometry.json b/tests/src/leeds_cycleway/geometry.json index 20908914..f405d007 100644 --- a/tests/src/leeds_cycleway/geometry.json +++ b/tests/src/leeds_cycleway/geometry.json @@ -68,12 +68,12 @@ 53.79893238988735 ], [ - -1.535751590664729, - 53.79900125274751 + -1.535751328785535, + 53.799001371457976 ], [ - -1.5358108027684676, - 53.79904670086825 + -1.535810540889274, + 53.79904681957871 ], [ -1.5359718965364306, @@ -790,12 +790,12 @@ 53.796538233680494 ], [ - -1.5346301417394108, - 53.796594091449755 + -1.5346321378069863, + 53.796593216409754 ], [ - -1.5346658760689236, - 53.79662253519604 + -1.5346678721364988, + 53.79662166015605 ], [ -1.534793315315389, @@ -825,8 +825,8 @@ "coordinates": [ [ [ - -1.5345923793687004, - 53.79661962858836 + -1.5345990755587813, + 53.796614291114146 ], [ -1.5345469615992346, @@ -853,12 +853,12 @@ 53.79667222002125 ], [ - -1.534640556005021, - 53.7966407176819 + -1.5346472521951018, + 53.79663538020769 ], [ - -1.5345923793687004, - 53.79661962858836 + -1.5345990755587813, + 53.796614291114146 ] ] ], @@ -1072,12 +1072,12 @@ 53.797447863391966 ], [ - -1.5344692276327552, - 53.79707772596825 + -1.5344649020583987, + 53.79707299283822 ], [ - -1.5343837971585772, - 53.7971049736167 + -1.5343794715842207, + 53.797100240486664 ], [ -1.5347221572572678, @@ -1929,24 +1929,24 @@ "coordinates": [ [ [ - -1.5364020346346394, - 53.798976995343665 + -1.5364018184320494, + 53.798976454851335 ], [ -1.5364097966121366, - 53.798996375726006 + 53.798996376625325 ], [ -1.5364681499957284, - 53.7989882224756 + 53.79898822337492 ], [ - -1.5364603880182315, - 53.79896884209326 + -1.5364601718156412, + 53.79896830160092 ], [ - -1.5364020346346394, - 53.798976995343665 + -1.5364018184320494, + 53.798976454851335 ] ] ], @@ -4299,8 +4299,8 @@ "coordinates": [ [ [ - -1.535258188948046, - 53.79736073620768 + -1.5352578128773435, + 53.797360856716786 ], [ -1.5352018118388346, @@ -4343,12 +4343,12 @@ 53.79741416400974 ], [ - -1.5352847849117415, - 53.79738963680939 + -1.535284408841039, + 53.7973897573185 ], [ - -1.535258188948046, - 53.79736073620768 + -1.5352578128773435, + 53.797360856716786 ] ] ], @@ -4370,8 +4370,8 @@ "coordinates": [ [ [ - -1.534456514311433, - 53.79703143608241 + -1.5344718053157491, + 53.79705553520564 ], [ -1.5342203510455312, @@ -4382,12 +4382,12 @@ 53.79668705882907 ], [ - -1.5343308336142045, - 53.7970592574981 + -1.5343461246185204, + 53.79708335662133 ], [ - -1.534456514311433, - 53.79703143608241 + -1.5344718053157491, + 53.79705553520564 ] ] ], @@ -7071,7 +7071,7 @@ "osm_way_ids": [ 491178799 ], - "src_i": 320, + "src_i": 303, "type": "road" }, "type": "Feature" @@ -7081,8 +7081,8 @@ "coordinates": [ [ [ - -1.5356902667793526, - 53.79902793562194 + -1.535721058900361, + 53.799015157160106 ], [ -1.535343972654625, @@ -7093,12 +7093,12 @@ 53.79921856663844 ], [ - -1.535746080543787, - 53.799074860428895 + -1.5357768726647953, + 53.79906208196705 ], [ - -1.5356902667793526, - 53.79902793562194 + -1.535721058900361, + 53.799015157160106 ] ] ], @@ -9956,8 +9956,12 @@ "type": "Polygon" }, "properties": { +<<<<<<< HEAD "dst_i": 320, "layer": 0, +======= + "dst_i": 303, +>>>>>>> Get rid of the transformation, and instead update geometry everywhere that's necessary. #136 "osm_way_ids": [ 663639115 ], @@ -9991,12 +9995,12 @@ 53.798897866726456 ], [ - -1.535541660994801, - 53.798869766521044 + -1.5355422974221438, + 53.798868560530664 ], [ - -1.5354489801210855, - 53.79885268120765 + -1.5354496165484284, + 53.79885147521726 ], [ -1.5354370798433068, @@ -10027,8 +10031,12 @@ "type": "Polygon" }, "properties": { +<<<<<<< HEAD "dst_i": 320, "layer": 0, +======= + "dst_i": 303, +>>>>>>> Get rid of the transformation, and instead update geometry everywhere that's necessary. #136 "osm_way_ids": [ 663639116 ], @@ -10071,7 +10079,7 @@ "osm_way_ids": [ 663639116 ], - "src_i": 320, + "src_i": 303, "type": "road" }, "type": "Feature" @@ -10706,12 +10714,12 @@ 53.79711629607673 ], [ - -1.5343301773936668, - 53.79711583742267 + -1.5342370504117901, + 53.79710915726118 ], [ - -1.5343265049947412, - 53.797133692555434 + -1.5342333780128645, + 53.79712701239394 ], [ -1.534332898196685, @@ -11273,12 +11281,12 @@ "coordinates": [ [ [ - -1.534640556005021, - 53.79664071858122 + -1.5346564377600762, + 53.796646565970825 ], [ - -1.5346843476874004, - 53.79669517340865 + -1.5346835163732155, + 53.796694824471835 ], [ -1.5347132594548958, @@ -11289,16 +11297,16 @@ 53.796692649911996 ], [ - -1.5347084527536485, - 53.79668322681937 + -1.5347092840678331, + 53.796683575756184 ], [ - -1.5346680624556803, - 53.79663300060251 + -1.5346853419148043, + 53.79664090743878 ], [ - -1.534640556005021, - 53.79664071858122 + -1.5346564377600762, + 53.796646565970825 ] ] ], @@ -11308,8 +11316,7 @@ "dst_i": 234, "layer": 0, "osm_way_ids": [ - 673731132, - 177344229 + 673731132 ], "src_i": 108, "type": "road" @@ -14121,12 +14128,12 @@ 53.798992492454964 ], [ - -1.5356887975152715, - 53.79902667387362 + -1.5356889893570065, + 53.79902684024813 ], [ - -1.535751590664729, - 53.79900125184819 + -1.5357517855515708, + 53.79900142002135 ], [ -1.5357372664818547, @@ -14169,8 +14176,8 @@ "coordinates": [ [ [ - -1.5354953982081694, - 53.79875626133237 + -1.535500075492373, + 53.79875721551268 ], [ -1.535469759930595, @@ -14181,24 +14188,28 @@ 53.79879352832373 ], [ - -1.5354705349103022, - 53.798798761476625 + -1.535475212194506, + 53.79879971565693 ], [ - -1.5354953982081694, - 53.79875626133237 + -1.535500075492373, + 53.79875721551268 ] ] ], "type": "Polygon" }, "properties": { +<<<<<<< HEAD "dst_i": 320, "layer": 0, +======= + "dst_i": 303, +>>>>>>> Get rid of the transformation, and instead update geometry everywhere that's necessary. #136 "osm_way_ids": [ 775795916 ], - "src_i": 320, + "src_i": 303, "type": "road" }, "type": "Feature" @@ -14212,12 +14223,12 @@ 53.7988241978912 ], [ - -1.5355627879464975, - 53.798825736630604 + -1.535559045510113, + 53.79883213620372 ], [ - -1.5356347438226274, - 53.79884041715781 + -1.5356310013862429, + 53.79884681673093 ], [ -1.5356356436517173, @@ -14513,32 +14524,36 @@ "coordinates": [ [ [ - -1.5356234860624052, - 53.7988040728705 + -1.5356234906300654, + 53.798804080065075 ], [ - -1.5356231206495767, - 53.79880358094154 + -1.535584389934871, + 53.798751379814256 ], [ - -1.5355673495166389, - 53.798818034839684 + -1.5355286096666125, + 53.79876581932325 ], [ - -1.5355677149294673, - 53.79881852676864 + -1.535567710361807, + 53.79881851957407 ], [ - -1.5356234860624052, - 53.7988040728705 + -1.5356234906300654, + 53.798804080065075 ] ] ], "type": "Polygon" }, "properties": { +<<<<<<< HEAD "dst_i": 320, "layer": 0, +======= + "dst_i": 303, +>>>>>>> Get rid of the transformation, and instead update geometry everywhere that's necessary. #136 "osm_way_ids": [ 775795922 ], @@ -14552,24 +14567,24 @@ "coordinates": [ [ [ - -1.5353419446134273, - 53.798714174876096 + -1.5354266792806777, + 53.798693926648326 ], [ - -1.5353337806818188, - 53.79871612550483 + -1.5353337791592654, + 53.79871612640415 ], [ - -1.5353566189835952, - 53.798749474151606 + -1.5353566205061486, + 53.79874947325228 ], [ - -1.5353647829152035, - 53.79874752352286 + -1.535449520627561, + 53.79872727349645 ], [ - -1.5353419446134273, - 53.798714174876096 + -1.5354266792806777, + 53.798693926648326 ] ] ], @@ -14581,7 +14596,7 @@ "osm_way_ids": [ 775795922 ], - "src_i": 320, + "src_i": 303, "type": "road" }, "type": "Feature" @@ -15120,6 +15135,44 @@ }, "type": "Feature" }, + { + "geometry": { + "coordinates": [ + [ + [ + -1.5356041237501592, + 53.79883799978112 + ], + [ + -1.535581343305414, + 53.79882995984524 + ], + [ + -1.5355422958995903, + 53.798868560530664 + ], + [ + -1.5355650763443354, + 53.798876600466535 + ], + [ + -1.5356041237501592, + 53.79883799978112 + ] + ] + ], + "type": "Polygon" + }, + "properties": { + "dst_i": 303, + "osm_way_ids": [ + 778102279 + ], + "src_i": 320, + "type": "road" + }, + "type": "Feature" + }, { "geometry": { "coordinates": [ @@ -15325,12 +15378,12 @@ 53.798984915669756 ], [ - -1.536402033112086, - 53.798976996242985 + -1.536424219760985, + 53.79897201669881 ], [ - -1.5363749925627828, - 53.79893496194737 + -1.5363971792116817, + 53.798929982403195 ], [ -1.5363397089090918, @@ -15686,12 +15739,12 @@ 53.79714697104013 ], [ - -1.5342225206842, - 53.797127871246154 + -1.5342074260892793, + 53.79712904486096 ], [ - -1.534214697804565, - 53.79709275453295 + -1.5341996032096443, + 53.79709392814775 ], [ -1.5339689972638413, @@ -16393,24 +16446,24 @@ "coordinates": [ [ [ - -1.5352847849117415, - 53.797389635910065 + -1.535284574799365, + 53.79739332222966 ], [ - -1.5352925940883955, - 53.797518327044735 + -1.5352925864756282, + 53.797518377406746 ], [ - -1.535348246462164, - 53.79751714893332 + -1.5353482358042898, + 53.79751713274553 ], [ - -1.53534043728551, - 53.79738845779866 + -1.5353402241280267, + 53.797392077568446 ], [ - -1.5352847849117415, - 53.797389635910065 + -1.535284574799365, + 53.79739332222966 ] ] ], @@ -16422,8 +16475,7 @@ "osm_way_ids": [ 864595641, 864595642, - 864595643, - 864595644 + 864595643 ], "src_i": 95, "type": "road" @@ -16451,12 +16503,12 @@ 53.79669967541301 ], [ - -1.5352826990135124, - 53.79735286534428 + -1.5352831664374222, + 53.79736294943835 ], [ - -1.5353383666128155, - 53.797351966022596 + -1.5353388340367253, + 53.79736205011666 ], [ -1.5353077754688629, @@ -22738,28 +22790,36 @@ "coordinates": [ [ [ - -1.53534043728551, - 53.79738845779866 + -1.5353402241280267, + 53.797392077568446 ], [ - -1.5352847849117415, - 53.797389635910065 + -1.535284574799365, + 53.79739332222966 ], [ - -1.535258188948046, - 53.79736073620768 + -1.535284408841039, + 53.7973897573185 + ], + [ + -1.5352578128773435, + 53.797360856716786 ], [ -1.5352826990135124, - 53.797352867142926 + 53.7973528662436 ], [ - -1.5353383666128155, - 53.797351966022596 + -1.5352831664374222, + 53.79736294943835 ], [ - -1.53534043728551, - 53.79738845779866 + -1.5353388340367253, + 53.79736205011666 + ], + [ + -1.5353402241280267, + 53.797392077568446 ] ] ], @@ -22771,7 +22831,8 @@ "intersection_kind": "Connection", "movements": [], "osm_node_ids": [ - 1606819535 + 1606819535, + 2275824763 ], "type": "intersection" }, @@ -23215,16 +23276,20 @@ "coordinates": [ [ [ - -1.5346680624556803, - 53.79663300060251 + -1.5346853419148043, + 53.79664090743878 + ], + [ + -1.5346564377600762, + 53.796646565970825 ], [ - -1.534640556005021, - 53.79664071858122 + -1.5346472521951018, + 53.79663538020769 ], [ - -1.5345923793687004, - 53.79661962858836 + -1.5345990755587813, + 53.796614291114146 ], [ -1.534608521480396, @@ -23232,23 +23297,23 @@ ], [ -1.5346080571015932, - 53.79660647421005 + 53.79660647331073 ], [ -1.5346301432619645, - 53.79659409055043 + 53.79659408965111 ], [ - -1.5346658760689236, - 53.79662253429672 + -1.5346321378069863, + 53.79659321551043 ], [ - -1.5346612688221786, - 53.79662455327391 + -1.5346678721364988, + 53.79662165925672 ], [ - -1.5346680624556803, - 53.79663300060251 + -1.5346853419148043, + 53.79664090743878 ] ] ], @@ -23262,7 +23327,8 @@ "Road #20 -> Road #21" ], "osm_node_ids": [ - 301689312 + 301689312, + 1877939948 ], "type": "intersection" }, @@ -26256,16 +26322,20 @@ 53.79896829710432 ], [ - -1.5364603880182315, - 53.79896884209326 + -1.5364018184320494, + 53.798976454851335 ], [ -1.5364020346346394, - 53.798976995343665 + 53.798976996242985 + ], + [ + -1.536424219760985, + 53.79897201669881 ], [ - -1.5363749940853364, - 53.79893496194737 + -1.5363971792116817, + 53.798929982403195 ], [ -1.536348448365905, @@ -27623,248 +27693,248 @@ "coordinates": [ [ [ - -1.5343808357921136, - 53.797091349792474 + -1.534379323896536, + 53.79707550014707 ], [ - -1.5343810854908797, - 53.79708852951967 + -1.534379573595302, + 53.79707267987427 ], [ - -1.534381834587178, - 53.79708574072312 + -1.5343803226916004, + 53.79706989107772 ], [ - -1.5343830709005808, - 53.79708301218112 + -1.5343815590050032, + 53.79706716253572 ], [ - -1.5343847852957675, - 53.79708037626926 + -1.5343832734001899, + 53.797064526623856 ], [ - -1.5343869549344362, - 53.79707785996718 + -1.5343854430388586, + 53.79706201032178 ], [ - -1.5343895585008387, - 53.79707549115386 + -1.534388046605261, + 53.79705964150846 ], [ - -1.5343925685890127, - 53.79707329680895 + -1.5343910566934351, + 53.797057447163546 ], [ - -1.5343959486576757, - 53.7970713003148 + -1.534394436762098, + 53.797055450669404 ], [ - -1.5343996636880979, - 53.79706952235583 + -1.5343981517925205, + 53.797053672710426 ], [ - -1.53440367409389, - 53.79706798451574 + -1.5344021621983124, + 53.79705213487034 ], [ - -1.534407934198448, - 53.79706670298234 + -1.5344064223028704, + 53.79705085333694 ], [ - -1.534412396802615, - 53.79706569034612 + -1.5344108849070375, + 53.79704984070072 ], [ - -1.5344170162297877, - 53.79706496009691 + -1.53441550433421, + 53.79704911045151 ], [ - -1.5344217376680416, - 53.797064517630645 + -1.534420225772464, + 53.797048667985244 ], [ - -1.5344265123956662, - 53.79706437014189 + -1.5344250005000886, + 53.79704852049649 ], [ - -1.534431287123291, - 53.797064517630645 + -1.5344297752277134, + 53.797048667985244 ], [ - -1.534436008561545, - 53.79706496009691 + -1.5344344966659673, + 53.79704911045151 ], [ - -1.5344406279887175, - 53.79706569034612 + -1.5344391160931399, + 53.79704984070072 ], [ - -1.5344450905928846, - 53.79706670298234 + -1.534443578697307, + 53.79705085333694 ], [ - -1.5344493506974426, - 53.79706798451574 + -1.534447838801865, + 53.79705213487034 ], [ - -1.5344533611032345, - 53.79706952235583 + -1.5344518492076569, + 53.797053672710426 ], [ - -1.5344570761336567, - 53.7970713003148 + -1.5344555642380793, + 53.797055450669404 ], [ - -1.5344604562023196, - 53.79707329680895 + -1.534458944306742, + 53.797057447163546 ], [ - -1.534463466290494, - 53.79707549115386 + -1.5344619543949163, + 53.79705964150846 ], [ - -1.5344660698568964, - 53.79707785996718 + -1.5344645579613188, + 53.79706201032178 ], [ - -1.534468239495565, - 53.79708037626926 + -1.5344667275999875, + 53.797064526623856 ], [ - -1.5344699538907518, - 53.79708301218112 + -1.5344684419951742, + 53.79706716253572 ], [ - -1.5344711902041546, - 53.79708574072312 + -1.534469678308577, + 53.79706989107772 ], [ - -1.534471939300453, - 53.79708852951967 + -1.5344704274048753, + 53.79707267987427 ], [ - -1.534472188999219, - 53.797091349792474 + -1.5344706771036414, + 53.79707550014707 ], [ - -1.534471939300453, - 53.797094170065286 + -1.5344704274048753, + 53.797078320419885 ], [ - -1.5344711902041546, - 53.797096958861836 + -1.534469678308577, + 53.797081109216435 ], [ - -1.5344699538907518, - 53.79709968740383 + -1.5344684419951742, + 53.79708383775843 ], [ - -1.534468239495565, - 53.79710232331569 + -1.5344667275999875, + 53.79708647367029 ], [ - -1.5344660698568964, - 53.79710483961777 + -1.5344645579613188, + 53.79708898997237 ], [ - -1.534463466290494, - 53.79710720843109 + -1.5344619543949163, + 53.79709135878569 ], [ - -1.5344604562023196, - 53.79710940277601 + -1.534458944306742, + 53.79709355313061 ], [ - -1.5344570761336567, - 53.79711139927015 + -1.5344555642380793, + 53.79709554962475 ], [ - -1.5344533611032345, - 53.79711317722912 + -1.5344518492076569, + 53.79709732758372 ], [ - -1.5344493506974426, - 53.797114715069206 + -1.534447838801865, + 53.797098865423806 ], [ - -1.5344450905928846, - 53.79711599660261 + -1.534443578697307, + 53.79710014695721 ], [ - -1.5344406279887175, - 53.79711700923883 + -1.5344391160931399, + 53.79710115959343 ], [ - -1.534436008561545, - 53.79711773948804 + -1.5344344966659673, + 53.79710188984264 ], [ - -1.534431287123291, - 53.79711818195431 + -1.5344297752277134, + 53.79710233230891 ], [ - -1.5344265123956662, - 53.797118329443066 + -1.5344250005000886, + 53.797102479797665 ], [ - -1.5344217376680416, - 53.79711818195431 + -1.534420225772464, + 53.79710233230891 ], [ - -1.5344170162297877, - 53.79711773948804 + -1.53441550433421, + 53.79710188984264 ], [ - -1.534412396802615, - 53.79711700923883 + -1.5344108849070375, + 53.79710115959343 ], [ - -1.534407934198448, - 53.79711599660261 + -1.5344064223028704, + 53.79710014695721 ], [ - -1.53440367409389, - 53.797114715069206 + -1.5344021621983124, + 53.797098865423806 ], [ - -1.5343996636880979, - 53.79711317722912 + -1.5343981517925205, + 53.79709732758372 ], [ - -1.5343959486576757, - 53.79711139927015 + -1.534394436762098, + 53.79709554962475 ], [ - -1.5343925685890127, - 53.79710940277601 + -1.5343910566934351, + 53.79709355313061 ], [ - -1.5343895585008387, - 53.79710720843109 + -1.534388046605261, + 53.79709135878569 ], [ - -1.5343869549344362, - 53.79710483961777 + -1.5343854430388586, + 53.79708898997237 ], [ - -1.5343847852957675, - 53.79710232331569 + -1.5343832734001899, + 53.79708647367029 ], [ - -1.5343830709005808, - 53.79709968740383 + -1.5343815590050032, + 53.79708383775843 ], [ - -1.534381834587178, - 53.797096958861836 + -1.5343803226916004, + 53.797081109216435 ], [ - -1.5343810854908797, - 53.797094170065286 + -1.534379573595302, + 53.797078320419885 ], [ - -1.5343808357921136, - 53.797091349792474 + -1.534379323896536, + 53.79707550014707 ] ] ], @@ -28343,16 +28413,16 @@ 53.79759062261578 ], [ - -1.5352927235054388, - 53.7975204737256 + -1.5352927219828854, + 53.797520493510675 ], [ - -1.5352925940883955, - 53.797518327044735 + -1.5352925864756282, + 53.797518377406746 ], [ - -1.535348246462164, - 53.79751714893332 + -1.5353482358042898, + 53.79751713274553 ], [ -1.5353923426552338, @@ -30880,24 +30950,32 @@ 53.799055303779504 ], [ - -1.535746080543787, - 53.799074860428895 + -1.5357768726647953, + 53.79906208196705 ], [ - -1.5356902667793526, - 53.79902793562194 + -1.535721058900361, + 53.799015157160106 ], [ - -1.5356887975152715, - 53.79902667387362 + -1.5356899790167502, + 53.79902805523173 ], [ - -1.535751590664729, - 53.79900125184819 + -1.5356885706548074, + 53.799026823161014 ], [ - -1.5358108027684676, - 53.79904670086825 + -1.5357516591796343, + 53.79900165654295 + ], + [ + -1.5357513318306422, + 53.79900136965933 + ], + [ + -1.535810540889274, + 53.79904681957871 ], [ -1.5358159383412604, @@ -30926,6 +31004,279 @@ }, "type": "Feature" }, + { + "geometry": { + "coordinates": [ + [ + [ + -1.535511723026279, + 53.79884769986482 + ], + [ + -1.535511972725045, + 53.79884487959202 + ], + [ + -1.5355127218213434, + 53.79884209079547 + ], + [ + -1.5355139581347461, + 53.798839362253474 + ], + [ + -1.5355156725299328, + 53.79883672634161 + ], + [ + -1.5355178421686015, + 53.79883421003953 + ], + [ + -1.535520445735004, + 53.79883184122621 + ], + [ + -1.5355234558231783, + 53.798829646881295 + ], + [ + -1.535526835891841, + 53.79882765038715 + ], + [ + -1.5355305509222634, + 53.798825872428175 + ], + [ + -1.5355345613280553, + 53.7988243345881 + ], + [ + -1.5355388214326133, + 53.79882305305469 + ], + [ + -1.5355432840367804, + 53.79882204041847 + ], + [ + -1.535547903463953, + 53.79882131016926 + ], + [ + -1.535552624902207, + 53.79882086770299 + ], + [ + -1.5355573996298317, + 53.79882072021424 + ], + [ + -1.5355621743574563, + 53.79882086770299 + ], + [ + -1.5355668957957103, + 53.79882131016926 + ], + [ + -1.5355715152228828, + 53.79882204041847 + ], + [ + -1.53557597782705, + 53.79882305305469 + ], + [ + -1.535580237931608, + 53.7988243345881 + ], + [ + -1.5355842483373998, + 53.798825872428175 + ], + [ + -1.5355879633678222, + 53.79882765038715 + ], + [ + -1.5355913434364852, + 53.798829646881295 + ], + [ + -1.5355943535246592, + 53.79883184122621 + ], + [ + -1.5355969570910617, + 53.79883421003953 + ], + [ + -1.5355991267297304, + 53.79883672634161 + ], + [ + -1.5356008411249171, + 53.798839362253474 + ], + [ + -1.53560207743832, + 53.79884209079547 + ], + [ + -1.5356028265346182, + 53.79884487959202 + ], + [ + -1.5356030762333843, + 53.79884769986482 + ], + [ + -1.5356028265346182, + 53.798850520137634 + ], + [ + -1.53560207743832, + 53.798853308934184 + ], + [ + -1.5356008411249171, + 53.79885603747618 + ], + [ + -1.5355991267297304, + 53.79885867338804 + ], + [ + -1.5355969570910617, + 53.79886118969012 + ], + [ + -1.5355943535246592, + 53.79886355850344 + ], + [ + -1.5355913434364852, + 53.79886575284836 + ], + [ + -1.5355879633678222, + 53.7988677493425 + ], + [ + -1.5355842483373998, + 53.79886952730148 + ], + [ + -1.535580237931608, + 53.798871065141554 + ], + [ + -1.53557597782705, + 53.79887234667496 + ], + [ + -1.5355715152228828, + 53.79887335931118 + ], + [ + -1.5355668957957103, + 53.798874089560385 + ], + [ + -1.5355621743574563, + 53.79887453202666 + ], + [ + -1.5355573996298317, + 53.798874679515414 + ], + [ + -1.535552624902207, + 53.79887453202666 + ], + [ + -1.535547903463953, + 53.798874089560385 + ], + [ + -1.5355432840367804, + 53.79887335931118 + ], + [ + -1.5355388214326133, + 53.79887234667496 + ], + [ + -1.5355345613280553, + 53.798871065141554 + ], + [ + -1.5355305509222634, + 53.79886952730148 + ], + [ + -1.535526835891841, + 53.7988677493425 + ], + [ + -1.5355234558231783, + 53.79886575284836 + ], + [ + -1.535520445735004, + 53.79886355850344 + ], + [ + -1.5355178421686015, + 53.79886118969012 + ], + [ + -1.5355156725299328, + 53.79885867338804 + ], + [ + -1.5355139581347461, + 53.79885603747618 + ], + [ + -1.5355127218213434, + 53.798853308934184 + ], + [ + -1.535511972725045, + 53.798850520137634 + ], + [ + -1.535511723026279, + 53.79884769986482 + ] + ] + ], + "type": "Polygon" + }, + "properties": { + "control": "Signalled", + "id": 303, + "intersection_kind": "Intersection", + "movements": [ + "Road #262 -> Road #187", + "Road #262 -> Road #264", + "Road #261 -> Road #187", + "Road #261 -> Road #264" + ], + "osm_node_ids": [ + 7237437046, + 6211583022, + 6211583020, + 682218116, + 5452444914 + ], + "type": "intersection" + }, + "type": "Feature" + }, { "geometry": { "coordinates": [ @@ -31912,269 +32263,44 @@ "coordinates": [ [ [ - -1.5355530892810096, - 53.798833076894205 - ], - [ - -1.5355533389797758, - 53.7988302566214 - ], - [ - -1.535554088076074, - 53.79882746782485 - ], - [ - -1.5355553243894768, - 53.79882473928285 - ], - [ - -1.5355570387846635, - 53.79882210337099 - ], - [ - -1.5355592084233323, - 53.79881958706891 - ], - [ - -1.535561811989735, - 53.79881721825559 - ], - [ - -1.535564822077909, - 53.79881502391068 - ], - [ - -1.535568202146572, - 53.79881302741653 - ], - [ - -1.5355719171769942, - 53.79881124945756 - ], - [ - -1.535575927582786, - 53.79880971161747 - ], - [ - -1.535580187687344, - 53.79880843008407 - ], - [ - -1.5355846502915111, - 53.798807417447854 - ], - [ - -1.5355892697186837, - 53.79880668719864 - ], - [ - -1.5355939911569376, - 53.798806244732376 - ], - [ - -1.5355987658845625, - 53.79880609724362 - ], - [ - -1.535603540612187, - 53.798806244732376 - ], - [ - -1.535608262050441, - 53.79880668719864 - ], - [ - -1.5356128814776135, - 53.798807417447854 - ], - [ - -1.5356173440817806, - 53.79880843008407 - ], - [ - -1.5356216041863386, - 53.79880971161747 - ], - [ - -1.5356256145921308, - 53.79881124945756 - ], - [ - -1.535629329622553, - 53.79881302741653 - ], - [ - -1.535632709691216, - 53.79881502391068 - ], - [ - -1.53563571977939, - 53.79881721825559 - ], - [ - -1.5356383233457924, - 53.79881958706891 - ], - [ - -1.5356404929844611, - 53.79882210337099 - ], - [ - -1.5356422073796479, - 53.79882473928285 - ], - [ - -1.5356434436930506, - 53.79882746782485 - ], - [ - -1.535644192789349, - 53.7988302566214 - ], - [ - -1.535644442488115, - 53.798833076894205 - ], - [ - -1.535644192789349, - 53.79883589716702 - ], - [ - -1.5356434436930506, - 53.79883868596357 - ], - [ - -1.5356422073796479, - 53.79884141450556 - ], - [ - -1.5356404929844611, - 53.79884405041742 - ], - [ - -1.5356383233457924, - 53.798846566719504 - ], - [ - -1.53563571977939, - 53.798848935532824 - ], - [ - -1.535632709691216, - 53.79885112987774 - ], - [ - -1.535629329622553, - 53.79885312637188 - ], - [ - -1.5356256145921308, - 53.79885490433085 - ], - [ - -1.5356216041863386, - 53.79885644217094 - ], - [ - -1.5356173440817806, - 53.798857723704344 - ], - [ - -1.5356128814776135, - 53.79885873634056 - ], - [ - -1.535608262050441, - 53.79885946658977 - ], - [ - -1.535603540612187, - 53.79885990905604 - ], - [ - -1.5355987658845625, - 53.7988600565448 - ], - [ - -1.5355939911569376, - 53.79885990905604 - ], - [ - -1.5355892697186837, - 53.79885946658977 - ], - [ - -1.5355846502915111, - 53.79885873634056 - ], - [ - -1.535580187687344, - 53.798857723704344 - ], - [ - -1.535575927582786, - 53.79885644217094 - ], - [ - -1.5355719171769942, - 53.79885490433085 - ], - [ - -1.535568202146572, - 53.79885312637188 - ], - [ - -1.535564822077909, - 53.79885112987774 - ], - [ - -1.535561811989735, - 53.798848935532824 + -1.5356309998636894, + 53.79884681763025 ], [ - -1.5355592084233323, - 53.798846566719504 + -1.535593995724598, + 53.798886114390655 ], [ - -1.5355570387846635, - 53.79884405041742 + -1.535565074821782, + 53.798876600466535 ], [ - -1.5355553243894768, - 53.79884141450556 + -1.5356041252727126, + 53.79883799978112 ], [ - -1.535554088076074, - 53.79883868596357 + -1.535559045510113, + 53.79883213620372 ], [ - -1.5355533389797758, - 53.79883589716702 + -1.5356310013862429, + 53.79884681673093 ], [ - -1.5355530892810096, - 53.798833076894205 + -1.5356309998636894, + 53.79884681763025 ] ] ], "type": "Polygon" }, "properties": { - "control": "Signalled", + "control": "Signed", "id": 320, - "intersection_kind": "Intersection", - "movements": [ - "Road #262 -> Road #187", - "Road #262 -> Road #264", - "Road #261 -> Road #187", - "Road #261 -> Road #264" - ], + "intersection_kind": "Connection", + "movements": [], "osm_node_ids": [ - 7237437048, - 6211583022, - 6211583020, - 682218116, - 5452444914 + 7237437048 ], "type": "intersection" }, @@ -34569,12 +34695,12 @@ 53.799192345116026 ], [ - -1.535343972654625, - 53.799171641831485 + -1.5353439711320715, + 53.799171640032846 ], [ - -1.5353997864190594, - 53.79921856663844 + -1.535399784896506, + 53.79921856483979 ], [ -1.5353854561459714, diff --git a/tests/src/leeds_cycleway/road_network.dot b/tests/src/leeds_cycleway/road_network.dot index 9c959140..fbb8ddb5 100644 --- a/tests/src/leeds_cycleway/road_network.dot +++ b/tests/src/leeds_cycleway/road_network.dot @@ -246,7 +246,7 @@ digraph { 244 [ label = "Slice" ] 245 [ label = "Slice" ] 246 [ label = "Slice" ] - 247 [ label = "Slice" ] + 247 [ label = "Lights RoadIntersection" ] 248 [ label = "Slice" ] 249 [ label = "Slice" ] 250 [ label = "Slice" ] @@ -256,33 +256,33 @@ digraph { 254 [ label = "Slice" ] 255 [ label = "Slice" ] 256 [ label = "Slice" ] - 257 [ label = "MapEdge" ] + 257 [ label = "Slice" ] 258 [ label = "MapEdge" ] - 259 [ label = "Lights RoadIntersection" ] + 259 [ label = "MapEdge" ] 260 [ label = "Slice" ] 261 [ label = "Slice" ] 262 [ label = "Slice" ] 263 [ label = "Slice" ] 264 [ label = "Slice" ] - 265 [ label = "Terminus" ] - 266 [ label = "Slice" ] - 267 [ label = "MapEdge" ] - 268 [ label = "Slice" ] - 269 [ label = "Merge" ] - 270 [ label = "Slice" ] - 271 [ label = "MapEdge" ] + 265 [ label = "Slice" ] + 266 [ label = "Terminus" ] + 267 [ label = "Slice" ] + 268 [ label = "MapEdge" ] + 269 [ label = "Slice" ] + 270 [ label = "Merge" ] + 271 [ label = "Slice" ] 272 [ label = "MapEdge" ] 273 [ label = "MapEdge" ] - 274 [ label = "Slice" ] - 275 [ label = "MapEdge" ] - 276 [ label = "Slice" ] - 277 [ label = "MapEdge" ] - 278 [ label = "Slice" ] + 274 [ label = "MapEdge" ] + 275 [ label = "Slice" ] + 276 [ label = "MapEdge" ] + 277 [ label = "Slice" ] + 278 [ label = "MapEdge" ] 279 [ label = "Slice" ] 280 [ label = "Slice" ] - 281 [ label = "MapEdge" ] + 281 [ label = "Slice" ] 282 [ label = "MapEdge" ] - 283 [ label = "Slice" ] + 283 [ label = "MapEdge" ] 284 [ label = "Slice" ] 285 [ label = "Slice" ] 286 [ label = "Slice" ] @@ -292,10 +292,10 @@ digraph { 290 [ label = "Slice" ] 291 [ label = "Slice" ] 292 [ label = "Slice" ] - 293 [ label = "Terminus" ] - 294 [ label = "Slice" ] - 295 [ label = "MapEdge" ] - 296 [ label = "Slice" ] + 293 [ label = "Slice" ] + 294 [ label = "Terminus" ] + 295 [ label = "Slice" ] + 296 [ label = "MapEdge" ] 297 [ label = "Slice" ] 298 [ label = "Slice" ] 299 [ label = "Slice" ] @@ -303,33 +303,34 @@ digraph { 301 [ label = "Slice" ] 302 [ label = "Slice" ] 303 [ label = "Slice" ] - 304 [ label = "MapEdge" ] - 305 [ label = "Uncontrolled RoadIntersection" ] - 306 [ label = "Terminus" ] - 307 [ label = "Slice" ] - 308 [ label = "Terminus" ] - 309 [ label = "Uncontrolled RoadIntersection" ] - 310 [ label = "Terminus" ] - 311 [ label = "MapEdge" ] - 312 [ label = "Slice" ] - 313 [ label = "MapEdge" ] + 304 [ label = "Slice" ] + 305 [ label = "MapEdge" ] + 306 [ label = "Uncontrolled RoadIntersection" ] + 307 [ label = "Terminus" ] + 308 [ label = "Slice" ] + 309 [ label = "Terminus" ] + 310 [ label = "Uncontrolled RoadIntersection" ] + 311 [ label = "Terminus" ] + 312 [ label = "MapEdge" ] + 313 [ label = "Slice" ] 314 [ label = "MapEdge" ] - 315 [ label = "Slice" ] + 315 [ label = "MapEdge" ] 316 [ label = "Slice" ] + 317 [ label = "Slice" ] 0 -> 1 [ label = "2 lanes" ] 2 -> 246 [ label = "3 lanes" ] 3 -> 214 [ label = "3 lanes" ] 214 -> 4 [ label = "3 lanes" ] 5 -> 6 [ label = "3 lanes" ] - 7 -> 288 [ label = "1 lanes" ] - 288 -> 8 [ label = "1 lanes" ] + 7 -> 289 [ label = "1 lanes" ] + 289 -> 8 [ label = "1 lanes" ] 9 -> 29 [ label = "2 lanes" ] 29 -> 10 [ label = "2 lanes" ] 11 -> 12 [ label = "2 lanes" ] 13 -> 34 [ label = "2 lanes" ] 34 -> 14 [ label = "2 lanes" ] - 15 -> 296 [ label = "2 lanes" ] - 296 -> 16 [ label = "2 lanes" ] + 15 -> 297 [ label = "2 lanes" ] + 297 -> 16 [ label = "2 lanes" ] 17 -> 122 [ label = "2 lanes" ] 122 -> 17 [ label = "2 lanes" ] 122 -> 18 [ label = "2 lanes" ] @@ -343,15 +344,15 @@ digraph { 24 -> 23 [ label = "2 lanes" ] 25 -> 56 [ label = "1 lanes" ] 56 -> 26 [ label = "1 lanes" ] - 25 -> 250 [ label = "3 lanes" ] - 250 -> 188 [ label = "3 lanes" ] + 25 -> 251 [ label = "3 lanes" ] + 251 -> 188 [ label = "3 lanes" ] 27 -> 28 [ label = "1 lanes" ] 29 -> 30 [ label = "1 lanes" ] 30 -> 29 [ label = "1 lanes" ] 4 -> 26 [ label = "1 lanes" ] 206 -> 207 [ label = "1 lanes" ] - 207 -> 256 [ label = "1 lanes" ] - 256 -> 99 [ label = "1 lanes" ] + 207 -> 257 [ label = "1 lanes" ] + 257 -> 99 [ label = "1 lanes" ] 99 -> 31 [ label = "1 lanes" ] 32 -> 33 [ label = "2 lanes" ] 33 -> 32 [ label = "2 lanes" ] @@ -360,19 +361,19 @@ digraph { 38 -> 36 [ label = "2 lanes" ] 38 -> 37 [ label = "2 lanes" ] 37 -> 38 [ label = "2 lanes" ] - 38 -> 303 [ label = "2 lanes" ] - 303 -> 38 [ label = "2 lanes" ] - 303 -> 39 [ label = "2 lanes" ] - 39 -> 303 [ label = "2 lanes" ] - 40 -> 312 [ label = "3 lanes" ] - 312 -> 41 [ label = "3 lanes" ] - 42 -> 316 [ label = "1 lanes" ] - 43 -> 260 [ label = "2 lanes" ] - 260 -> 163 [ label = "2 lanes" ] + 38 -> 304 [ label = "2 lanes" ] + 304 -> 38 [ label = "2 lanes" ] + 304 -> 39 [ label = "2 lanes" ] + 39 -> 304 [ label = "2 lanes" ] + 40 -> 313 [ label = "3 lanes" ] + 313 -> 41 [ label = "3 lanes" ] + 42 -> 317 [ label = "1 lanes" ] + 43 -> 261 [ label = "2 lanes" ] + 261 -> 163 [ label = "2 lanes" ] 163 -> 102 [ label = "2 lanes" ] 102 -> 35 [ label = "2 lanes" ] - 35 -> 305 [ label = "2 lanes" ] - 305 -> 36 [ label = "2 lanes" ] + 35 -> 306 [ label = "2 lanes" ] + 306 -> 36 [ label = "2 lanes" ] 36 -> 23 [ label = "2 lanes" ] 44 -> 79 [ label = "2 lanes" ] 79 -> 44 [ label = "2 lanes" ] @@ -447,11 +448,11 @@ digraph { 182 -> 216 [ label = "1 lanes" ] 90 -> 91 [ label = "1 lanes" ] 92 -> 93 [ label = "1 lanes" ] - 94 -> 270 [ label = "3 lanes" ] - 270 -> 83 [ label = "3 lanes" ] + 94 -> 271 [ label = "3 lanes" ] + 271 -> 83 [ label = "3 lanes" ] 83 -> 221 [ label = "3 lanes" ] 221 -> 49 [ label = "3 lanes" ] - 297 -> 95 [ label = "1 lanes" ] + 298 -> 95 [ label = "1 lanes" ] 96 -> 162 [ label = "1 lanes" ] 162 -> 170 [ label = "1 lanes" ] 170 -> 97 [ label = "1 lanes" ] @@ -467,8 +468,8 @@ digraph { 86 -> 103 [ label = "1 lanes" ] 104 -> 107 [ label = "2 lanes" ] 164 -> 105 [ label = "2 lanes" ] - 106 -> 268 [ label = "2 lanes" ] - 268 -> 103 [ label = "2 lanes" ] + 106 -> 269 [ label = "2 lanes" ] + 269 -> 103 [ label = "2 lanes" ] 107 -> 163 [ label = "2 lanes" ] 108 -> 109 [ label = "1 lanes" ] 110 -> 40 [ label = "2 lanes" ] @@ -499,7 +500,7 @@ digraph { 145 -> 127 [ label = "1 lanes" ] 145 -> 129 [ label = "1 lanes" ] 129 -> 145 [ label = "1 lanes" ] - 316 -> 297 [ label = "1 lanes" ] + 317 -> 298 [ label = "1 lanes" ] 130 -> 23 [ label = "2 lanes" ] 23 -> 130 [ label = "2 lanes" ] 131 -> 132 [ label = "1 lanes" ] @@ -508,9 +509,9 @@ digraph { 134 -> 135 [ label = "3 lanes" ] 135 -> 49 [ label = "3 lanes" ] 136 -> 49 [ label = "0 lanes" ] - 259 -> 6 [ label = "3 lanes" ] - 246 -> 307 [ label = "3 lanes" ] - 307 -> 137 [ label = "3 lanes" ] + 247 -> 6 [ label = "3 lanes" ] + 246 -> 308 [ label = "3 lanes" ] + 308 -> 137 [ label = "3 lanes" ] 137 -> 177 [ label = "4 lanes" ] 177 -> 221 [ label = "4 lanes" ] 221 -> 138 [ label = "4 lanes" ] @@ -522,11 +523,11 @@ digraph { 144 -> 145 [ label = "1 lanes" ] 145 -> 77 [ label = "1 lanes" ] 146 -> 147 [ label = "1 lanes" ] - 148 -> 301 [ label = "2 lanes" ] - 301 -> 294 [ label = "2 lanes" ] - 294 -> 149 [ label = "2 lanes" ] - 235 -> 300 [ label = "2 lanes" ] - 300 -> 150 [ label = "2 lanes" ] + 148 -> 302 [ label = "2 lanes" ] + 302 -> 295 [ label = "2 lanes" ] + 295 -> 149 [ label = "2 lanes" ] + 235 -> 301 [ label = "2 lanes" ] + 301 -> 150 [ label = "2 lanes" ] 151 -> 235 [ label = "2 lanes" ] 152 -> 151 [ label = "1 lanes" ] 153 -> 152 [ label = "1 lanes" ] @@ -549,11 +550,11 @@ digraph { 101 -> 107 [ label = "3 lanes" ] 107 -> 163 [ label = "3 lanes" ] 163 -> 164 [ label = "3 lanes" ] - 164 -> 269 [ label = "3 lanes" ] + 164 -> 270 [ label = "3 lanes" ] 115 -> 165 [ label = "3 lanes" ] 3 -> 189 [ label = "2 lanes" ] - 189 -> 286 [ label = "2 lanes" ] - 286 -> 12 [ label = "2 lanes" ] + 189 -> 287 [ label = "2 lanes" ] + 287 -> 12 [ label = "2 lanes" ] 166 -> 220 [ label = "2 lanes" ] 220 -> 47 [ label = "2 lanes" ] 167 -> 40 [ label = "1 lanes" ] @@ -576,19 +577,19 @@ digraph { 176 -> 122 [ label = "0 lanes" ] 75 -> 177 [ label = "2 lanes" ] 6 -> 140 [ label = "3 lanes" ] - 140 -> 249 [ label = "3 lanes" ] - 249 -> 25 [ label = "3 lanes" ] + 140 -> 250 [ label = "3 lanes" ] + 250 -> 25 [ label = "3 lanes" ] 178 -> 179 [ label = "1 lanes" ] - 178 -> 259 [ label = "3 lanes" ] - 62 -> 259 [ label = "3 lanes" ] - 259 -> 180 [ label = "3 lanes" ] + 178 -> 247 [ label = "3 lanes" ] + 62 -> 247 [ label = "3 lanes" ] + 247 -> 180 [ label = "3 lanes" ] 62 -> 178 [ label = "5 lanes" ] 181 -> 182 [ label = "1 lanes" ] 182 -> 185 [ label = "1 lanes" ] 185 -> 186 [ label = "1 lanes" ] 186 -> 181 [ label = "1 lanes" ] - 11 -> 285 [ label = "2 lanes" ] - 285 -> 183 [ label = "2 lanes" ] + 11 -> 286 [ label = "2 lanes" ] + 286 -> 183 [ label = "2 lanes" ] 183 -> 190 [ label = "3 lanes" ] 184 -> 185 [ label = "2 lanes" ] 185 -> 186 [ label = "2 lanes" ] @@ -614,8 +615,8 @@ digraph { 106 -> 211 [ label = "2 lanes" ] 211 -> 169 [ label = "2 lanes" ] 169 -> 200 [ label = "2 lanes" ] - 201 -> 249 [ label = "1 lanes" ] - 249 -> 202 [ label = "1 lanes" ] + 201 -> 250 [ label = "1 lanes" ] + 250 -> 202 [ label = "1 lanes" ] 202 -> 199 [ label = "1 lanes" ] 203 -> 234 [ label = "1 lanes" ] 234 -> 154 [ label = "1 lanes" ] @@ -623,8 +624,8 @@ digraph { 204 -> 205 [ label = "1 lanes" ] 206 -> 207 [ label = "1 lanes" ] 207 -> 53 [ label = "1 lanes" ] - 315 -> 298 [ label = "1 lanes" ] - 298 -> 208 [ label = "1 lanes" ] + 316 -> 299 [ label = "1 lanes" ] + 299 -> 208 [ label = "1 lanes" ] 169 -> 209 [ label = "1 lanes" ] 169 -> 209 [ label = "1 lanes" ] 210 -> 211 [ label = "1 lanes" ] @@ -638,10 +639,10 @@ digraph { 218 -> 157 [ label = "1 lanes" ] 157 -> 233 [ label = "1 lanes" ] 233 -> 217 [ label = "1 lanes" ] - 182 -> 290 [ label = "1 lanes" ] - 290 -> 182 [ label = "1 lanes" ] - 290 -> 218 [ label = "1 lanes" ] - 218 -> 290 [ label = "1 lanes" ] + 182 -> 291 [ label = "1 lanes" ] + 291 -> 182 [ label = "1 lanes" ] + 291 -> 218 [ label = "1 lanes" ] + 218 -> 291 [ label = "1 lanes" ] 219 -> 177 [ label = "1 lanes" ] 177 -> 220 [ label = "1 lanes" ] 220 -> 221 [ label = "1 lanes" ] @@ -650,16 +651,16 @@ digraph { 223 -> 224 [ label = "1 lanes" ] 225 -> 226 [ label = "2 lanes" ] 227 -> 228 [ label = "1 lanes" ] - 41 -> 315 [ label = "1 lanes" ] - 315 -> 42 [ label = "1 lanes" ] + 41 -> 316 [ label = "1 lanes" ] + 316 -> 42 [ label = "1 lanes" ] 31 -> 229 [ label = "2 lanes" ] 41 -> 31 [ label = "2 lanes" ] 31 -> 41 [ label = "2 lanes" ] 230 -> 231 [ label = "1 lanes" ] 190 -> 232 [ label = "2 lanes" ] 190 -> 46 [ label = "3 lanes" ] - 293 -> 204 [ label = "1 lanes" ] - 204 -> 293 [ label = "1 lanes" ] + 294 -> 204 [ label = "1 lanes" ] + 204 -> 294 [ label = "1 lanes" ] 233 -> 116 [ label = "1 lanes" ] 234 -> 238 [ label = "2 lanes" ] 238 -> 243 [ label = "2 lanes" ] @@ -676,117 +677,118 @@ digraph { 243 -> 244 [ label = "1 lanes" ] 238 -> 245 [ label = "1 lanes" ] 244 -> 238 [ label = "2 lanes" ] - 259 -> 246 [ label = "2 lanes" ] - 259 -> 259 [ label = "2 lanes" ] - 247 -> 259 [ label = "2 lanes" ] - 248 -> 179 [ label = "2 lanes" ] + 260 -> 246 [ label = "2 lanes" ] + 247 -> 247 [ label = "2 lanes" ] + 248 -> 260 [ label = "2 lanes" ] + 249 -> 179 [ label = "2 lanes" ] 179 -> 203 [ label = "2 lanes" ] 203 -> 141 [ label = "2 lanes" ] - 141 -> 249 [ label = "2 lanes" ] - 249 -> 184 [ label = "2 lanes" ] - 184 -> 250 [ label = "2 lanes" ] - 251 -> 259 [ label = "2 lanes" ] - 259 -> 248 [ label = "2 lanes" ] - 192 -> 247 [ label = "2 lanes" ] - 247 -> 251 [ label = "2 lanes" ] - 252 -> 254 [ label = "1 lanes" ] - 254 -> 240 [ label = "1 lanes" ] - 240 -> 253 [ label = "1 lanes" ] - 254 -> 255 [ label = "1 lanes" ] - 198 -> 256 [ label = "1 lanes" ] + 141 -> 250 [ label = "2 lanes" ] + 250 -> 184 [ label = "2 lanes" ] + 184 -> 251 [ label = "2 lanes" ] + 252 -> 247 [ label = "2 lanes" ] + 247 -> 249 [ label = "2 lanes" ] + 192 -> 248 [ label = "2 lanes" ] + 248 -> 252 [ label = "2 lanes" ] + 253 -> 255 [ label = "1 lanes" ] + 255 -> 240 [ label = "1 lanes" ] + 240 -> 254 [ label = "1 lanes" ] + 255 -> 256 [ label = "1 lanes" ] + 198 -> 257 [ label = "1 lanes" ] 190 -> 191 [ label = "2 lanes" ] - 46 -> 257 [ label = "3 lanes" ] + 46 -> 258 [ label = "3 lanes" ] 46 -> 64 [ label = "0 lanes" ] - 258 -> 283 [ label = "2 lanes" ] - 283 -> 191 [ label = "2 lanes" ] - 109 -> 269 [ label = "2 lanes" ] - 269 -> 105 [ label = "2 lanes" ] - 105 -> 260 [ label = "2 lanes" ] - 261 -> 246 [ label = "2 lanes" ] - 164 -> 262 [ label = "2 lanes" ] - 263 -> 163 [ label = "2 lanes" ] - 131 -> 260 [ label = "2 lanes" ] - 260 -> 107 [ label = "2 lanes" ] - 107 -> 264 [ label = "2 lanes" ] - 264 -> 132 [ label = "1 lanes" ] - 35 -> 266 [ label = "1 lanes" ] - 266 -> 35 [ label = "1 lanes" ] - 266 -> 265 [ label = "1 lanes" ] - 265 -> 266 [ label = "1 lanes" ] + 259 -> 284 [ label = "2 lanes" ] + 284 -> 191 [ label = "2 lanes" ] + 260 -> 247 [ label = "2 lanes" ] + 109 -> 270 [ label = "2 lanes" ] + 270 -> 105 [ label = "2 lanes" ] + 105 -> 261 [ label = "2 lanes" ] + 262 -> 246 [ label = "2 lanes" ] + 164 -> 263 [ label = "2 lanes" ] + 264 -> 163 [ label = "2 lanes" ] + 131 -> 261 [ label = "2 lanes" ] + 261 -> 107 [ label = "2 lanes" ] + 107 -> 265 [ label = "2 lanes" ] + 265 -> 132 [ label = "1 lanes" ] + 35 -> 267 [ label = "1 lanes" ] + 267 -> 35 [ label = "1 lanes" ] + 267 -> 266 [ label = "1 lanes" ] + 266 -> 267 [ label = "1 lanes" ] 10 -> 89 [ label = "2 lanes" ] 89 -> 188 [ label = "2 lanes" ] - 246 -> 262 [ label = "2 lanes" ] - 262 -> 263 [ label = "2 lanes" ] - 263 -> 266 [ label = "2 lanes" ] - 267 -> 112 [ label = "2 lanes" ] + 246 -> 263 [ label = "2 lanes" ] + 263 -> 264 [ label = "2 lanes" ] + 264 -> 267 [ label = "2 lanes" ] + 268 -> 112 [ label = "2 lanes" ] 206 -> 53 [ label = "3 lanes" ] 81 -> 74 [ label = "2 lanes" ] 74 -> 81 [ label = "2 lanes" ] 74 -> 61 [ label = "2 lanes" ] 61 -> 74 [ label = "2 lanes" ] - 5 -> 268 [ label = "3 lanes" ] - 268 -> 54 [ label = "3 lanes" ] + 5 -> 269 [ label = "3 lanes" ] + 269 -> 54 [ label = "3 lanes" ] 180 -> 5 [ label = "3 lanes" ] 226 -> 43 [ label = "3 lanes" ] - 43 -> 269 [ label = "3 lanes" ] + 43 -> 270 [ label = "3 lanes" ] 0 -> 226 [ label = "3 lanes" ] 54 -> 168 [ label = "3 lanes" ] 168 -> 0 [ label = "3 lanes" ] 198 -> 206 [ label = "1 lanes" ] 87 -> 198 [ label = "1 lanes" ] 88 -> 87 [ label = "1 lanes" ] - 269 -> 2 [ label = "3 lanes" ] - 270 -> 271 [ label = "1 lanes" ] - 65 -> 272 [ label = "1 lanes" ] - 273 -> 279 [ label = "1 lanes" ] - 279 -> 274 [ label = "1 lanes" ] - 275 -> 280 [ label = "1 lanes" ] - 280 -> 276 [ label = "1 lanes" ] - 277 -> 278 [ label = "1 lanes" ] - 279 -> 280 [ label = "1 lanes" ] + 270 -> 2 [ label = "3 lanes" ] + 271 -> 272 [ label = "1 lanes" ] + 65 -> 273 [ label = "1 lanes" ] + 274 -> 280 [ label = "1 lanes" ] + 280 -> 275 [ label = "1 lanes" ] + 276 -> 281 [ label = "1 lanes" ] + 281 -> 277 [ label = "1 lanes" ] + 278 -> 279 [ label = "1 lanes" ] 280 -> 281 [ label = "1 lanes" ] - 282 -> 66 [ label = "1 lanes" ] - 33 -> 283 [ label = "2 lanes" ] - 283 -> 284 [ label = "2 lanes" ] + 281 -> 282 [ label = "1 lanes" ] + 283 -> 66 [ label = "1 lanes" ] + 33 -> 284 [ label = "2 lanes" ] 284 -> 285 [ label = "2 lanes" ] 285 -> 286 [ label = "2 lanes" ] - 287 -> 289 [ label = "1 lanes" ] - 289 -> 288 [ label = "1 lanes" ] - 161 -> 289 [ label = "1 lanes" ] - 290 -> 292 [ label = "1 lanes" ] - 292 -> 291 [ label = "1 lanes" ] - 292 -> 293 [ label = "1 lanes" ] - 72 -> 294 [ label = "1 lanes" ] - 295 -> 296 [ label = "1 lanes" ] - 297 -> 298 [ label = "1 lanes" ] + 286 -> 287 [ label = "2 lanes" ] + 288 -> 290 [ label = "1 lanes" ] + 290 -> 289 [ label = "1 lanes" ] + 161 -> 290 [ label = "1 lanes" ] + 291 -> 293 [ label = "1 lanes" ] + 293 -> 292 [ label = "1 lanes" ] + 293 -> 294 [ label = "1 lanes" ] + 72 -> 295 [ label = "1 lanes" ] + 296 -> 297 [ label = "1 lanes" ] + 298 -> 299 [ label = "1 lanes" ] 93 -> 146 [ label = "1 lanes" ] - 146 -> 299 [ label = "1 lanes" ] - 300 -> 301 [ label = "2 lanes" ] + 146 -> 300 [ label = "1 lanes" ] + 301 -> 302 [ label = "2 lanes" ] 150 -> 148 [ label = "1 lanes" ] 149 -> 159 [ label = "1 lanes" ] 159 -> 92 [ label = "1 lanes" ] - 219 -> 302 [ label = "2 lanes" ] - 302 -> 307 [ label = "2 lanes" ] - 307 -> 261 [ label = "2 lanes" ] - 302 -> 137 [ label = "1 lanes" ] - 303 -> 304 [ label = "1 lanes" ] - 305 -> 306 [ label = "2 lanes" ] - 306 -> 305 [ label = "2 lanes" ] + 219 -> 303 [ label = "2 lanes" ] + 303 -> 308 [ label = "2 lanes" ] + 308 -> 262 [ label = "2 lanes" ] + 303 -> 137 [ label = "1 lanes" ] + 304 -> 305 [ label = "1 lanes" ] + 306 -> 307 [ label = "2 lanes" ] + 307 -> 306 [ label = "2 lanes" ] 12 -> 114 [ label = "2 lanes" ] 12 -> 115 [ label = "2 lanes" ] - 89 -> 309 [ label = "1 lanes" ] - 309 -> 89 [ label = "1 lanes" ] - 309 -> 308 [ label = "1 lanes" ] - 308 -> 309 [ label = "1 lanes" ] - 309 -> 310 [ label = "1 lanes" ] + 89 -> 310 [ label = "1 lanes" ] + 310 -> 89 [ label = "1 lanes" ] 310 -> 309 [ label = "1 lanes" ] - 311 -> 42 [ label = "3 lanes" ] - 42 -> 311 [ label = "3 lanes" ] - 312 -> 274 [ label = "1 lanes" ] - 274 -> 276 [ label = "1 lanes" ] - 276 -> 278 [ label = "1 lanes" ] - 278 -> 231 [ label = "1 lanes" ] - 231 -> 313 [ label = "1 lanes" ] - 314 -> 315 [ label = "1 lanes" ] + 309 -> 310 [ label = "1 lanes" ] + 310 -> 311 [ label = "1 lanes" ] + 311 -> 310 [ label = "1 lanes" ] + 312 -> 42 [ label = "3 lanes" ] + 42 -> 312 [ label = "3 lanes" ] + 313 -> 275 [ label = "1 lanes" ] + 275 -> 277 [ label = "1 lanes" ] + 277 -> 279 [ label = "1 lanes" ] + 279 -> 231 [ label = "1 lanes" ] + 231 -> 314 [ label = "1 lanes" ] 315 -> 316 [ label = "1 lanes" ] + 316 -> 317 [ label = "1 lanes" ] } diff --git a/tests/src/roosevelt_cycletrack/geometry.json b/tests/src/roosevelt_cycletrack/geometry.json index 96543ecc..6f734934 100644 --- a/tests/src/roosevelt_cycletrack/geometry.json +++ b/tests/src/roosevelt_cycletrack/geometry.json @@ -282,12 +282,12 @@ 47.6685461819109 ], [ - -122.31746198776756, - 47.6685413597483 + -122.31744834412288, + 47.66854128240664 ], [ - -122.31746109848713, - 47.66861219571594 + -122.31744745484245, + 47.66861211837428 ], [ -122.31830715267053, @@ -318,7 +318,7 @@ "coordinates": [ [ [ - -122.3173532632215, + -122.31735324719844, 47.66854063039846 ], [ @@ -330,11 +330,11 @@ 47.66860696616065 ], [ - -122.31735254752435, + -122.31735253150129, 47.668611466366094 ], [ - -122.3173532632215, + -122.31735324719844, 47.66854063039846 ] ] @@ -1263,7 +1263,7 @@ [ [ -122.31743840714854, - 47.66854043524567 + 47.668540426252456 ], [ -122.31743136901476, @@ -1275,11 +1275,11 @@ ], [ -122.317353260551, - 47.66854063129779 + 47.66854062230457 ], [ -122.31743840714854, - 47.66854043524567 + 47.668540426252456 ] ] ], @@ -1794,8 +1794,8 @@ "coordinates": [ [ [ - -122.3176562568174, - 47.66124560401893 + -122.31765638633723, + 47.6612453989736 ], [ -122.31774372141918, @@ -1814,12 +1814,12 @@ 47.661092181547225 ], [ - -122.31757795207103, - 47.66122308140799 + -122.31757808159085, + 47.66122287636266 ], [ - -122.3176562568174, - 47.66124560401893 + -122.31765638633723, + 47.6612453989736 ] ] ], @@ -2242,8 +2242,8 @@ "coordinates": [ [ [ - -122.31748089499095, - 47.66123359897447 + -122.31748145713368, + 47.661233602571755 ], [ -122.3171840208728, @@ -2254,12 +2254,12 @@ 47.66136810331633 ], [ - -122.31747875056999, - 47.66137021672216 + -122.31747931271272, + 47.66137022031945 ], [ - -122.31748089499095, - 47.66123359897447 + -122.31748145713368, + 47.661233602571755 ] ] ], @@ -2881,11 +2881,11 @@ ], [ -122.31746109581663, - 47.668612197514584 + 47.66861220021255 ], [ -122.31743439069884, - 47.668612143555286 + 47.66861214625325 ], [ -122.3174315038756, @@ -7320,16 +7320,20 @@ "coordinates": [ [ [ - -122.31746198776756, - 47.6685413597483 + -122.31744834412288, + 47.66854128240664 + ], + [ + -122.31744745484245, + 47.66861211837428 ], [ - -122.31746109848713, + -122.31746109581663, 47.66861219571594 ], [ -122.31743439069884, - 47.66861214265597 + 47.668612145353926 ], [ -122.31743332783515, @@ -7344,20 +7348,20 @@ 47.668611466366094 ], [ - -122.3173525461891, + -122.31735253016603, 47.668611466366094 ], [ - -122.31735326188625, + -122.31735324586319, 47.66854063039846 ], [ - -122.31743840714854, - 47.66854043524567 + -122.31743839112548, + 47.668540427151775 ], [ - -122.31743717871313, - 47.66829789179892 + -122.3174371707016, + 47.66829878752326 ], [ -122.317434882073, @@ -7368,8 +7372,8 @@ 47.668541288701896 ], [ - -122.31746198776756, - 47.6685413597483 + -122.31744834412288, + 47.66854128240664 ] ] ], @@ -7659,20 +7663,24 @@ 47.66129227791229 ], [ - -122.31747874789949, - 47.66137021672216 + -122.31747886807251, + 47.6613699685094 + ], + [ + -122.31747943288575, + 47.661369972106684 ], [ - -122.31748089499095, - 47.66123359897447 + -122.31748134497218, + 47.661233352560345 ], [ - -122.31757795207103, - 47.66122308140799 + -122.31757843276316, + 47.6612230364419 ], [ - -122.3176562568174, - 47.66124560401893 + -122.31765680160181, + 47.66124545832882 ], [ -122.31773340523218, @@ -7697,7 +7705,6 @@ "movements": [ "Road #89 -> Road #64", "Road #89 -> Road #51", - "Road #43 -> Road #89", "Road #43 -> Road #64", "Road #43 -> Road #51", "Road #64 -> Road #89", diff --git a/tests/src/seattle_slip_lane/geometry.json b/tests/src/seattle_slip_lane/geometry.json index 2ebc2709..e7d47bc9 100644 --- a/tests/src/seattle_slip_lane/geometry.json +++ b/tests/src/seattle_slip_lane/geometry.json @@ -419,8 +419,8 @@ "coordinates": [ [ [ - -122.31765625689866, - 47.66124560349252 + -122.31765638775391, + 47.661245397547894 ], [ -122.31774372161618, @@ -439,12 +439,12 @@ 47.661092181942884 ], [ - -122.31757795204865, - 47.661223080884916 + -122.3175780829039, + 47.66122287494029 ], [ - -122.31765625689866, - 47.66124560349252 + -122.31765638775391, + 47.661245397547894 ] ] ], @@ -523,8 +523,8 @@ "coordinates": [ [ [ - -122.31748089484013, - 47.66123359934916 + -122.3174814569836, + 47.661233602946446 ], [ -122.31718402166435, @@ -535,12 +535,12 @@ 47.66136810367108 ], [ - -122.31747875041633, - 47.6613702170766 + -122.3174793125598, + 47.66137022067389 ], [ - -122.31748089484013, - 47.66123359934916 + -122.3174814569836, + 47.661233602946446 ] ] ], @@ -2221,20 +2221,24 @@ 47.66129227827828 ], [ - -122.31747874641056, - 47.6613702170766 + -122.31747886791901, + 47.66136996886387 ], [ - -122.31748089484013, - 47.66123359934916 + -122.317479432733, + 47.66136997246116 ], [ - -122.31757795204865, - 47.661223080884916 + -122.31748134482196, + 47.66123335293507 ], [ - -122.31765625689866, - 47.66124560349252 + -122.31757843407667, + 47.66122303501952 + ], + [ + -122.31765680301903, + 47.66124545690312 ], [ -122.31773340541552, @@ -2259,7 +2263,6 @@ "movements": [ "Road #29 -> Road #15", "Road #29 -> Road #12", - "Road #8 -> Road #29", "Road #8 -> Road #15", "Road #8 -> Road #12", "Road #15 -> Road #29", diff --git a/tests/src/st_georges_cycletrack/geometry.json b/tests/src/st_georges_cycletrack/geometry.json index b91dbc51..eefd2e7d 100644 --- a/tests/src/st_georges_cycletrack/geometry.json +++ b/tests/src/st_georges_cycletrack/geometry.json @@ -5,32 +5,36 @@ "coordinates": [ [ [ - -0.10569768844476132, - 51.49649303399153 + -0.10569768700028234, + 51.49649303579017 ], [ - -0.10570031739650075, - 51.496490355811495 + -0.10570030872962688, + 51.496490365704034 ], [ - -0.10566950377094823, - 51.49647863225379 + -0.10566949799303232, + 51.49647863854904 ], [ - -0.1056668748192088, - 51.49648131043382 + -0.10566687626368779, + 51.496481308635175 ], [ - -0.10569768844476132, - 51.49649303399153 + -0.10569768700028234, + 51.49649303579017 ] ] ], "type": "Polygon" }, "properties": { +<<<<<<< HEAD "dst_i": 1, "layer": 0, +======= + "dst_i": 135, +>>>>>>> Get rid of the transformation, and instead update geometry everywhere that's necessary. #136 "osm_way_ids": [ 4253528 ], @@ -1599,8 +1603,8 @@ "coordinates": [ [ [ - -0.10162995908614385, - 51.49519903237049 + -0.10161033583923167, + 51.495192318933995 ], [ -0.1018917391223163, @@ -1619,12 +1623,12 @@ 51.49523708177237 ], [ - -0.10167432192450729, - 51.495148772877876 + -0.10165469867759509, + 51.49514205944137 ], [ - -0.10162995908614385, - 51.49519903237049 + -0.10161033583923167, + 51.495192318933995 ] ] ], @@ -1733,7 +1737,7 @@ "coordinates": [ [ [ - -0.10570147153520394, + -0.10570147009072496, 51.496490842344535 ], [ @@ -1745,11 +1749,11 @@ 51.49656213966973 ], [ - -0.10579562267497108, + -0.1057956212304921, 51.496408340370266 ], [ - -0.10570147153520394, + -0.10570147009072496, 51.496490842344535 ] ] @@ -1762,7 +1766,7 @@ "osm_way_ids": [ 238634697 ], - "src_i": 1, + "src_i": 135, "type": "road" }, "type": "Feature" @@ -2410,12 +2414,12 @@ 51.49586065884984 ], [ - -0.1046957458245784, - 51.496140677050825 + -0.10469582382644319, + 51.496140702231834 ], [ - -0.10475447545085413, - 51.4960703357046 + -0.10475455345271893, + 51.49607036088561 ], [ -0.10388923687664271, @@ -3293,8 +3297,8 @@ "coordinates": [ [ [ - -0.10579840329700317, - 51.496404771861755 + -0.10579839318565033, + 51.49640478535158 ], [ -0.10607664317112662, @@ -3305,12 +3309,12 @@ 51.49602623027038 ], [ - -0.10572771916270791, - 51.496383429159124 + -0.10572770905135506, + 51.49638344264895 ], [ - -0.10579840329700317, - 51.496404771861755 + -0.10579839318565033, + 51.49640478535158 ] ] ], @@ -3322,7 +3326,7 @@ "osm_way_ids": [ 414489467 ], - "src_i": 1, + "src_i": 135, "type": "road" }, "type": "Feature" @@ -4082,6 +4086,7 @@ "coordinates": [ [ [ +<<<<<<< HEAD -0.10091649191812044, 51.49483593662936 ], @@ -4121,6 +4126,8 @@ "coordinates": [ [ [ +======= +>>>>>>> Get rid of the transformation, and instead update geometry everywhere that's necessary. #136 -0.10100678052110118, 51.49477705893687 ], @@ -4238,24 +4245,24 @@ "coordinates": [ [ [ - -0.10121237754743559, - 51.4948529248163 + -0.10121237176951968, + 51.49485292301766 ], [ - -0.1012110096258437, - 51.494852293492464 + -0.10120992337765247, + 51.4948517934696 ], [ - -0.1011679988198034, - 51.49488841744658 + -0.10116692412744399, + 51.494887921021004 ], [ - -0.1011693667413953, - 51.49488904877042 + -0.10116937251931121, + 51.49488905056906 ], [ - -0.10121237754743559, - 51.4948529248163 + -0.10121237176951968, + 51.49485292301766 ] ] ], @@ -5147,8 +5154,8 @@ "coordinates": [ [ [ - -0.10102075729968951, - 51.49493565701693 + -0.10103822538396695, + 51.494949749388 ], [ -0.10113691796564002, @@ -5159,12 +5166,12 @@ 51.4949675397699 ], [ - -0.10114944882077165, - 51.49487382505265 + -0.1011669169050491, + 51.49488791742372 ], [ - -0.10102075729968951, - 51.49493565701693 + -0.10103822538396695, + 51.494949749388 ] ] ], @@ -5930,34 +5937,37 @@ "coordinates": [ [ [ - -0.10541904844996104, - 51.49639784888329 + -0.10541904556100308, + 51.49639785068194 ], [ - -0.10565294426394777, - 51.496473291182205 + -0.10563276344815017, + 51.49646680257613 ], [ - -0.10572771916270791, - 51.496383429159124 + -0.10570755568065805, + 51.496376944150335 ], [ - -0.10549382334872118, - 51.49630798686021 + -0.10549383779351096, + 51.49630799225614 ], [ - -0.10541904844996104, - 51.49639784888329 + -0.10541904556100308, + 51.49639785068194 ] ] ], "type": "Polygon" }, "properties": { +<<<<<<< HEAD "dst_i": 1, "layer": 0, +======= + "dst_i": 135, +>>>>>>> Get rid of the transformation, and instead update geometry everywhere that's necessary. #136 "osm_way_ids": [ - 1067864758, 1067864759 ], "src_i": 81, @@ -6214,61 +6224,6 @@ }, "type": "Feature" }, - { - "geometry": { - "coordinates": [ - [ - [ - -0.10579562267497108, - 51.496408341269586 - ], - [ - -0.10570147153520394, - 51.496490843243855 - ], - [ - -0.10570033184129053, - 51.496490339623705 - ], - [ - -0.10566950232646925, - 51.49647863225379 - ], - [ - -0.10565294426394777, - 51.496473291182205 - ], - [ - -0.10572771916270791, - 51.496383429159124 - ], - [ - -0.10579840329700317, - 51.496404771861755 - ], - [ - -0.10579562267497108, - 51.496408341269586 - ] - ] - ], - "type": "Polygon" - }, - "properties": { - "control": "Signed", - "id": 1, - "intersection_kind": "Fork", - "movements": [ - "Road #145 -> Road #42", - "Road #145 -> Road #78" - ], - "osm_node_ids": [ - 25472584 - ], - "type": "intersection" - }, - "type": "Feature" - }, { "geometry": { "coordinates": [ @@ -8988,12 +8943,16 @@ 51.49513520481136 ], [ - -0.10167432192450729, - 51.495148772877876 + -0.10165469867759509, + 51.49514205944137 + ], + [ + -0.10161033583923167, + 51.495192318933995 ], [ - -0.10162995908614385, - 51.49519903237049 + -0.10162996197510181, + 51.49519903416914 ], [ -0.10162231201443586, @@ -9385,12 +9344,12 @@ 51.49614420778782 ], [ - -0.1046957458245784, - 51.496140677050825 + -0.1046958556049807, + 51.49614067075557 ], [ - -0.10475447545085413, - 51.4960703357046 + -0.10475457656438257, + 51.49607032761071 ], [ -0.10482528525482046, @@ -9421,16 +9380,16 @@ "coordinates": [ [ [ - -0.10549382334872118, - 51.49630798686021 + -0.10549383779351096, + 51.49630799225614 ], [ - -0.10541904844996104, - 51.49639784888329 + -0.10541904556100308, + 51.49639785068194 ], [ - -0.10553006821522988, - 51.496433658074814 + -0.10553053333746071, + 51.49643381995272 ], [ -0.10542142606235835, @@ -9465,8 +9424,8 @@ 51.49629613200154 ], [ - -0.10549382334872118, - 51.49630798686021 + -0.10549383779351096, + 51.49630799225614 ] ] ], @@ -9477,8 +9436,8 @@ "id": 81, "intersection_kind": "Fork", "movements": [ - "Road #18 -> Road #145", - "Road #147 -> Road #145" + "Road #18 -> Road #146", + "Road #147 -> Road #146" ], "osm_node_ids": [ 4156272585, @@ -9735,32 +9694,20 @@ "coordinates": [ [ [ - -0.1012110096258437, - 51.49485229439179 - ], - [ - -0.1011679988198034, - 51.49488841654726 + -0.10120992915556838, + 51.49485179526825 ], [ - -0.10116691546057012, - 51.49488791652439 + -0.10116691834952808, + 51.49488791922236 ], [ - -0.10114944882077165, - 51.49487382505265 + -0.10103822538396695, + 51.494949749388 ], [ - -0.10102075729968951, - 51.49493565701693 - ], - [ - -0.10093840899764923, - 51.49486922052554 - ], - [ - -0.10091649191812044, - 51.49483593662936 + -0.1009327408621407, + 51.494864648374005 ], [ -0.10093358010442674, @@ -9771,8 +9718,8 @@ 51.49480048986448 ], [ - -0.1012110096258437, - 51.49485229439179 + -0.10120992915556838, + 51.49485179526825 ] ] ], @@ -9787,46 +9734,7 @@ ], "osm_node_ids": [ 4175070882, - 3890206831 - ], - "type": "intersection" - }, - "type": "Feature" - }, - { - "geometry": { - "coordinates": [ - [ - [ - -0.10083827771491437, - 51.49489478014762 - ], - [ - -0.10081635919090659, - 51.49486149625144 - ], - [ - -0.10086981935787165, - 51.49484784994394 - ], - [ - -0.10089173788187941, - 51.49488113384012 - ], - [ - -0.10083827771491437, - 51.49489478014762 - ] - ] - ], - "type": "Polygon" - }, - "properties": { - "control": "Signalled", - "id": 88, - "intersection_kind": "Connection", - "movements": [], - "osm_node_ids": [ + 3890206831, 7004860404 ], "type": "intersection" @@ -11600,6 +11508,66 @@ "type": "intersection" }, "type": "Feature" + }, + { + "geometry": { + "coordinates": [ + [ + [ + -0.10579562267497108, + 51.496408340370266 + ], + [ + -0.10570147153520394, + 51.496490842344535 + ], + [ + -0.10570033473024848, + 51.496490339623705 + ], + [ + -0.10566949654855334, + 51.49647863944836 + ], + [ + -0.10563276344815017, + 51.49646680257613 + ], + [ + -0.10570755568065805, + 51.496376944150335 + ], + [ + -0.10572770905135506, + 51.496383443548275 + ], + [ + -0.10579839318565033, + 51.49640478445225 + ], + [ + -0.10579562267497108, + 51.496408340370266 + ] + ] + ], + "type": "Polygon" + }, + "properties": { + "control": "Signed", + "id": 135, + "intersection_kind": "Fork", + "movements": [ + "Road #146 -> Road #42", + "Road #146 -> Road #78" + ], + "osm_node_ids": [ + 9803644606, + 25472584 + ], + "type": "intersection" + }, + "type": "Feature" } ], "type": "FeatureCollection" diff --git a/tests/src/st_georges_cycletrack/road_network.dot b/tests/src/st_georges_cycletrack/road_network.dot index be336469..76a1ca11 100644 --- a/tests/src/st_georges_cycletrack/road_network.dot +++ b/tests/src/st_georges_cycletrack/road_network.dot @@ -1,46 +1,46 @@ digraph { 0 [ label = "Slice" ] - 1 [ label = "Merge" ] - 2 [ label = "MapEdge" ] - 3 [ label = "Merge" ] - 4 [ label = "MapEdge" ] - 5 [ label = "Merge" ] - 6 [ label = "MapEdge" ] - 7 [ label = "Merge" ] - 8 [ label = "Uncontrolled RoadIntersection" ] - 9 [ label = "Slice" ] + 1 [ label = "MapEdge" ] + 2 [ label = "Merge" ] + 3 [ label = "MapEdge" ] + 4 [ label = "Merge" ] + 5 [ label = "MapEdge" ] + 6 [ label = "Merge" ] + 7 [ label = "Uncontrolled RoadIntersection" ] + 8 [ label = "Slice" ] + 9 [ label = "MapEdge" ] 10 [ label = "MapEdge" ] - 11 [ label = "MapEdge" ] + 11 [ label = "Slice" ] 12 [ label = "Slice" ] - 13 [ label = "Slice" ] - 14 [ label = "Uncontrolled RoadIntersection" ] - 15 [ label = "Terminus" ] - 16 [ label = "MapEdge" ] - 17 [ label = "Merge" ] - 18 [ label = "MapEdge" ] + 13 [ label = "Uncontrolled RoadIntersection" ] + 14 [ label = "Terminus" ] + 15 [ label = "MapEdge" ] + 16 [ label = "Merge" ] + 17 [ label = "MapEdge" ] + 18 [ label = "Slice" ] 19 [ label = "Slice" ] - 20 [ label = "Slice" ] - 21 [ label = "Uncontrolled RoadIntersection" ] - 22 [ label = "Terminus" ] - 23 [ label = "Uncontrolled RoadIntersection" ] - 24 [ label = "Slice" ] - 25 [ label = "MapEdge" ] - 26 [ label = "Uncontrolled RoadIntersection" ] - 27 [ label = "MapEdge" ] + 20 [ label = "Uncontrolled RoadIntersection" ] + 21 [ label = "Terminus" ] + 22 [ label = "Uncontrolled RoadIntersection" ] + 23 [ label = "Slice" ] + 24 [ label = "MapEdge" ] + 25 [ label = "Uncontrolled RoadIntersection" ] + 26 [ label = "MapEdge" ] + 27 [ label = "Slice" ] 28 [ label = "Slice" ] 29 [ label = "Slice" ] 30 [ label = "Slice" ] - 31 [ label = "Slice" ] - 32 [ label = "Lights RoadIntersection" ] + 31 [ label = "Lights RoadIntersection" ] + 32 [ label = "Slice" ] 33 [ label = "Slice" ] 34 [ label = "Slice" ] 35 [ label = "Slice" ] - 36 [ label = "Slice" ] - 37 [ label = "Terminus" ] - 38 [ label = "Slice" ] - 39 [ label = "Terminus" ] - 40 [ label = "Merge" ] - 41 [ label = "MapEdge" ] + 36 [ label = "Terminus" ] + 37 [ label = "Slice" ] + 38 [ label = "Terminus" ] + 39 [ label = "Merge" ] + 40 [ label = "MapEdge" ] + 41 [ label = "Slice" ] 42 [ label = "Slice" ] 43 [ label = "Slice" ] 44 [ label = "Slice" ] @@ -48,60 +48,60 @@ digraph { 46 [ label = "Slice" ] 47 [ label = "Slice" ] 48 [ label = "Slice" ] - 49 [ label = "Slice" ] - 50 [ label = "MapEdge" ] - 51 [ label = "Uncontrolled RoadIntersection" ] + 49 [ label = "MapEdge" ] + 50 [ label = "Uncontrolled RoadIntersection" ] + 51 [ label = "Slice" ] 52 [ label = "Slice" ] 53 [ label = "Slice" ] 54 [ label = "Slice" ] - 55 [ label = "Slice" ] - 56 [ label = "Terminus" ] - 57 [ label = "Slice" ] - 58 [ label = "Merge" ] + 55 [ label = "Terminus" ] + 56 [ label = "Slice" ] + 57 [ label = "Merge" ] + 58 [ label = "Terminus" ] 59 [ label = "Terminus" ] - 60 [ label = "Terminus" ] + 60 [ label = "Slice" ] 61 [ label = "Slice" ] 62 [ label = "Slice" ] 63 [ label = "Slice" ] - 64 [ label = "Slice" ] - 65 [ label = "MapEdge" ] + 64 [ label = "MapEdge" ] + 65 [ label = "Slice" ] 66 [ label = "Slice" ] - 67 [ label = "Slice" ] + 67 [ label = "Merge" ] 68 [ label = "Merge" ] - 69 [ label = "Merge" ] + 69 [ label = "Slice" ] 70 [ label = "Slice" ] 71 [ label = "Slice" ] 72 [ label = "Slice" ] - 73 [ label = "Slice" ] - 74 [ label = "Terminus" ] + 73 [ label = "Terminus" ] + 74 [ label = "Slice" ] 75 [ label = "Slice" ] 76 [ label = "Slice" ] 77 [ label = "Slice" ] 78 [ label = "Slice" ] - 79 [ label = "Slice" ] + 79 [ label = "MapEdge" ] 80 [ label = "Slice" ] - 81 [ label = "MapEdge" ] + 81 [ label = "Slice" ] 82 [ label = "Slice" ] - 83 [ label = "Slice" ] + 83 [ label = "MapEdge" ] 84 [ label = "Slice" ] - 85 [ label = "MapEdge" ] + 85 [ label = "Slice" ] 86 [ label = "Slice" ] 87 [ label = "Slice" ] - 88 [ label = "Slice" ] - 89 [ label = "Slice" ] - 90 [ label = "Uncontrolled RoadIntersection" ] - 91 [ label = "Terminus" ] + 88 [ label = "Uncontrolled RoadIntersection" ] + 89 [ label = "Terminus" ] + 90 [ label = "Slice" ] + 91 [ label = "Slice" ] 92 [ label = "Slice" ] 93 [ label = "Slice" ] 94 [ label = "Slice" ] 95 [ label = "Slice" ] - 96 [ label = "Slice" ] - 97 [ label = "Slice" ] - 98 [ label = "Uncontrolled RoadIntersection" ] - 99 [ label = "Terminus" ] - 100 [ label = "Slice" ] + 96 [ label = "Uncontrolled RoadIntersection" ] + 97 [ label = "Terminus" ] + 98 [ label = "Slice" ] + 99 [ label = "Slice" ] + 100 [ label = "MapEdge" ] 101 [ label = "Slice" ] - 102 [ label = "MapEdge" ] + 102 [ label = "Slice" ] 103 [ label = "Slice" ] 104 [ label = "Slice" ] 105 [ label = "Slice" ] @@ -115,164 +115,162 @@ digraph { 113 [ label = "Slice" ] 114 [ label = "Slice" ] 115 [ label = "Slice" ] - 116 [ label = "Slice" ] - 117 [ label = "Slice" ] - 0 -> 1 [ label = "1 lanes" ] - 2 -> 3 [ label = "2 lanes" ] - 3 -> 2 [ label = "2 lanes" ] - 4 -> 26 [ label = "2 lanes" ] - 26 -> 4 [ label = "2 lanes" ] - 26 -> 5 [ label = "2 lanes" ] - 5 -> 26 [ label = "2 lanes" ] - 6 -> 98 [ label = "2 lanes" ] - 98 -> 6 [ label = "2 lanes" ] - 98 -> 7 [ label = "2 lanes" ] - 7 -> 98 [ label = "2 lanes" ] - 8 -> 9 [ label = "2 lanes" ] - 9 -> 8 [ label = "2 lanes" ] - 10 -> 68 [ label = "3 lanes" ] - 11 -> 20 [ label = "1 lanes" ] - 20 -> 13 [ label = "1 lanes" ] - 13 -> 38 [ label = "1 lanes" ] - 38 -> 12 [ label = "1 lanes" ] - 14 -> 66 [ label = "2 lanes" ] - 66 -> 14 [ label = "2 lanes" ] - 66 -> 111 [ label = "2 lanes" ] - 111 -> 66 [ label = "2 lanes" ] - 111 -> 15 [ label = "2 lanes" ] - 15 -> 111 [ label = "2 lanes" ] + 116 [ label = "Merge" ] + 0 -> 116 [ label = "1 lanes" ] + 1 -> 2 [ label = "2 lanes" ] + 2 -> 1 [ label = "2 lanes" ] + 3 -> 25 [ label = "2 lanes" ] + 25 -> 3 [ label = "2 lanes" ] + 25 -> 4 [ label = "2 lanes" ] + 4 -> 25 [ label = "2 lanes" ] + 5 -> 96 [ label = "2 lanes" ] + 96 -> 5 [ label = "2 lanes" ] + 96 -> 6 [ label = "2 lanes" ] + 6 -> 96 [ label = "2 lanes" ] + 7 -> 8 [ label = "2 lanes" ] + 8 -> 7 [ label = "2 lanes" ] + 9 -> 67 [ label = "3 lanes" ] + 10 -> 19 [ label = "1 lanes" ] + 19 -> 12 [ label = "1 lanes" ] + 12 -> 37 [ label = "1 lanes" ] + 37 -> 11 [ label = "1 lanes" ] + 13 -> 65 [ label = "2 lanes" ] + 65 -> 13 [ label = "2 lanes" ] + 65 -> 109 [ label = "2 lanes" ] + 109 -> 65 [ label = "2 lanes" ] + 109 -> 14 [ label = "2 lanes" ] + 14 -> 109 [ label = "2 lanes" ] + 15 -> 68 [ label = "3 lanes" ] 16 -> 69 [ label = "3 lanes" ] - 17 -> 70 [ label = "3 lanes" ] - 70 -> 18 [ label = "3 lanes" ] - 19 -> 20 [ label = "1 lanes" ] - 21 -> 67 [ label = "1 lanes" ] - 67 -> 21 [ label = "1 lanes" ] - 67 -> 22 [ label = "1 lanes" ] - 22 -> 67 [ label = "1 lanes" ] - 23 -> 24 [ label = "5 lanes" ] - 25 -> 75 [ label = "5 lanes" ] - 26 -> 27 [ label = "1 lanes" ] - 27 -> 26 [ label = "1 lanes" ] - 13 -> 28 [ label = "1 lanes" ] - 29 -> 116 [ label = "1 lanes" ] - 116 -> 113 [ label = "1 lanes" ] - 113 -> 115 [ label = "1 lanes" ] - 115 -> 29 [ label = "1 lanes" ] - 30 -> 31 [ label = "2 lanes" ] - 32 -> 33 [ label = "2 lanes" ] - 34 -> 35 [ label = "4 lanes" ] - 61 -> 7 [ label = "3 lanes" ] - 7 -> 8 [ label = "3 lanes" ] - 36 -> 37 [ label = "5 lanes" ] - 1 -> 17 [ label = "5 lanes" ] - 17 -> 100 [ label = "5 lanes" ] - 100 -> 38 [ label = "5 lanes" ] - 38 -> 34 [ label = "5 lanes" ] - 39 -> 90 [ label = "3 lanes" ] - 90 -> 40 [ label = "3 lanes" ] - 41 -> 51 [ label = "2 lanes" ] - 51 -> 41 [ label = "2 lanes" ] - 51 -> 42 [ label = "2 lanes" ] - 42 -> 51 [ label = "2 lanes" ] - 43 -> 32 [ label = "2 lanes" ] - 32 -> 43 [ label = "2 lanes" ] - 44 -> 45 [ label = "1 lanes" ] - 46 -> 44 [ label = "1 lanes" ] - 44 -> 47 [ label = "1 lanes" ] - 48 -> 86 [ label = "1 lanes" ] - 86 -> 49 [ label = "1 lanes" ] - 50 -> 51 [ label = "2 lanes" ] - 51 -> 50 [ label = "2 lanes" ] - 52 -> 53 [ label = "1 lanes" ] - 21 -> 68 [ label = "4 lanes" ] - 68 -> 40 [ label = "4 lanes" ] - 9 -> 54 [ label = "2 lanes" ] - 55 -> 35 [ label = "1 lanes" ] - 56 -> 57 [ label = "2 lanes" ] - 57 -> 56 [ label = "2 lanes" ] - 58 -> 23 [ label = "3 lanes" ] - 58 -> 59 [ label = "2 lanes" ] - 60 -> 58 [ label = "2 lanes" ] - 23 -> 61 [ label = "3 lanes" ] - 62 -> 71 [ label = "2 lanes" ] - 71 -> 95 [ label = "2 lanes" ] - 95 -> 9 [ label = "2 lanes" ] - 62 -> 24 [ label = "1 lanes" ] - 29 -> 63 [ label = "1 lanes" ] - 64 -> 29 [ label = "1 lanes" ] - 63 -> 117 [ label = "1 lanes" ] - 117 -> 112 [ label = "1 lanes" ] - 112 -> 114 [ label = "1 lanes" ] - 114 -> 63 [ label = "1 lanes" ] - 1 -> 19 [ label = "3 lanes" ] - 19 -> 65 [ label = "3 lanes" ] - 54 -> 66 [ label = "2 lanes" ] - 66 -> 72 [ label = "2 lanes" ] - 72 -> 67 [ label = "2 lanes" ] - 67 -> 68 [ label = "2 lanes" ] - 68 -> 73 [ label = "2 lanes" ] - 73 -> 69 [ label = "2 lanes" ] - 69 -> 0 [ label = "2 lanes" ] - 0 -> 70 [ label = "2 lanes" ] - 70 -> 101 [ label = "2 lanes" ] - 101 -> 12 [ label = "2 lanes" ] - 12 -> 55 [ label = "2 lanes" ] - 55 -> 43 [ label = "2 lanes" ] - 71 -> 7 [ label = "1 lanes" ] - 3 -> 72 [ label = "2 lanes" ] - 40 -> 73 [ label = "1 lanes" ] - 5 -> 54 [ label = "2 lanes" ] - 9 -> 74 [ label = "2 lanes" ] - 74 -> 9 [ label = "2 lanes" ] - 75 -> 76 [ label = "2 lanes" ] - 77 -> 103 [ label = "1 lanes" ] - 103 -> 82 [ label = "1 lanes" ] - 82 -> 78 [ label = "1 lanes" ] - 79 -> 75 [ label = "2 lanes" ] - 32 -> 80 [ label = "2 lanes" ] - 81 -> 82 [ label = "1 lanes" ] - 82 -> 79 [ label = "1 lanes" ] - 42 -> 31 [ label = "1 lanes" ] - 83 -> 89 [ label = "1 lanes" ] - 89 -> 84 [ label = "1 lanes" ] - 57 -> 43 [ label = "3 lanes" ] - 43 -> 57 [ label = "2 lanes" ] - 80 -> 30 [ label = "2 lanes" ] - 42 -> 30 [ label = "2 lanes" ] - 30 -> 42 [ label = "2 lanes" ] + 69 -> 17 [ label = "3 lanes" ] + 18 -> 19 [ label = "1 lanes" ] + 20 -> 66 [ label = "1 lanes" ] + 66 -> 20 [ label = "1 lanes" ] + 66 -> 21 [ label = "1 lanes" ] + 21 -> 66 [ label = "1 lanes" ] + 22 -> 23 [ label = "5 lanes" ] + 24 -> 74 [ label = "5 lanes" ] + 25 -> 26 [ label = "1 lanes" ] + 26 -> 25 [ label = "1 lanes" ] + 12 -> 27 [ label = "1 lanes" ] + 28 -> 114 [ label = "1 lanes" ] + 114 -> 111 [ label = "1 lanes" ] + 111 -> 113 [ label = "1 lanes" ] + 113 -> 28 [ label = "1 lanes" ] + 29 -> 30 [ label = "2 lanes" ] 31 -> 32 [ label = "2 lanes" ] - 33 -> 85 [ label = "3 lanes" ] - 35 -> 32 [ label = "4 lanes" ] + 33 -> 34 [ label = "4 lanes" ] + 60 -> 6 [ label = "3 lanes" ] + 6 -> 7 [ label = "3 lanes" ] + 35 -> 36 [ label = "5 lanes" ] + 116 -> 16 [ label = "5 lanes" ] + 16 -> 98 [ label = "5 lanes" ] + 98 -> 37 [ label = "5 lanes" ] + 37 -> 33 [ label = "5 lanes" ] + 38 -> 88 [ label = "3 lanes" ] + 88 -> 39 [ label = "3 lanes" ] + 40 -> 50 [ label = "2 lanes" ] + 50 -> 40 [ label = "2 lanes" ] + 50 -> 41 [ label = "2 lanes" ] + 41 -> 50 [ label = "2 lanes" ] + 42 -> 31 [ label = "2 lanes" ] + 31 -> 42 [ label = "2 lanes" ] + 43 -> 44 [ label = "1 lanes" ] + 45 -> 43 [ label = "1 lanes" ] + 43 -> 46 [ label = "1 lanes" ] + 47 -> 84 [ label = "1 lanes" ] + 84 -> 48 [ label = "1 lanes" ] + 49 -> 50 [ label = "2 lanes" ] + 50 -> 49 [ label = "2 lanes" ] + 51 -> 52 [ label = "1 lanes" ] + 20 -> 67 [ label = "4 lanes" ] + 67 -> 39 [ label = "4 lanes" ] + 8 -> 53 [ label = "2 lanes" ] + 54 -> 34 [ label = "1 lanes" ] + 55 -> 56 [ label = "2 lanes" ] + 56 -> 55 [ label = "2 lanes" ] + 57 -> 22 [ label = "3 lanes" ] + 57 -> 58 [ label = "2 lanes" ] + 59 -> 57 [ label = "2 lanes" ] + 22 -> 60 [ label = "3 lanes" ] + 61 -> 70 [ label = "2 lanes" ] + 70 -> 93 [ label = "2 lanes" ] + 93 -> 8 [ label = "2 lanes" ] + 61 -> 23 [ label = "1 lanes" ] + 28 -> 62 [ label = "1 lanes" ] + 63 -> 28 [ label = "1 lanes" ] + 62 -> 115 [ label = "1 lanes" ] + 115 -> 110 [ label = "1 lanes" ] + 110 -> 112 [ label = "1 lanes" ] + 112 -> 62 [ label = "1 lanes" ] + 116 -> 18 [ label = "3 lanes" ] + 18 -> 64 [ label = "3 lanes" ] + 53 -> 65 [ label = "2 lanes" ] + 65 -> 71 [ label = "2 lanes" ] + 71 -> 66 [ label = "2 lanes" ] + 66 -> 67 [ label = "2 lanes" ] + 67 -> 72 [ label = "2 lanes" ] + 72 -> 68 [ label = "2 lanes" ] + 68 -> 0 [ label = "2 lanes" ] + 0 -> 69 [ label = "2 lanes" ] + 69 -> 99 [ label = "2 lanes" ] + 99 -> 11 [ label = "2 lanes" ] + 11 -> 54 [ label = "2 lanes" ] + 54 -> 42 [ label = "2 lanes" ] + 70 -> 6 [ label = "1 lanes" ] + 2 -> 71 [ label = "2 lanes" ] + 39 -> 72 [ label = "1 lanes" ] + 4 -> 53 [ label = "2 lanes" ] + 8 -> 73 [ label = "2 lanes" ] + 73 -> 8 [ label = "2 lanes" ] + 75 -> 101 [ label = "1 lanes" ] + 101 -> 80 [ label = "1 lanes" ] + 80 -> 76 [ label = "1 lanes" ] + 77 -> 74 [ label = "2 lanes" ] + 31 -> 78 [ label = "2 lanes" ] + 79 -> 80 [ label = "1 lanes" ] + 80 -> 77 [ label = "1 lanes" ] + 41 -> 30 [ label = "1 lanes" ] + 81 -> 87 [ label = "1 lanes" ] + 87 -> 82 [ label = "1 lanes" ] + 56 -> 42 [ label = "3 lanes" ] + 42 -> 56 [ label = "2 lanes" ] + 78 -> 29 [ label = "2 lanes" ] + 41 -> 29 [ label = "2 lanes" ] + 29 -> 41 [ label = "2 lanes" ] + 30 -> 31 [ label = "2 lanes" ] + 32 -> 83 [ label = "3 lanes" ] + 34 -> 31 [ label = "4 lanes" ] + 84 -> 85 [ label = "1 lanes" ] 86 -> 87 [ label = "1 lanes" ] 88 -> 89 [ label = "1 lanes" ] + 89 -> 88 [ label = "1 lanes" ] + 60 -> 77 [ label = "2 lanes" ] + 61 -> 60 [ label = "2 lanes" ] 90 -> 91 [ label = "1 lanes" ] - 91 -> 90 [ label = "1 lanes" ] - 61 -> 79 [ label = "2 lanes" ] - 62 -> 61 [ label = "2 lanes" ] - 92 -> 93 [ label = "1 lanes" ] - 61 -> 94 [ label = "1 lanes" ] - 75 -> 23 [ label = "5 lanes" ] - 7 -> 95 [ label = "1 lanes" ] + 60 -> 92 [ label = "1 lanes" ] + 74 -> 22 [ label = "5 lanes" ] + 6 -> 93 [ label = "1 lanes" ] + 94 -> 95 [ label = "1 lanes" ] + 106 -> 58 [ label = "1 lanes" ] + 23 -> 35 [ label = "5 lanes" ] 96 -> 97 [ label = "1 lanes" ] - 108 -> 59 [ label = "1 lanes" ] - 24 -> 36 [ label = "5 lanes" ] - 98 -> 99 [ label = "1 lanes" ] - 99 -> 98 [ label = "1 lanes" ] - 100 -> 101 [ label = "2 lanes" ] + 97 -> 96 [ label = "1 lanes" ] + 98 -> 99 [ label = "2 lanes" ] + 100 -> 101 [ label = "1 lanes" ] 102 -> 103 [ label = "1 lanes" ] 104 -> 105 [ label = "1 lanes" ] - 106 -> 107 [ label = "1 lanes" ] - 60 -> 108 [ label = "1 lanes" ] - 109 -> 110 [ label = "1 lanes" ] - 110 -> 22 [ label = "1 lanes" ] + 59 -> 106 [ label = "1 lanes" ] + 107 -> 108 [ label = "1 lanes" ] + 108 -> 21 [ label = "1 lanes" ] + 108 -> 109 [ label = "1 lanes" ] 110 -> 111 [ label = "1 lanes" ] 112 -> 113 [ label = "1 lanes" ] 114 -> 115 [ label = "1 lanes" ] - 116 -> 117 [ label = "1 lanes" ] - 69 -> 1 [ label = "5 lanes" ] - 40 -> 69 [ label = "4 lanes" ] - 14 -> 3 [ label = "4 lanes" ] - 5 -> 14 [ label = "4 lanes" ] - 8 -> 5 [ label = "4 lanes" ] - 3 -> 21 [ label = "4 lanes" ] + 68 -> 116 [ label = "5 lanes" ] + 39 -> 68 [ label = "4 lanes" ] + 13 -> 2 [ label = "4 lanes" ] + 4 -> 13 [ label = "4 lanes" ] + 7 -> 4 [ label = "4 lanes" ] + 2 -> 20 [ label = "4 lanes" ] }