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)