Tracer une carte en Python

Le notebook propose plusieurs façons de tracer une carte en Python.

Il y a principalement trois façons de tracer une carte. La première est statique avec des modules comme basemap (plus trop maintenu) ou cartopy qui sont des surcouches de matplotlib. Le second moyen est une carte animée ou non dans un notebook avec des modules comme pygal, plotly. La dernière consiste à insérer des éléments sur une carte en ligne telle que OpenStreetMap et le module folium ou ipyleaflet.

Il y a souvent trois problèmes avec les cartes. Le premier sont avec les coordonnées. Les plus utilisées sont les coordonnées longitude / latitude. Le problème est chaque pays a son propre système adapté à sa position géographique. Il faut souvent convertir (voir lambert93_to_WGPS, pyproj). Le second problème est l'ajout de repères géographiques (frontières, fleuves, ...). Certains modules contiennent certaines informations, souvent pour les Etats-Unis. Mais souvent, il faut récupérer ces informations sur les sites open data de chaque pays : départements français. La troisième difficulté est qu'on veut tracer des cartes très chargées et cela prend un temps fou.

données

cartopy

basemap est l'ancêtre des modules de tracé de cartes sous Python mais il n'est plus vraiment maintenu. Il faut utiliser cartopy. Contrairement à basemap, cartopy n'installe pas toutes les données dont il a besoin mais télécharge celle dont il a besoin pour tracer une carte. La projection indique comment la surface de la terre, sphérique, sera projetée dans le plan. Ensuite, il faut un système de coordonnées pour localiser un point sur la surface. Le plus utilisée est WGS_84 ou longitude, latitude. En France, l'INSEE utilise aussi le système Lambert 93 ou EPSG 2154. Source : Introduction à la manipulation de données cartographiques. Tout n'est pas parfait dans Cartopy comme ce problème Create Cartopy projection from pyproj.Proj.

On peut obtenir une carte un peu plus détaillée mais le module cartopy télécharge des données pour ce faire. Cela se faire avec l'instruction with_scale qui propose trois résolutions :10m, 50m, 110m.

On ajoute un système de coordonnées français particulièrement intéressant pour la France. On convertit d'abord longitude, latitude en Lambert 93.

On convertit toutes les coordonnées.

Et on dessine deux cartes, la première en longitude, latitude, la seconde en Lambert 93.

plotly, gmaps, bingmaps

Il faut s'authentifier. Voir gmaps, bingmaps, plotly.

geopandas

geopandas est l'outil qui devient populaire. La partie cartes est accessible via l'API de geopandas. Il n'inclut moins de données que basemap.

On restreint à l'Europe et pas trop loin de la France métropole.

folium