import time from src.helper.debug_printer import debug_print from src.helper.export_cost import export_cost from src.helper.export_to_kml import export_to_kml from src.deneigeuses.hierholzer import process_hierholzer from src.deneigeuses.directed_cpp import oriented_cpt from src.helper.display_graph import display_graph from src.helper.output_debug import output_debug from src.generation.graph_generation import generate_graph from src.helper.color_suburbs import display_suburbs_with_colors from src.helper.prune_maps import prune_verdun import networkx as nx # IMPORT FOR YAML from src.helper.export_import_yaml import load_paths_from_yaml from src.helper.partitions import partition from src.generation.suburb_snowplow_generation import generate_quartiers_from_path # IMPORT FOR DRONE from src.drone.postier_chinoisV2 import final_path # from src.drone.postier_chinoisV2 import postier_chinois_process def main_parcours(debug_mode=False, place_name=None, reversed_legend=None): """ Fonction principale pour le parcours du graphe. Parameters: debug_mode : Indique si le mode debug est activé ou non. place_name : Le nom de la place à parcourir. reversed_legend : Si la légende est inversée. """ #output_debug(None, None, None, debug_mode) parcours_deneigeuses = [] # ---------------------- GENERATION DU GRAPHE --------------------------- debug_print("Génération du graph de Montréal en cours...", debug_mode) graph = generate_graph("Montréal, Québec, Canada", debug_mode) debug_print("Graph généré avec succès.", debug_mode) # ---------------------- GENERATION DU GRAPHE --------------------------- # ---------------------- PARCOURS - DRONE --------------------------- start_time_drone = time.time() #debug_print("Parcours du drone dans chaque arrondissement", debug_mode) # - Load from the saved file directly parcours_drone = load_paths_from_yaml(graph, filename="paths/paths-PostierChinoisV1.yml") # Nom à rajouter du coup finalPath = final_path(graph, parcours_drone) # - Postier Chinois V{?} # parcours_drone, finalPath = postier_chinois_process(graph, debug_mode) end_time_drone = time.time() # ---------------------- PARCOURS - DRONE --------------------------- # display_suburbs_with_colors(graph, parcours_drone, connections) # ---------------------- RECUPERATION DU PARCOURS DU DRONE --------------------------- temp = [] # if place_name in parcours_drone: # debug_print("Parcours du drone dans l'arrondissement de " + place_name, debug_mode) # for elt in ["Outremont", "Verdun", "Anjou", "Rivière-des-Prairies–Pointe-aux-Trembles", "Le Plateau-Mont-Royal"] : # if elt in parcours_drone: # print(elt, len(parcours_drone[elt])) # temp.extend(parcours_drone[elt]) # else: # print("Arrondissement non trouvé:", elt) # print("Total", len(temp)) # parcours_drone = temp # else: # debug_print("Parcours du drone dans l'arrondissement de " + place_name + " non trouvé", debug_mode) # ---------------------- RECUPERATION DU PARCOURS DU DRONE --------------------------- #debug_print("Etablissement de connections entre arrondissement :", debug_mode) #connections = connect_circuits(graph, parcours_drone) #output_debug(graph, parcours_drone, connections, debug_mode) # ---------------------- PARCOURS - DENEIGEUSE --------------------------- # G_partition = generate_quartiers_from_path(parcours_drone, graph, suburb_list=["Outremont", "Verdun", "Anjou", "Rivière-des-Prairies–Pointe-aux-Trembles", "Le Plateau-Mont-Royal"], debug_mode=True) # partitions = partition(G_partition, 5, debug_mode=True) # display_graph(graph, "Test 1", reversed_legend, parcours_drone, None, False) start_time_deneigeuse = time.time() # TEMP FIX # parcours_deneigeuse = parcours_drone ## Postier chinois qui fonctionne que sur un graph fortement connexe verdun = generate_graph("Verdun, Montreal, Canada", debug_mode=debug_mode) # verdun = prune_verdun(verdun) parcours_deneigeuse = oriented_cpt(verdun, graph, debug_mode) # for elt in partitions: # drone_edges = [(u, v) for u, v in elt.edges()] # parcours_deneigeuses.append(process_hierholzer(graph, drone_edges, debug_mode)) # parcours_deneigeuse = process_hierholzer(graph, parcours_drone, debug_mode) end_time_deneigeuse = time.time() # ---------------------- PARCOURS - DENEIGEUSE --------------------------- #display_graph(graph, "Test 2", reversed_legend, parcours_deneigeuse, None, False) # ---------------------- EXPORT COST --------------------------- # parcours_deneigeuses.append(parcours_deneigeuse) for elt in ["Outremont", "Verdun", "Anjou", "Rivière-des-Prairies–Pointe-aux-Trembles", "Le Plateau-Mont-Royal"] : if elt in parcours_drone: print(elt, len(parcours_drone[elt])) temp.extend(parcours_drone[elt]) else: print("Arrondissement non trouvé:", elt) print("Total", len(temp)) parcours_drone = temp if "verdun" in place_name.lower(): export_cost(parcours_drone, parcours_deneigeuses, graph, debug_mode, end_time_deneigeuse - start_time_deneigeuse, end_time_drone - start_time_drone) else: print("/!\\ Exportation du coût du parcours désactivée : Seul Verdun est supporté") # ---------------------- EXPORT COST --------------------------- # ---------------------- EXPORT TO KML --------------------------- export_to_kml(parcours_deneigeuses, finalPath, graph, debug_mode) # ---------------------- EXPORT TO KML --------------------------- return True