diff --git a/backend/app/get_centreline_node.py b/backend/app/get_centreline_node.py index a2ed0fd..91ee734 100644 --- a/backend/app/get_centreline_node.py +++ b/backend/app/get_centreline_node.py @@ -2,7 +2,7 @@ import json from app.db import getConnection -from app.get_nearest_centreline_node import get_nearest_centreline_node +from app.get_nearest_here_nodes import get_here_nodes_within SQL = ''' SELECT @@ -31,9 +31,11 @@ def get_centreline_node(node_id, conflate_with_here=False): if conflate_with_here: lon = node['geometry']['coordinates'][0] lat = node['geometry']['coordinates'][1] - node['conflated'] = { - # TODO should be Here - 'centreline': get_nearest_centreline_node(lon, lat) - } + try: + node['conflated'] = { + 'here': get_here_nodes_within(50, lon, lat, 1)[0] + } + except: + pass connection.close() return node diff --git a/backend/app/get_closest_nodes.py b/backend/app/get_nearest_here_nodes.py similarity index 86% rename from backend/app/get_closest_nodes.py rename to backend/app/get_nearest_here_nodes.py index a1add95..cd47c3c 100644 --- a/backend/app/get_closest_nodes.py +++ b/backend/app/get_nearest_here_nodes.py @@ -1,5 +1,3 @@ -"""Return intersection(s) near a provided coordinate""" - import json from app.db import getConnection @@ -16,13 +14,14 @@ cg_nodes.node_id, cg_nodes.geom ORDER BY distance -LIMIT 20; +LIMIT %(limit)s; ''' -def get_nodes_within(meters,longitude, latitude): +def get_here_nodes_within(meters, longitude, latitude, limit=20): + """Return intersection(s) near a provided coordinate""" with getConnection() as connection: with connection.cursor() as cursor: - cursor.execute(SQL, {"latitude": latitude, "longitude": longitude}) + cursor.execute(SQL, {"latitude": latitude, "longitude": longitude, 'limit': limit}) candidate_nodes = [] for node_id, geojson, distance, street_names in cursor.fetchall(): if distance <= meters: diff --git a/backend/app/routes.py b/backend/app/routes.py index 75480d2..79de6ef 100644 --- a/backend/app/routes.py +++ b/backend/app/routes.py @@ -3,7 +3,7 @@ from flask import jsonify, request from app import app from app.db import getConnection -from app.get_closest_nodes import get_nodes_within +from app.get_nearest_here_nodes import get_here_nodes_within from app.get_here_node import get_here_node from app.get_centreline_node import get_centreline_node from app.get_travel_time import get_travel_time @@ -33,7 +33,7 @@ def version(): 'git-HEAD': getGitHash() }) -# test URL /closest-node/-79.3400/43.6610 +# test URL /nodes-within/50/-79.3400/43.6610 @app.route('/nodes-within///', methods=['GET']) def closest_node(meters, longitude, latitude): """Return up to 20 nodes within a given radius (in meters) of a point. @@ -51,7 +51,7 @@ def closest_node(meters, longitude, latitude): meters = float(meters) except: return jsonify({'error': "all inputs must be decimal numbers"}) - return jsonify(get_nodes_within(meters,longitude,latitude)) + return jsonify(get_here_nodes_within(meters,longitude,latitude)) # test URL /node/here/30357505 @app.route('/node/', endpoint='generic') # will be deprecated