""" Script pour générer une page HTML interactive avec les données des villages corses embarquées. Usage: python generate_interactive_map.py villages_corse.csv """ import csv import json import sys def parse_coordinates(point_geo_str): """Parse la colonne Point_Geo""" try: parts = point_geo_str.split(',') lat = float(parts[0].strip()) lon = float(parts[1].strip()) return lat, lon except: return None, None def load_villages_from_csv(csv_file): """Charge les villages depuis le CSV""" villages = [] with open(csv_file, 'r', encoding='utf-8') as f: reader = csv.reader(f, delimiter=';') next(reader) # Skip header for row in reader: if len(row) >= 18: lat, lon = parse_coordinates(row[17]) if lat and lon: villages.append({ 'name': row[0], 'nameCorse': row[1], 'lat': lat, 'lon': lon, 'dept': row[9], 'altitude': float(row[15]) if row[15] else 0 }) return villages def generate_html(villages, output_file='knn_interactive_full.html'): """Génère le fichier HTML avec les données embarquées""" villages_json = json.dumps(villages, ensure_ascii=False) html_content = f''' Classification k-NN Interactive - Corse

🗺️ Classification k-NN Interactive

Haute-Corse ou Corse du Sud ?

{len(villages)} villages chargés

📋 Instructions

  • Cliquez n'importe où sur la carte
  • Ajustez la valeur de k avec le curseur
  • Observez les k plus proches villages
  • La classification se fait par vote majoritaire

⚙️ Paramètres

5

🎯 Résultat

Cliquez sur la carte
0
Corse du Sud
0
Haute-Corse

🏘️ Plus proches voisins :

Légende

Corse du Sud (2A)
Haute-Corse (2B)
Point à classifier
''' with open(output_file, 'w', encoding='utf-8') as f: f.write(html_content) print(f"✅ Fichier HTML généré : {output_file}") print(f"📊 {len(villages)} villages inclus") if __name__ == '__main__': if len(sys.argv) < 2: print("Usage: python generate_interactive_map.py villages_corse.csv") sys.exit(1) csv_file = sys.argv[1] villages = load_villages_from_csv(csv_file) generate_html(villages)