Carte des chefs-lieux de région
Un plus : Carte des chefs-lieux de région
Nous avons vu comment utiliser Python pour obtenir la liste des noms de régions et départements français, avec le nom de leur chefs-lieux.
Nous terminons cette activité par de la visualisation des données sur une carte. Ici, seul le fichier comsimp2018.txt va être utilisé : il contient le champ CHEFLIEU qui permet de récupérer les communes chefs-lieux de région (CHEFLIEU='4').
Nous exploitons deux autres modules de Python : geopy et folium. La première permet de trouver les coordonnées GPS des communes, la deuxième d'afficher la carte.
Simulation : À faire vous même
Écrire ces deux ligne de code :
import geopy
import folium
Si cela génère une erreur, il faut installer ces deux bibliothèques.
Voici la procédure pour EduPython :
Faire menu Outils > Outils > Installation d'un nouveau module > 2 (installation à l'aide de pip) puis taper le nom du module à télécharger. Python fait le reste.
Recommencer éventuellement pour installer l'autre module s'il est absent.
Voici le script complet : il est à copier/coller dans un nouveau fichier à sauvegarder dans le dossier où se trouve le fichier comsimp2018.txt.
# import des bibliothèques
import geopy, folium, csv
# construction de la liste des communes qui sont chefs-lieux de région
# c'est le même code que précédemment. Nous ne commentons donc pas cette partie
with open('comsimp2018.txt', 'r', encoding='latin1') as f:
premiere_ligne = f.readline()
print("Les descripteurs de la collection des commnues :")
print(premiere_ligne)
dialecte_fichier_csv = csv.Sniffer().sniff(premiere_ligne)
datas_communes = list(csv.reader(f, dialect=dialecte_fichier_csv))
# on spécifie les données ouvertes que Python va interroger pour trouver les coordonnées GPS
# ici, nous avons choisi ArcGIS
# D'autres sont possibles, mais peuvent donner à des erreurs car dans le monde, plusieurs villes
# peuvent porter le même nom (ex: Orléans)
# fonctionnel (sans clé api)
from geopy.geocoders import ArcGIS
geolocator = ArcGIS()
# on récupère les coordonnées GPS de Paris
location = geolocator.geocode("Paris")
gps_ville = [location.latitude, location.longitude]
# initialisation de la carte : on prend Paris comme centre
# avoir choisi zoom_start=1 signifie qu'on va voir le monde entier
# des boutons +/- permettrons de zoomer sur la carte au besoin.
carte = folium.Map(location=gps_ville, zoom_start=1)
# pour chaque commune de la liste datas_communes
for commune in datas_communes:
# on essaie de trouver ses coordonnées GPS
try:
# si la commune est un chef-lieu de région
if commune[1]=='4':
# nom de la commune
nom = commune[9]
# géolocalisation de la commune
location = geolocator.geocode(nom)
coordonnees_gps = [location.latitude, location.longitude]
# ajout à la carte de la commune
folium.Marker(coordonnees_gps).add_to(carte)
# en cas de problème, on écrit en console un message d'alerte
# cela peut arriver si l'ordinateur n'arrive pas à se connecter au serveur
except:
print("Impossible de géolocaliser le chef lieu ", nom)
# construction et sauvegarde de la page web
carte.save('Carte_des_chefs_lieux_de_region.html')
print("Aller dans le répertoire de travail et cliquer sur \
Carte_des_chefs_lieux_de_region.html pour voir la carte des chefs-lieux de région")
Exécuter ce code puis aller dans votre dossier de travail : vous devriez y trouver le fichier Carte_des_chefs_lieux_de_region.html.
Cliquer dessus pour visualiser la carte et jouer avec les boutons +/- pour zoomer.