Partie L5 · exercices 33 à 38

Mes cartes avec Folium

Fabriquer ses propres cartes interactives en Python

MéthodeAvant de commencer

Ce TP prolonge la passerelle Folium du cours Python : commence par y installer Folium et par faire les exercices 35 à 38 si ce n'est pas déjà fait.

rappel.py
import folium

carte = folium.Map(location=[44.1646, 4.6103], zoom_start=16)
folium.Marker([44.1646098, 4.6103368], popup="Lycée Albert Einstein").add_to(carte)
carte.save("ma_carte.html")

CoursOpenStreetMap, la carte que tout le monde peut modifier

Le fond de carte utilisé par défaut par Folium vient d'OpenStreetMap : une carte collaborative, dessinée par des centaines de milliers de bénévoles, un peu comme Wikipédia. Ses données sont libres : n'importe qui peut les réutiliser, à condition de citer la source.

Folium propose d'autres fonds, avec le paramètre tiles :

fonds.py
carte = folium.Map(location=[44.1646, 4.6103], zoom_start=16, tiles="cartodbpositron")
Valeur de tilesRendu
"OpenStreetMap"le fond par défaut, très détaillé
"cartodbpositron"fond clair et épuré, idéal pour faire ressortir les marqueurs
"cartodbdark_matter"fond sombre

ExercicesExplorer et personnaliser

EX 33Je m'entraîne 🌶️prise en main

Exercice 33 — Trois fonds de carte

Crée trois cartes du lycée avec les trois fonds du tableau, enregistrées sous trois noms différents. Lequel préfères-tu pour une carte de vacances ? Pourquoi ?

Indice

Change le nom dans carte.save(...) à chaque fois, sinon chaque carte écrase la précédente.

💾 NOM_Prenom_ex33.py

EX 34Je m'entraîne 🌶️🌶️application

Exercice 34 — Qui a dessiné mon lycée ?

  1. Va sur openstreetmap.org et zoome sur le lycée. Cite cinq types d'objets cartographiés (bâtiments, arbres, parkings…).
  2. Avec l'outil Interroger les objets (point d'interrogation à droite), clique sur un bâtiment du lycée. Quelles informations sont enregistrées ?
  3. Dans l'historique de l'objet, qui l'a modifié en dernier, et quand ?
Indice

L'historique s'ouvre depuis la fiche de l'objet (Afficher l'historique).

📝 réponses dans ton compte rendu, exercice 34

EX 35Je m'entraîne 🌶️🌶️application

Exercice 35 — Des marqueurs plus parlants

Voici un marqueur qui affiche un texte au survol de la souris (tooltip) et qui a une couleur :

marqueur.py
folium.Marker([44.1646098, 4.6103368],
              popup="Lycée Albert Einstein",
              tooltip="Clique-moi !",
              icon=folium.Icon(color="green", icon="info-sign")).add_to(carte)

Crée une carte de ta ville avec au moins quatre marqueurs de couleurs différentes selon leur catégorie (sport, culture, commerce…), chacun avec un tooltip et un popup.

Indice

Couleurs possibles : red, blue, green, purple, orange, darkred, pink, gray, black…

💾 NOM_Prenom_ex35.py

EX 36Je m'entraîne 🌶️🌶️application

Exercice 36 — Quatre erreurs à trouver

Un élève a écrit ce programme pour placer la tour Eiffel. La carte s'ouvre… mais rien ne va. Trouve et corrige les quatre erreurs.

eiffel_bug.py
import folium

carte = folium.Map(location=[2.2945, 48.8584], zoom_star=15)
folium.Marker([2.2945, 48.8584], popup="Tour Eiffel")
carte.save("tour_eiffel")
Indice 1

Deux erreurs concernent les coordonnées, une concerne un nom de paramètre, une le marqueur, une le nom du fichier… il y en a bien quatre si on compte les coordonnées comme une seule !

Indice 2

Un paramètre mal orthographié ne provoque pas toujours d'erreur : il est simplement ignoré.

💾 NOM_Prenom_ex36.py

EX 37Je m'entraîne 🌶️🌶️🌶️plusieurs étapes

Exercice 37 — Tracer un trajet

La fonction folium.PolyLine trace une ligne qui relie plusieurs points, donnés dans une liste de listes :

trajet.py
trajet = [[44.1646, 4.6103], [44.1602, 4.6196], [44.1523, 4.6290]]
folium.PolyLine(trajet, color="red", weight=5).add_to(carte)

Trace le trajet d'un voyage (réel ou imaginé) passant par au moins quatre villes, avec un marqueur sur chaque étape.

Indice 1

Range les coordonnées des villes dans la liste trajet, dans l'ordre du voyage.

Indice 2

Pour les marqueurs, tu peux parcourir la liste : for point in trajet: puis, décalé, folium.Marker(point).add_to(carte).

💾 NOM_Prenom_ex37.py

EX 38Défi 🌶️🌶️🌶️🌶️défi

Exercice 38 — Retour à la trilatération

Défi : un téléphone capte trois antennes relais. On connaît la position de chaque antenne et sa distance au téléphone. folium.Circle trace un cercle dont le rayon est donné en mètres.

cercle.py
folium.Circle([44.1750, 4.6000], radius=1419, color="blue").add_to(carte)
AntenneLatitudeLongitudeDistance au téléphone
144.17504.60001 419 m
244.15004.60501 679 m
344.16804.63502 003 m
  1. Trace les trois cercles sur une même carte.
  2. Où se trouve le téléphone ? Place un marqueur à cet endroit.
  3. Fais le lien avec le TP sur les satellites (partie L1).
Indice 1

Centre la carte vers [44.165, 4.613] avec un zoom de 14.

Indice 2

Le téléphone est au point commun aux trois cercles.

💾 NOM_Prenom_ex38.py

Et ensuite ?

Tu es prêt pour l'évaluation « Les vacances du prof » : à partir de vraies photos de voyage, tu fabriqueras ta propre carte.