Skip to content

Commit d469c6f

Browse files
authored
Merge pull request #156 from napakalas/issue-#154
Update regarding the use of key argument at min() method
2 parents 9c646b7 + e418ddd commit d469c6f

1 file changed

Lines changed: 17 additions & 13 deletions

File tree

‎mapmaker/routing/__init__.py‎

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -986,7 +986,7 @@ def add_route_edges_from_graph(G, used_nodes):
986986
candidates[(n,s)] = nf.geometry.centroid.distance(sf.geometry.centroid)
987987
tmp_edge_dicts[(n,s)] = edge_dict
988988
if len(candidates) > 0:
989-
selected_c = min(candidates, key=candidates.get) # type: ignore
989+
selected_c = min(candidates, key=lambda k: candidates[k])
990990
neighbouring_ids.update([selected_c[0]])
991991
closest_feature_dict[selected_c[0]] = selected_c[1]
992992
for n_id in neighbouring_ids:
@@ -1067,16 +1067,20 @@ def get_centreline_from_containing_features(start_dict, end_dict, feature_ids: s
10671067
if se_dict.get('type') == 'segment' and \
10681068
len(se_dict.get('used', {})) > 0 and \
10691069
len(se_dict.get('used', {}) & set(properties['subgraph'].nodes)) == 0:
1070-
candidates= {(n, s):self.__flatmap.get_feature(n).geometry.centroid.distance(self.__flatmap.get_feature(s).geometry.centroid)
1071-
for n, s in itertools.product(se_dict.get('used', set()), properties['subgraph'].nodes)}
1072-
if len(candidates) > 0:
1073-
if len(selected:=min(candidates, key=candidates.get)) == 2:
1074-
for n, s in itertools.product([se_dict['node']], used_nodes):
1075-
if (n, s) in connectivity_graph.edges:
1076-
edge_dict = connectivity_graph.edges[(n, s)]
1077-
tmp_edge_dicts[selected] = edge_dict
1078-
new_direct_edges.update([selected])
1079-
break
1070+
candidates = {
1071+
(n, s): f_n.geometry.centroid.distance(f_s.geometry.centroid)
1072+
for n, s in itertools.product(se_dict.get('used', set()), properties['subgraph'].nodes)
1073+
if (f_n := self.__flatmap.get_feature(n)) is not None
1074+
and (f_s := self.__flatmap.get_feature(s)) is not None
1075+
}
1076+
if candidates:
1077+
selected = min(candidates, key=lambda k: candidates[k])
1078+
for n, s in itertools.product([se_dict['node']], used_nodes):
1079+
if (n, s) in connectivity_graph.edges:
1080+
edge_dict = connectivity_graph.edges[(n, s)]
1081+
tmp_edge_dicts[selected] = edge_dict
1082+
new_direct_edges.update([selected])
1083+
break
10801084

10811085
for ends, list_path_nodes in graph_utils.connected_paths(connectivity_graph).items():
10821086
for path_nodes in list_path_nodes:
@@ -1107,7 +1111,7 @@ def get_centreline_from_containing_features(start_dict, end_dict, feature_ids: s
11071111
candidates[(n,s)] = nf.geometry.centroid.distance(sf.geometry.centroid)
11081112
tmp_edge_dicts[(n,s)] = edge_dict
11091113
if len(candidates) > 0:
1110-
new_direct_edges.update([min(candidates, key=candidates.get)]) # type: ignore
1114+
new_direct_edges.update([min(candidates, key=lambda k: candidates[k])])
11111115
elif ((p_dict:=connectivity_graph.nodes[prev_node])['type'] == 'feature' and
11121116
(n_dict:=connectivity_graph.nodes[node])['type'] == 'feature'):
11131117
if ((pf:=list(p_dict.get('features'))[0].id) in route_graph.nodes and
@@ -1173,7 +1177,7 @@ def get_node_feature(node_dict, neighbour_features, used_features) -> Feature:
11731177
for nf in neighbour_features:
11741178
distances += [nf.geometry.centroid.distance(f.geometry.centroid)]
11751179
feature_distances[f] = sum(distances)/len(distances)
1176-
selected_feature = min(feature_distances, key=feature_distances.get) # type: ignore
1180+
selected_feature = min(feature_distances, key=lambda k: feature_distances[k])
11771181
else:
11781182
prev_features = [feature for features in used_features.values() for feature in features]
11791183
if len(prev_features) > 0 and len(features) > 1:

0 commit comments

Comments
 (0)