diff options
Diffstat (limited to 'ero1/src/generation/suburb_snowplow_generation.py')
| -rw-r--r-- | ero1/src/generation/suburb_snowplow_generation.py | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/ero1/src/generation/suburb_snowplow_generation.py b/ero1/src/generation/suburb_snowplow_generation.py new file mode 100644 index 0000000..156bdda --- /dev/null +++ b/ero1/src/generation/suburb_snowplow_generation.py @@ -0,0 +1,88 @@ +import networkx as nx +from src.generation.graph_generation import generate_graph +from src.helper.export_import_yaml import load_paths_from_yaml +import osmnx as ox + +arrondissements = [ + 'Anjou', + 'Le Plateau-Mont-Royal', + 'Outremont', + 'Rivière-des-Prairies–Pointe-aux-Trembles', + 'Verdun', +] + + +def logic_quartiers_(path_list, montreal_g, suburb_list, debug_mode=False): + """ + the main logic behind the generate_quartiers functions + """ + + if debug_mode: + tot_edges = 0 + tot_nodes = 0 + for arr in suburb_list: + g_temp = ox.graph_from_place( + arr + ", Montréal, Québec, Canada", network_type='drive') + removed = [(u, v, k) + for u, v, k in g_temp.edges(keys=True) if k > 0] + g_temp.remove_edges_from(removed) + tot_edges += len(g_temp.edges) + tot_nodes += len(g_temp.nodes) + + print("tot_edges = " + str(tot_edges)) + print("tot_nodes = " + str(tot_nodes)) + + # graph_mont = generate_graph("Montréal, Québec, Canada") + graph_mont = montreal_g + + res = nx.DiGraph() + + i = 0 + + for arr in suburb_list: + for u, v in path_list[arr]: + # print("u : " + str(u)) + # print("v : " + str(v)) + # print("noeud u: "+str(graph_mont.nodes[u])) + # print("noeud v: "+str(graph_mont.nodes[v])) + # print("(u,v) in graph : " + str((u, v) + # in graph_mont.edges(keys=False))) + # print("edge u,v: "+str(graph_mont.edges[(u, v, 0)])) + try: + res.add_node(u, **graph_mont.nodes[u]) + res.add_node(v, **graph_mont.nodes[v]) + if graph_mont.has_edge(u, v): + res.add_edge(u, v, **graph_mont.edges[(u, v, 0)]) + if graph_mont.has_edge(v, u): + res.add_edge(v, u, **graph_mont.edges[(v, u, 0)]) + except: + i += 1 + continue + + return res + + +def generate_quartiers_from_yaml(path_yaml_drone, montreal_g, suburb_list=arrondissements, debug_mode=False): + """ + Génère un graphe qui est l'union des edges/nodes des graphes de chaque + quartiers où path_yaml_drone est le chemin du fichier yaml qui + contient le resultat du drone + Parameters: + debug_mode (bool: default = False): le debug mode duh + Return: + nx.MultiDiGraph/nx.DiGraph : la fusion des quartiers + """ + path_res = load_paths_from_yaml(path_yaml_drone) + return logic_quartiers_(path_res, montreal_g, suburb_list, debug_mode) + + +def generate_quartiers_from_path(path_list, montreal_g, suburb_list=arrondissements, debug_mode=False): + """ + Génère un graphe qui est l'union des edges/nodes des graphes de chaque + quartiers où path_list est le resultat du drone + Parameters: + debug_mode (bool: default = False): le debug mode duh + Return: + nx.MultiDiGraph/nx.DiGraph : la fusion des quartiers + """ + return logic_quartiers_(path_list, montreal_g, suburb_list, debug_mode) |
