summaryrefslogtreecommitdiffstats
path: root/store.py
diff options
context:
space:
mode:
authorMax Bringemo <maxbr167@student.liu.se>2020-12-14 21:08:59 +0100
committerStefan Hansson <steha708@student.liu.se>2020-12-14 21:08:59 +0100
commit325f2078c37bc073fff964946a2ce643d181fa3d (patch)
treeba07a6e94989ef44335619f1547e521280461a61 /store.py
parent542aa50ad4bae5e719bcffc9265a15824a444284 (diff)
downloadtdde25-325f2078c37bc073fff964946a2ce643d181fa3d.tar.gz
Grid search
Diffstat (limited to 'store.py')
-rw-r--r--store.py21
1 files changed, 18 insertions, 3 deletions
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):