From 325f2078c37bc073fff964946a2ce643d181fa3d Mon Sep 17 00:00:00 2001 From: Max Bringemo Date: Mon, 14 Dec 2020 21:08:59 +0100 Subject: Grid search --- store.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'store.py') diff --git a/store.py b/store.py index 4af13ef..315b836 100644 --- a/store.py +++ b/store.py @@ -1,4 +1,5 @@ from osm_parser import get_default_parser +from collections import defaultdict class Node: @@ -36,18 +37,32 @@ def extract_osm_nodes(f_name): global parser parser = get_default_parser(f_name) nodes = dict() + grid = defaultdict() for node in parser.iter_nodes(): - nodes[node['id']] = Node(node['id'], node['lat'], node['lon']) + new_node = Node(node['id'], node['lat'], node['lon']) + nodes[node['id']] = new_node add_neighbours(nodes) - # remove nodes without neighbours + # remove nodes without neighbours. for node_id, node in nodes.copy().items(): if not node.neighbours: del nodes[node_id] - return nodes + # create a "grid" by grouping nearby nodes. + for node in nodes.copy().values(): + + key = (int(round(node.lat, 3) * 1000), int(round(node.lng, 3) + * 1000)) + + if key in grid.keys(): + grid[key].append(node) + + else: + grid[key] = [node] + + return nodes, grid def select_nodes_in_rectangle(nodes, min_lat, max_lat, min_long, max_long): -- cgit v1.2.1