summaryrefslogtreecommitdiff
path: root/ero1/src/helper/export_to_kml.py
diff options
context:
space:
mode:
authorMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:07:58 +0200
committerMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:07:58 +0200
commit967be9e750221ab2ab783f95df79bb26d290a45e (patch)
tree6802900a5e975f9f68b169f0f503f040056d6952 /ero1/src/helper/export_to_kml.py
add: added projectsHEADmain
Diffstat (limited to 'ero1/src/helper/export_to_kml.py')
-rw-r--r--ero1/src/helper/export_to_kml.py95
1 files changed, 95 insertions, 0 deletions
diff --git a/ero1/src/helper/export_to_kml.py b/ero1/src/helper/export_to_kml.py
new file mode 100644
index 0000000..37f123b
--- /dev/null
+++ b/ero1/src/helper/export_to_kml.py
@@ -0,0 +1,95 @@
+from src.helper.debug_printer import debug_print
+import simplekml
+import random
+import math
+
+def export_to_kml(parcours_deneigeuses, parcours_drone, graph, debug_mode, name="parcours_deneigeuses"):
+ """
+ Exporte les parcours des déneigeuses dans un fichier KML.
+ Parameters:
+ parcours_deneigeuses : Les parcours des déneigeuses.
+ parcours_drone : Le parcours du drone.
+ graph : Le graphe à exporter.
+ debug_mode : Indique si le mode debug est activé ou non.
+ """
+
+ debug_print(f"Exportation des parcours des déneigeuses dans un fichier KML.", debug_mode)
+
+ # Création d'un nouveau fichier KML
+ kml = simplekml.Kml()
+
+ # Récupération d'une couleur aléatoire pour chaque déneigeuse
+ colors = []
+ parcours_deneigeuses.insert(0, parcours_drone)
+
+ for _ in range(len(parcours_deneigeuses)):
+ r = random.randint(0, 255)
+ g = random.randint(0, 255)
+ b = random.randint(0, 255)
+ colors.append(simplekml.Color.rgb(r, g, b))
+
+ # Traitement du parcours de chaque déneigeuse
+ for i, path in enumerate(parcours_deneigeuses):
+ # Création d'un itinéraire pour chaque déneigeuse
+ nom = f"Déneigeuse {i}" if i != 0 else "Drone"
+ folder = kml.newfolder(name=nom)
+
+ coordonnées = []
+ profondeurs_neige = []
+ distance_parcourue = 0
+
+ # Ajout des coordonnées pour chaque arête du parcours
+ for u, v in path:
+ try:
+ c_u = (graph.nodes[u]['x'], graph.nodes[u]['y'])
+ c_v = (graph.nodes[v]['x'], graph.nodes[v]['y'])
+
+ coordonnées.append(c_u)
+ coordonnées.append(c_v)
+
+ # Récupération de la profondeur de neige et de la distance
+ try:
+ profondeur_neige = graph[u][v][0].get('snow', 0)
+ distance_parcourue += graph[u][v][0]["length"]
+ except KeyError:
+ try:
+ profondeur_neige = graph[v][u][0].get('snow', 0)
+ distance_parcourue += graph[v][u][0]["length"]
+ except KeyError:
+ profondeur_neige = 0
+
+ profondeurs_neige.append(profondeur_neige)
+ except KeyError:
+ continue
+
+ moyenne_neige = sum(profondeurs_neige) / len(profondeurs_neige) if profondeurs_neige else 0
+
+ # Création du point de départ/arrivée
+ start_point = folder.newpoint(name=f"Départ {nom}")
+ start_point.coords = [coordonnées[0]]
+ start_point.style.iconstyle.icon.href = 'http://maps.google.com/mapfiles/kml/shapes/placemark_circle.png'
+ start_point.style.iconstyle.scale = 0.5
+ start_point.style.iconstyle.color = simplekml.Color.red
+
+
+ start_point = folder.newpoint(name=f"Fin {nom}")
+ start_point.coords = [coordonnées[-1]]
+ start_point.style.iconstyle.icon.href = 'http://maps.google.com/mapfiles/kml/shapes/placemark_circle.png'
+ start_point.style.iconstyle.scale = 0.5
+ start_point.style.iconstyle.color = simplekml.Color.red
+
+ # Création de l'itinéraire
+ route = folder.newlinestring(name=f"Itinéraire {nom}")
+ route.coords = coordonnées
+ route.altitudemode = simplekml.AltitudeMode.clamptoground # Afficher correctement la route
+
+ route.style.linestyle.color = colors[i]
+ route.style.linestyle.width = 5
+
+ route.description = f"Itinéraire {nom}\nDistance parcourue: {math.ceil(distance_parcourue/1000)} km"
+
+ # Sauvegarde du fichier KML
+ kml.save(f"temp/{name}.kml")
+ debug_print(f"Fichier KML créé avec succès: temp/{name}.kml", debug_mode)
+
+ return True \ No newline at end of file