From d429f09e7e3bc8173e765aba8a91f2440c99a324 Mon Sep 17 00:00:00 2001 From: Stefan Hansson Date: Thu, 5 Nov 2020 15:10:55 +0100 Subject: Implement finding nearest nodes to start and end positions --- store.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'store.py') diff --git a/store.py b/store.py index 3d91f5b..e03ae77 100644 --- a/store.py +++ b/store.py @@ -6,22 +6,45 @@ class Node: self.id = id self.lat = float(lat) self.lng = float(lng) + self.neighbors = [] + def coord_tuple(self): return self.lat, self.lng parser = None # Have a global reusable parser object +nodes = None + + +def add_neighbours(nodes): + for way in parser.iter_ways(): + if 'highway' not in way['tags']: + continue + + road = way['road'] + + for i in range(len(road) - 1): + node1 = road[i] + node2 = road[i + 1] + + nodes[node1].neighbors.append(nodes[node2]) + nodes[node2].neighbors.append(nodes[node1]) + + return nodes def extract_osm_nodes(f_name): global parser + global nodes parser = get_default_parser(f_name) nodes = dict() for node in parser.iter_nodes(): nodes[node['id']] = Node(node['id'], node['lat'], node['lon']) + add_neighbours(nodes) + return nodes -- cgit v1.2.1