From 61d226f97c423e96c5cb72519fbec230af380565 Mon Sep 17 00:00:00 2001
From: "niehues.mark@gmail.com" <niehues.mark@gmail.com>
Date: Mon, 27 Apr 2020 12:46:06 +0200
Subject: [PATCH] minor

---
 data.py                         | 11 ++++++++---
 evrouting/gasstation/routing.py |  3 +++
 evrouting/osm/imports.py        | 10 +++++++---
 evrouting/osm/routing.py        | 11 +++++++++--
 4 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/data.py b/data.py
index c996a5c..2189edf 100644
--- a/data.py
+++ b/data.py
@@ -76,15 +76,20 @@ if __name__ == '__main__':
         type=float,
         nargs=4,
         metavar=('lat_nw', 'lon_nw', 'lat_se', 'lon_se'),
-        default=[None, None, None, None],
         help='Use only those charging stations that are located with in a '
              'rectangle defined by the north-west and south-east coordinates.'
     )
 
     args = parser.parse_args()
 
+    nw_corner = None
+    se_corner = None
+    if args.cut:
+        nw_corner = args.cut[:2]
+        se_corner = args.cut[2:]
+
     parse_charging_stations_csv(
         args.input_path,
-        nw_corner=args.cut[:2],
-        se_corner=args.cut[2:]
+        nw_corner=nw_corner,
+        se_corner=se_corner
     ).to_json(args.dest_path, orient='records')
diff --git a/evrouting/gasstation/routing.py b/evrouting/gasstation/routing.py
index 7171caa..a898669 100644
--- a/evrouting/gasstation/routing.py
+++ b/evrouting/gasstation/routing.py
@@ -101,6 +101,9 @@ def contract_graph(G: nx.Graph, charging_stations: Set[Node], capacity: SoC,
     """
     H: nx.Graph = nx.Graph()
 
+    if not charging_stations:
+        return H
+
     all_cs = list(charging_stations)
     for i in range(len(all_cs) - 1):
         cs = all_cs[i]
diff --git a/evrouting/osm/imports.py b/evrouting/osm/imports.py
index 06d2bd7..e14d10c 100644
--- a/evrouting/osm/imports.py
+++ b/evrouting/osm/imports.py
@@ -39,13 +39,17 @@ def query_url(service, coordinates, osrm_config: OsrmConf):
 
 
 def insert_charging_stations(G, charging_stations):
+    """Insert Charging Stations"""
+    S = set()
     for s in charging_stations:
         lon = s['lon']
         lat = s['lat']
-        n = find_nearest(G, (lat, lon))
-        G.nodes[n][CHARGING_COEFFICIENT_KEY] = s['power']
+        n = find_nearest(G, (lat, lon), distance_limit=500)
+        if n:
+            G.nodes[n][CHARGING_COEFFICIENT_KEY] = s['power']
+            S.add(n)
 
-    return G
+    return S
 
 
 class OsrmDistance:
diff --git a/evrouting/osm/routing.py b/evrouting/osm/routing.py
index e030986..fbf877a 100644
--- a/evrouting/osm/routing.py
+++ b/evrouting/osm/routing.py
@@ -30,7 +30,11 @@ def haversine_distance(lon1, lat1, lon2, lat2, unit_m=True):
     return c * r
 
 
-def find_nearest(G, v: point):
+def find_nearest(G, v: point, distance_limit=None):
+    """
+    Find nearest point to location v within radius
+    of distance_limit.
+    """
     min_dist = None
     closest_node = None
 
@@ -48,7 +52,10 @@ def find_nearest(G, v: point):
             closest_node = n
             min_dist = d
 
-    return closest_node
+    if distance_limit:
+        return closest_node if min_dist <= distance_limit else None
+    else:
+        return closest_node
 
 
 def shortest_path(G, s: point, t: point, profile):
-- 
GitLab