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à !