From 06bd8967c8af6093676018a3c768632810e12544 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 28 Nov 2017 23:25:56 +0100 Subject: [PATCH] show node_addition in route --- src/c3nav/routing/route.py | 20 ++++++++++++++++---- src/c3nav/routing/router.py | 11 ++++++++--- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/c3nav/routing/route.py b/src/c3nav/routing/route.py index 231dc0cd..c212c07a 100644 --- a/src/c3nav/routing/route.py +++ b/src/c3nav/routing/route.py @@ -18,21 +18,33 @@ def describe_location(location, locations): class Route: - def __init__(self, router, origin, destination, distance, path_nodes): + def __init__(self, router, origin, destination, distance, path_nodes, origin_addition, destination_addition): self.router = router self.origin = origin self.destination = destination self.distance = distance self.path_nodes = path_nodes + self.origin_addition = origin_addition + self.destination_addition = destination_addition def serialize(self, locations): + nodes = [[node, None] for node in self.path_nodes] + if self.origin_addition: + nodes.insert(0, (self.origin_addition[0], None)) + nodes[1][1] = self.origin_addition[1] + if self.destination_addition: + nodes.append(self.destination_addition) + items = deque() last_node = None last_item = None distance = 0 - for i, node in enumerate(self.path_nodes): - edge = self.router.edges[last_node, node] if last_node else None - item = RouteItem(self, self.router.nodes[node], edge, last_item) + for i, (node, edge) in enumerate(nodes): + if edge is None: + print(i) + edge = self.router.edges[last_node, node] if last_node else None + node_obj = self.router.nodes[node] if isinstance(node, (int, np.int32, np.int64)) else node + item = RouteItem(self, node_obj, edge, last_item) if edge: distance += edge.distance items.append(item) diff --git a/src/c3nav/routing/router.py b/src/c3nav/routing/router.py index 61c1966b..1cf05c90 100644 --- a/src/c3nav/routing/router.py +++ b/src/c3nav/routing/router.py @@ -267,7 +267,12 @@ class Router: path_nodes.appendleft(last_node) path_nodes = tuple(path_nodes) - return Route(self, origin, destination, distances[origin_node, destination_node], path_nodes) + origin_addition = origin.nodes_addition.get(origin_node) + destination_addition = destination.nodes_addition.get(destination_node) + print(origin_addition, destination_addition) + + return Route(self, origin, destination, distances[origin_node, destination_node], path_nodes, + origin_addition, destination_addition) class BaseRouterProxy: @@ -350,11 +355,11 @@ class RouterAltitudeArea: node = all_nodes[node] line = LineString([(node.x, node.y), (point.x, point.y)]) if line.length < 5 and not self.clear_geometry_prep.crosses(line): - nodes[node.i] = None + nodes[node.i] = (None, None) if not nodes: nearest_node = min(tuple(all_nodes[node] for node in self.nodes), key=lambda node: point.distance(node.point)) - nodes[nearest_node.i] = None + nodes[nearest_node.i] = (None, None) else: nodes = self.fallback_nodes return nodes