@@ -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