9.4 Visualisation de données géospatiales et de cartes thermiques avec Python
Objectifs d'apprentissage
À la fin de cette section, vous devriez être en mesure de :
- 9.4.1 Décrire les enseignements fournis par les cartes thermiques spatiales basées sur des données géospatiales.
- 9.4.2 Discuter des caractéristiques communes de la cartographie SIG.
- 9.4.3 Utiliser un outil de cartographie SIG pour produire une visualisation de données géospatiales.
Les données géospatiales (geospatial data) désignent les données qui décrivent l'emplacement géographique, la forme, la taille et d'autres attributs relatifs à un lieu à la surface de la Terre. Les données géospatiales peuvent être saisies, stockées, manipulées, analysées et visualisées à l'aide de diverses technologies et de divers outils.
La visualisation de données géospatiales avec Python implique la représentation et l'analyse de données comportant une composante géographique, comme des coordonnées de latitude et de longitude. Python propose plusieurs bibliothèques et utilitaires pour la visualisation et l'analyse de données géospatiales, notamment la bibliothèque Pandas abordée dans Qu'est-ce que les données et la science des données ? Pandas est une bibliothèque Python spécialisée dans la manipulation et l'analyse de données. De manière similaire, Geopandas étend les capacités de Pandas pour prendre en charge les données géospatiales. La bibliothèque Geopandas offre la possibilité de lire, d'écrire, d'analyser et de visualiser des données géospatiales. Geopandas fournit un objet GeoDataFrame, similaire à un DataFrame de Pandas, mais intégrant des informations géométriques pour les opérations spatiales.
Cartes thermiques spatiales et en grille
Les cartes thermiques spatiales (spatial heatmaps) sont une méthode de visualisation de données utilisée pour représenter la densité ou l'intensité de points de données au sein d'une zone géographique en utilisant des couleurs et des dégradés pour illustrer les densités de divers attributs. Ces cartes thermiques fournissent un résumé visuel de la distribution et de la concentration des points de données, mettant en évidence les zones de forte et de faible densité.
Par exemple, une carte thermique spatiale de la ville de New York pourrait présenter des informations sur le taux de criminalité, où les taux plus élevés dans un certain secteur sont représentés par des nuances de rouge plus foncées et les taux plus faibles par des nuances plus claires. Le lecteur peut ainsi constater rapidement les différences de taux de criminalité entre divers quartiers grâce aux dégradés de la carte thermique.
La Figure 9.6 fournit un exemple de carte thermique montrant les écarts de température moyenne pour janvier 2024 par rapport aux données antérieures de 1991-2020, où la palette de couleurs illustre les différences (le bleu représente une baisse de température et le rouge une hausse de température).
(source des données : cartes de NOAA Climate.gov basées sur des données des NOAA National Centers for Environmental Information [NCEI], https://www.climate.gov/media/15930, consulté le 23 juin 2024.)
Les cartes thermiques spatiales sont générées en regroupant les coordonnées spatiales des points de données individuels dans une grille ou un ensemble de classes couvrant la zone géographique d'intérêt. La densité des points de données dans chaque cellule ou classe de la grille est ensuite calculée, puis ces résultats de densité sont associés à des couleurs spécifiques à l'aide d'une échelle de dégradé. Les zones géographiques présentant des densités plus élevées se voient attribuer des couleurs représentant une intensité plus forte, tandis que les zones aux densités plus faibles reçoivent des couleurs représentant une intensité moindre. Enfin, les cellules colorées de la grille peuvent être superposées sur une carte, produisant ainsi une représentation visuelle de la distribution spatiale des points de données.
Les cartes thermiques en grille (grid heatmaps) affichent des couleurs dans un tableau à deux dimensions où l'axe des x et l'axe des y représentent deux caractéristiques différentes, et le code couleur d'une cellule donnée dépend de la combinaison des caractéristiques correspondant à cette cellule. Par exemple, dans la Figure 9.7, une matrice est créée où l'axe des x représente différents agriculteurs locaux et l'axe des y représente les récoltes de diverses cultures (en tonnes/an) ; chaque cellule est ensuite colorée selon la valeur de récolte pour cette combinaison d'agriculteur et de culture spécifique. D'un simple coup d'œil, l'observateur peut constater que les récoltes les plus abondantes semblent concerner les pommes de terre chez BioGoods Ltd et l'orge chez Cornylee Corp. Notez que dans une carte thermique en grille, les cellules ont généralement une taille fixe, l'objectif étant de repérer des regroupements pour les caractéristiques d'intérêt. Remarquez également que la palette de couleurs utilisée associe le vert et le jaune à des niveaux de récolte plus élevés, et le bleu et le violet à des niveaux plus faibles.
(source : créé par l'auteur à l'aide de Matplotlib par D. Hunter, « Matplotlib: A 2D Graphics Environment », Computing in Science & Engineering, vol. 9, no. 3, pp. 90-95, 2007. DOI : https://zenodo.org/records/13308876)
Pour aller plus loin
Cartes thermiques interactives
Diverses cartes thermiques interactives sont disponibles et permettent à l'utilisateur de présélectionner des variables d'intérêt, puis d'afficher la carte géospatiale ou thermique correspondante. Par exemple, consultez ces cartes thermiques interactives exploitant des données d'accidents et des données démographiques ainsi que des initiatives d'amélioration de la sécurité routière en Californie :
https://catsip.berkeley.edu/resources/crash-data/crash-data-tools-and-resources
Utiliser Python pour générer des cartes thermiques
Il existe plusieurs façons de générer des cartes thermiques avec Python. Parmi les méthodes courantes, on compte les deux suivantes :
- La fonction
imshow(), qui fait partie de la bibliothèque de tracéMatPlotlib. La fonctionimshow()permet d'afficher facilement des cartes thermiques, comme la carte thermique bidimensionnelle présentée à la Figure 9.7. - La fonction
heatmap(), qui fait partie de la bibliothèque Seaborn. Seaborn offre des fonctionnalités de haut niveau pour les graphiques statistiques.
Pour aller plus loin
Seaborn
Seaborn comprend une grande variété de fonctions pour visualiser des relations statistiques. Ce guide d'utilisation et tutoriel constitue une excellente introduction à ses usages.
Dans l'exemple suivant, Python est utilisé pour créer une carte thermique basée sur une fonction de carte thermique appelée sns.heatmap(), qui fait partie de la bibliothèque Seaborn. L'exemple trace le nombre de passagers aériens pour des données temporelles de mois et d'années, où le mois est représenté sur l'axe horizontal, l'année sur l'axe vertical, et le code couleur de la carte thermique représente l'ampleur du nombre de passagers aériens.
Exemple 9.10
Problème
Générer une carte thermique d'un jeu de données à l'aide de la fonction heatmap de la bibliothèque Seaborn en Python.
Solution
Comme exemple de génération d'une carte thermique simple en Python à l'aide de la fonction heatmap, nous pouvons utiliser un jeu de données existant dans la bibliothèque Seaborn nommé « flights », qui répertorie le mois, l'année et le nombre de passagers pour des données historiques sur le transport aérien : Master Flights Seaborn Data.
Remarque : De nombreux jeux de données similaires sont disponibles dans le dépôt de données pour les exemples Seaborn.
Une fois le tableau créé, la fonction sns.heatmap() peut être utilisée pour générer la carte thermique proprement dite, qui colorera la matrice en fonction du nombre de passagers. La fonction sns.heatmap affiche également la barre de couleurs afin d'indiquer à l'observateur l'échelle du dégradé de couleurs utilisé dans la carte thermique.
Code Python
import seaborn as sns
import matplotlib.pyplot as plt
# Load the dataset from seaborn library called flights
heatmap_data = sns.load_dataset("flights")
# Create an array with heatmap data from the flights dataset
heatmap_data_array = heatmap_data.pivot(index="year", columns="month", values="passengers")
# Create the heatmap
sns.heatmap(heatmap_data_array, cmap = 'coolwarm')
# Set labels and title
plt.xlabel('Month')
plt.ylabel('Year')
plt.title('Heatmap of Number of Passengers')
# Show the plot
plt.show()
La sortie obtenue ressemble à ceci :
En examinant la carte thermique, l'observateur peut en conclure que le nombre de passagers a augmenté d'année en année, et que les mois d'été de juillet et août tendent à enregistrer un nombre de passagers plus élevé.
Introduction à la cartographie par système d'information géographique (SIG)
La cartographie par système d'information géographique (SIG) (Geospatial Information System (GIS)) est un outil de visualisation, d'analyse et d'interprétation des données spatiales qui exploite différents types de données géographiques, comme des cartes et des images satellites. L'objectif est de permettre à l'utilisateur de visualiser des structures et des tendances en fonction d'attributs géographiques.
Il est probable que vous ayez déjà rencontré une carte thermique superposée à une carte géographique dans un article de presse ou sur un site web. De telles cartes thermiques sont souvent appelées un graphique choroplèthe (choropleth graph), ce qui désigne la représentation graphique de données selon des délimitations géographiques telles que des États, des comtés, etc. Un graphique choroplèthe est créé en superposant une grille sur une carte géographique, puis en colorant généralement la carte en fonction de la densité ou d'une autre mesure pour un emplacement de grille particulier sur la carte. Les graphiques choroplèthes sont fréquemment utilisés pour représenter des données superposées sur des cartes géographiques dans le cas de données économiques, démographiques, immobilières, médicales, etc.
Ces graphiques offrent un moyen très naturel et intuitif de visualiser des données pour certaines régions géographiques et d'identifier ainsi des structures, des tendances et des corrélations. Ces types de cartes permettent également à l'utilisateur de repérer des regroupements et des valeurs aberrantes afin de faciliter l'interprétation des données.
Par exemple, un chercheur dans le domaine médical pourrait souhaiter visualiser et suivre la propagation d'un virus au fil du temps dans différents comtés, ou un chercheur d'emploi pourrait vouloir visualiser la densité d'offres d'emploi spécifiques dans différentes villes.
Voici d'autres applications où l'utilisation de la cartographie SIG offre des visualisations, des enseignements, des tendances et des corrélations :
- Services et couverture de télécommunications
- Planification urbaine et des transports
- Gestion de l'environnement
- Applications dans le domaine de la santé
- Évaluation et secours en cas de catastrophe
- Gestion de la chaîne logistique
Pour aller plus loin
Graphique choroplèthe interactif de la COVID-19
La Figure 9.8 fournit un exemple de graphique choroplèthe des cas de COVID-19 superposé sur une carte du monde. Remarquez comment un nombre plus élevé de cas de COVID-19 est corrélé à des teintes de couleur plus foncées sur la carte. Cliquez sur le bouton « lecture » de cette carte interactive en accéléré pour observer l'évolution temporelle du graphique. Notez que l'échelle chronologique située au bas du graphique peut être utilisée pour observer l'évolution des données au fil du temps.
(source des données : données issues du tableau de bord de la COVID-19 de l'OMS. Genève : Organisation mondiale de la Santé, 2020. Disponible en ligne : https://data.who.int/dashboards/covid19/ via OurWorldinData.org. Extrait de : https://ourworldindata.org/grapher/weekly-covid-deaths [ressource en ligne].)
Utiliser Python pour la cartographie géographique
Comme mentionné précédemment, Python propose de nombreuses bibliothèques et de nombreux outils facilitant la création de cartographies géographiques. Le processus comprend plusieurs étapes :
- Établir et collecter des données géospatiales : La première étape consiste à collecter les données géospatiales d'intérêt. Ce type de données est facilement accessible auprès de nombreuses sources telles que des dépôts de données ouvertes, des organismes gouvernementaux comme le Census Bureau, par exemple, etc. Les données peuvent être trouvées sous divers formats tels que des fichiers shapefiles, des fichiers GeoJSON, etc. (un shapefile est un format de fichier utilisé pour les données géospatiales qui représente les données géographiques sous format vectoriel).
- Traitement des données : Une fois les données collectées, un traitement ou une transformation des données peut être nécessaire, comme nous l'avons abordé dans Collecte et préparation des données. Par exemple, une forme de codage peut être requise pour convertir des adresses en coordonnées géographiques telles que la latitude et la longitude afin de faciliter la cartographie géographique. Des traitements de données supplémentaires peuvent être nécessaires pour estimer ou interpoler les données manquantes afin de générer, par exemple, des cartes de température continues.
- Générer la carte pour visualiser les données géographiques à l'aide de bibliothèques telles que
matplotlibetgeopandas. Divers outils apportent également de l'interactivité à la carte, permettant à l'utilisateur de zoomer, de dézoomer, de faire pivoter la carte ou d'afficher des données au survol d'un élément cartographique.
Python offre un excellent environnement permettant à l'utilisateur de créer, de manipuler et de partager des données géographiques afin de faciliter la visualisation des données géospatiales, la détection de tendances ou l'élaboration de conclusions fondées sur l'analyse de données.