show node_addition in route

This commit is contained in:
Laura Klünder 2017-11-28 23:25:56 +01:00
parent b92c871bc2
commit 06bd8967c8
2 changed files with 24 additions and 7 deletions

View file

@ -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)

View file

@ -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