1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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)
|