diff options
Diffstat (limited to 'store.py')
| -rw-r--r-- | store.py | 21 |
1 files changed, 18 insertions, 3 deletions
@@ -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): |
