Visualisation de données géospatiales et de cartes thermiques avec Python

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).

Une carte thermique avec une carte des États-Unis étiquetée janvier 2024. La légende montre les écarts par rapport à la température moyenne allant de -11 représenté en bleu à 11 représenté en rouge. Le nord-est des États-Unis est principalement rouge et le centre du pays est principalement bleu. La côte ouest est un mélange des deux.
Figure 9.6 Exemple de carte thermique montrant les écarts par rapport à la température moyenne pour janvier 2024 par des couleurs
(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.

Une carte thermique en grille intitulée récolte des agriculteurs locaux (en tonnes/an). L'axe X comporte 7 noms d'agriculteurs et l'axe Y comporte des cultures/légumes. Les cultures comprennent le concombre, la tomate, la laitue, l'asperge, la pomme de terre, le blé et l'orge. La densité de couleur est représentée par le jaune pour les récoltes les plus élevées, puis le vert, le sarcelle, le bleu et le violet par ordre décroissant.
Figure 9.7 Carte thermique en grille montrant la densité de couleur pour les récoltes agricoles par agriculteur local et type de culture
(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

https://safetyheatmap.berkeley.edu/map///

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 fonction imshow() 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 :

Une carte thermique du nombre de passagers avec les mois (de janv. à déc.) sur l'axe X et les années (de 1960 à 1949) sur l'axe Y. Une échelle de couleurs avec le bleu (100) pour la valeur la plus basse et le rouge (600) pour la plus élevée s'étend le long du côté droit du graphique. Les valeurs les plus élevées sont regroupées en juillet et août 1959 et 1960.

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.

Un graphique choroplèthe montrant les cas confirmés de COVID-19 sur une carte du monde. L'échelle de couleurs au bas va de 0 à 50 000, la couleur devenant d'un rouge plus foncé à mesure que les valeurs augmentent. Les États-Unis, la Russie et la Chine présentent les nombres de cas les plus élevés.
Figure 9.8 Graphique choroplèthe montrant les cas de COVID-19

(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 :

  1. É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).
  2. 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.
  3. Générer la carte pour visualiser les données géographiques à l'aide de bibliothèques telles que matplotlib et geopandas. 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.