summaryrefslogtreecommitdiffstats
path: root/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'server.py')
-rw-r--r--server.py33
1 files changed, 21 insertions, 12 deletions
diff --git a/server.py b/server.py
index 90e135e..8055e63 100644
--- a/server.py
+++ b/server.py
@@ -4,17 +4,17 @@ import algorithms
import store
from lib import run_server, get, post, read_html
-grid = None
+grids = None
nodes = None
unconnected_nodes = None
@get('/')
def index():
global nodes
- global grid
+ global grids
global unconnected_nodes
- nodes, grid, unconnected_nodes = store.extract_osm_nodes("linkoping.osm")
+ nodes, grids, unconnected_nodes = store.extract_osm_nodes("linkoping.osm")
return read_html('templates/index.html')
@@ -22,9 +22,10 @@ def index():
@get('/show-area')
def show_area():
rect = dict()
+ # FIXME: Don't hardcode bikes maybe? Maybe just remove this altogether
for (k, node) in enumerate(
- store.select_nodes_in_rectangle(nodes, 58.3984, 58.3990, 15.5733,
- 15.576)):
+ store.select_nodes_in_rectangle(nodes['bike'], 58.3984, 58.3990,
+ 15.5733, 15.576)):
rect[node.id] = node.coord_tuple()
return json.dumps(rect)
@@ -41,21 +42,29 @@ def favicon():
@get('/show-unconnected-nodes')
def show_unconnected_nodes():
print(f"Showing {len(unconnected_nodes)} unconnected nodes")
- return json.dumps({node.id: node.coord_tuple() for node in unconnected_nodes})
+ return json.dumps({
+ node.id: node.coord_tuple() for node in unconnected_nodes['bike']
+ })
@post('/shortest-path')
def shortest_path(body):
body = json.loads(body)
- source_id = algorithms.grid_search(grid,
+ transport_mode = body['transport_mode']
+
+ relevant_grid = grids[transport_mode]
+
+ source_id = algorithms.grid_search(relevant_grid,
store.Node(-1, body['lat1'],
- body['lng1']))
- target_id = algorithms.grid_search(grid,
+ body['lng1']))
+ target_id = algorithms.grid_search(relevant_grid,
store.Node(-1, body['lat2'],
- body['lng2']))
+ body['lng2']))
+
+ relevant_nodes = nodes[transport_mode]
- path = algorithms.find_shortest_path(nodes, source_id, target_id)
- response = {"path": [(nodes[node].lat, nodes[node].lng) for node in path]}
+ path = algorithms.find_shortest_path(nodes[transport_mode], source_id, target_id)
+ response = {"path": [(relevant_nodes[node].lat, relevant_nodes[node].lng) for node in path]}
return json.dumps(response)