summaryrefslogtreecommitdiff
path: root/ero1/src/generation/suburb_snowplow_generation.py
diff options
context:
space:
mode:
Diffstat (limited to 'ero1/src/generation/suburb_snowplow_generation.py')
-rw-r--r--ero1/src/generation/suburb_snowplow_generation.py88
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)