Visualiser des données cartographiques avec Python

Créez une carte avec l’aide de Folium

Folium combine Python et la librairie javascript Leaflet adaptée à la conception de carte interactive.

Prérequis :

  • Python
  • pip
  • jinja2
  • folium

Installez Python en ligne de commande :

sudo apt-get install python

Pour utilisez Folium vous aurez besoin d’installer au préalable jinja2 :

sudo pip install jinja2

Si pip n’est pas installé (il est maintenant fourni avec les versions 3.x de Python) :

sudo apt-get install python-pip

Enfin, installez Folium :

sudo pip install folium

Pour afficher notre carte, nous allons maintenant écrire un script Python que l’on va enregistrer sous le nom testFolium.py:

import folium
fond = r'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png'
carte = folium.Map(location=[46.5, 2.3], zoom_start=6, tiles=fond, attr='© OpenStreetMap © CartoDB')
carte.create_map(path='/chemin/de/sortie/macarte.html')

Dans une console, rendez vous dans le dossier dans lequel vous avez enregistrer votre script et faites de votre script un fichier exécutable :

chmod +x testFolium.py

Lancez votre script depuis le dossier :

./testFolium.py

Rien ne se passe, c’est normal, mais vous devez maintenant avoir obtenu une page html dans le dossier choisi dans la ligne 4 de votre script. Ouvrez cette page et voyez le résultat, la carte est là.

Pour rajouter des points d’intérêt, à répéter autant que nécessaire pour chaque point:

carte.simple_marker(location=[48.2539, -3.6255], popup='Un texte pour la popup')

Ajouter une couche GeoJson

Folium gère également les fichiers GeoJson, pour ajouter une couche json, il suffit de deux ligne de code. Il faut d’abord déclarer le fichier puis l’intégrer sur la carte, ici le fichier des contours des régions françaises :

jsonData = r'regions.json'
carte.geo_json(geo_path=jsonData)

Pour voir cette carte, vous devrez mettre en place un serveur local. Pour cela, assurez vous que tout vous fichiers nécessaires à la visualisation de la carte sont dans le même dossier (json, script py, page html). Puis ouvrez une nouvelle console et rendez vous dans votre dossier et tapez :

python -m SimpleHTTPServer 8000

Une fois fait pointez vers http://localhost:8000/ dans votre navigateur. Vous devriez voir l’ensemble de vos fichiers, cliquez sur la page html. Votre couche GeoJson devrait apparaître.

Ajouter des données contenues dans un fichier csv

Nous allons visualiser un ensemble de points dont la géolocalisation est contenue dans un fichier csv. Pour cela nous allons nous servir de la librairie Pandas qui nous aidera à travailler les données.

Installez Pandas et ses dépendances :

sudo pip install pandas

puis

sudo pip install numpy
sudo pip install pytz
sudo pip install python-dateutil

Et le script pour générer la carte à partir d’un csv :

import pandas
import folium

#on vient lire le csv
orga = pandas.read_csv('orga.csv')

#on rajoute un fond de carte
fond = r'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png'

carte = folium.Map(location=[46.5, 2.3], tiles=fond, attr='© OpenStreetMap © CartoDB', zoom_start=6)

#on vient boucler sur le fichier csv pour lire chaque ligne et placer les points
for organisme, row in orga.iterrows():
carte.simple_marker(location=[row['latitude'], row['longitude']], popup=row['organisme'])

carte.create_map(path='/chemin/de/sortie/macarte.html')

Et voilà !

Publicité

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s