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