Les données structurées

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 :

1
import geopy
2
import folium
3

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.

1
# import des bibliothèques
2
import geopy, folium, csv
3
# construction de la liste des communes qui sont chefs-lieux de région
4
# c'est le même code que précédemment. Nous ne commentons donc pas cette partie
5
6
with open('comsimp2018.txt', 'r', encoding='latin1') as f:
7
    premiere_ligne = f.readline()
8
    print("Les descripteurs de la collection des commnues :")
9
    print(premiere_ligne)
10
    dialecte_fichier_csv = csv.Sniffer().sniff(premiere_ligne)
11
    datas_communes = list(csv.reader(f, dialect=dialecte_fichier_csv))
12
13
# on spécifie les données ouvertes que Python va interroger pour trouver les coordonnées GPS
14
# ici, nous avons choisi ArcGIS 
15
# D'autres sont possibles, mais peuvent donner à des erreurs car dans le monde, plusieurs villes
16
# peuvent porter le même nom (ex: Orléans)
17
18
# fonctionnel (sans clé api)
19
from geopy.geocoders import ArcGIS
20
geolocator = ArcGIS()
21
22
# on récupère les coordonnées GPS de Paris
23
location = geolocator.geocode("Paris")
24
gps_ville = [location.latitude, location.longitude]
25
# initialisation de la carte : on prend Paris comme centre
26
# avoir choisi zoom_start=1 signifie qu'on va voir le monde entier
27
# des boutons +/- permettrons de zoomer sur la carte au besoin.
28
29
carte = folium.Map(location=gps_ville, zoom_start=1)
30
# pour chaque commune de la liste datas_communes
31
for commune in datas_communes:
32
    # on essaie de trouver ses coordonnées GPS
33
    try:
34
        # si la commune est un chef-lieu de région
35
        if commune[1]=='4':
36
            # nom de la commune
37
            nom = commune[9]
38
            # géolocalisation de la commune
39
            location = geolocator.geocode(nom)
40
            coordonnees_gps = [location.latitude, location.longitude]
41
            # ajout à la carte de la commune
42
            folium.Marker(coordonnees_gps).add_to(carte)
43
    # en cas de problème, on écrit en console un message d'alerte
44
    # cela peut arriver si l'ordinateur n'arrive pas à se connecter au serveur
45
    except:
46
        print("Impossible de géolocaliser le chef lieu ", nom)
47
# construction et sauvegarde de la page web
48
carte.save('Carte_des_chefs_lieux_de_region.html')
49
print("Aller dans le répertoire de travail et cliquer sur \
50
Carte_des_chefs_lieux_de_region.html pour voir la carte des chefs-lieux de région")
51

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.

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Stéphan Van Zuijlen Licence de documentation libre GNURéalisé avec Scenari (nouvelle fenêtre)