Aller au contenu

Module Catographie

Créer une carte personnalisée avec Python

Nous allons utiliser les cartes proposées par Open Street Map et le langage Python afin de générer des cartes personnalisées. Plus exactement, nous allons utiliser une bibliothèque Python nommée Folium. Une bibliothèque Python permet de rajouter des fonctionnalités au langage de base. Folium va donc nous permettre de créer nos propres cartes à partir des cartes proposées par Open Street Map

Activité 24.1

Créez un dossier et nommez-le par exemple "cartoOSM"

Activité 24.2

Utilisez le logiciel spyder3 pour saisir le programme ci-dessous. Le fichier devra être enregistré dans le répertoire créé dans l'activité 24.1 (le fichier pourra être nommé "carte_1.py").

import folium
c= folium.Map(location=[46.078025, 6.409053])
c.save('maCarte.html')

Une fois le code ci-dessus exécuté, rendez-vous dans le répertoire que vous avez créé dans l'activité 24.1. Vous devriez trouver un fichier "maCarte.html". Double-cliquez sur ce fichier, cela devrait normalement ouvrir un navigateur web : la carte centrée sur la ville de Bonneville est à votre disposition. Notez bien que nous avons une véritable carte et pas une simple image (il est possible de zoomer ou de se déplacer).


Le programme de l'activité 24.2 est simple à comprendre :

  • La première ligne : "import folium" permet d'importer la bibliothèque folium afin de pouvoir l'utiliser
  • La deuxième ligne est le coeur de notre programme, nous définissons une variable "c" qui va contenir notre objet carte. "folium.Map(location=[46.078025, 6.409053])" génère cet objet carte, la carte sera centrée sur le point de latitude "46.078025" et de longitude "6.409053". Plus généralement nous avons "folium.Map(location=[latitude, longitude])". Il suffit donc de renseigner la bonne longitude et la bonne latitude pour que la carte soit centrée sur le point désiré.
  • La dernière ligne permet de générer la page HTML qui va permettre d'afficher la carte.

Activité 24.3

Modifiez le programme de l'activité 24.2 pour qu'il génère une carte centrée sur la ville de votre choix (la longitude et la latitude d'une ville sont facilement trouvables sur le web).


Il est possible d'obtenir un niveau de zoom différent en ajoutant un paramètre "zoom_start"

Activité 24.4

Saisissez et testez le programme ci-dessous (si vous désirez garder la carte précédente, n'oubliez pas de modifier la dernière ligne en changeant le nom du fichier HTML généré)

import folium
c= folium.Map(location=[46.078025, 6.409053],zoom_start=15)
c.save('maCarte.html')

Plus la valeur de "zoom_start" sera grande et plus le zoom sera important.


Afin de vraiment personnaliser la carte, il est possible d'ajouter des marqueurs sur la carte. Un marqueur sera simplement défini par ses coordonnées (latitude et longitude).

Activité 24.5

Saisissez et testez le programme ci-dessous :

import folium
c= folium.Map(location=[46.078025, 6.409053],zoom_start=20)
folium.Marker([46.078637266899,  6.4111924884134]).add_to(c)
c.save('maCarte.html')

Nous avons uniquement ajouté la ligne "folium.Marker...", il faut juste renseigner les coordonnées souhaitées (ici 46.078637266899 pour la latitude et 6.4111924884134 pour la longitude)


Il est possible d'ajouter plusieurs marqueurs sur une même carte, il suffira d'ajouter autant de ligne "folium.Marker([latitude, longitude]).add_to(c)" que de marqueurs désirés.

Il est possible d'associer une information à un marqueur en ajoutant le paramètre "popup"

Activité 24.6

Saisissez et testez le programme ci-dessous

import folium
c= folium.Map(location=[46.078025, 6.409053],zoom_start=20)
folium.Marker([46.078637266899,  6.4111924884134],popup="Lycée G Fichet").add_to(c)
c.save('maCarte.html')

Il suffit de cliquer sur le marqueur pour que l'information définie par le paramètre "popup" apparaisse à l'écran (ici en cliquant sur le marqueur nous verrons donc apparaitre "Lycée G Fichet").


Activité 24.7

En vous aidant de ce qui a été fait à l'activité 24.6, créez une carte et placez un marqueur à l'endroit de votre choix (n'oubliez pas de renseigner le paramètre "popup")