Tuto : Utiliser des projections climatiques pour évaluer l’évolution de l’aridité de votre région avec Python

Callendar
9 min readJun 17, 2020

Vous êtes-vous déjà demandé quel sera l’effet du changement climatique sur l’aridité ? Non ? Pourtant l’aridité détermine largement votre environnement : la végétation, l’agriculture, les paysages… Connaitre son évolution est donc crucial pour anticiper les effets du changement climatique et s’y préparer, mais ce n’est pas évident :

Le réchauffement du climat a des effets contradictoires sur la ressource en eau : augmentation de l’évaporation et augmentation des précipitations, et de nombreux aléas locaux, comme le relief, viennent perturber ces tendances globales.

A l’occasion de la 26e Journée mondiale de lutte contre la désertification et la sécheresse, nous vous proposons d’apprendre à évaluer l’évolution de l’aridité d’un territoire avec Python à partir de projections climatiques accessibles librement.

Pour cela nous allons voir comment :

  1. Calculer un indice d’aridité simple,
  2. Accéder à des projections climatiques au format NetCDF,
  3. Ouvrir et traiter ces données avec xarray,
  4. Représenter les résultats sur une carte.

Évaluer l’aridité d’un climat : l’indice de Martonne

Contrairement à ce que l’on pourrait penser, l’aridité d’un climat ne dépend pas seulement des précipitations. La température va aussi jouer un rôle en entrainant l’évaporation d’une part plus ou moins importante de l’eau reçue.

Dans ce tutoriel, nous allons évaluer l’aridité à partir d’une indice simple tenant compte de ces deux variables : l’indice de Martonne.

Cet indice a été introduit en 1926 par le géographe français Emmanuel de Martonne. Il s’écrit tout simplement :

I = P/(T+10)

Où P est le cumul annuel de précipitations en millimètres et T la température moyenne en degrés Celsius.

Selon Martonne, cet indice permet de distinguer quatre grands types de climats :

  • Les climats arides avec un indice inférieur à 10 : sous ces climats l’eau liquide et la végétation sont presque inexistants. Le Sahel, par exemple, a généralement un indice de Martonne compris entre 5 et 10 alors que les déserts ont un indice inférieur à 5.
  • Entre 10 et 20, les climats semi-arides : les cours d’eaux permanents sont rares mais la végétation est plus présente avec souvent des steppes ou des savanes. Des cultures sont envisageables mais seulement avec une irrigation ou des pratiques adaptées.
  • Entre 20 et 30, les climats semi-humides : on y trouve des cultures mais l’irrigation reste souvent utile,
  • Au-delà de 30, les climats humides : les rivières ne se tarissent presque jamais, l’agriculture n’est pas irriguée et c’est au contraire le drainage qui peut être nécessaire.

Accéder aux projections climatiques

Nous allons évaluer l’évolution de l’indice de Martonne sur le territoire français entre une période de référence comprise entre 1971 et 2000 et la fin du XXIe siècle. Il faut donc savoir comment la température et les précipitations vont évoluer en France. Ces informations peuvent nous être fournies par des modèles climatiques.

Un modèle climatique est un proche cousin d’un modèle météorologique avec une différence majeure : son objectif n’est pas de prévoir la météo qu’il fera à un moment précis dans le futur mais de donner une météo possible — on parle alors de projection plutôt que de prévision.

Il existe plusieurs dizaines de modèles climatiques dont les résultats sont accessibles librement par divers canaux. Nous allons utiliser www.drias-climat.fr qui propose de nombreuses données pour la France.

Une fois sur le site, vous pouvez accéder aux projections en cliquant sur l’onglet “Données et produits”. Vous serez alors invité à vous connecter ou à créer un compte (gratuit). Lorsque c’est fait, vous arrivez sur un écran assez austère :

Pour commencer, cliquez sur l’onglet “Simulations au format NetCDF” au dessus de l’arborescence.

Cliquez ensuite sur “Simulation EURO-CORDEX 2014” dans le dossier Simulations climatiques atmosphériques\Scénarios RCP\Métropole\DONNEES CORRIGEES. Un tableau apparait dans la partie droite de l’écran :

Chaque ligne de ce tableau correspond à un modèle climatique et les colonnes vous permettent de choisir d’une part les hypothèses d’émissions de gaz à effet de serre et d’autres part les variables qui vous intéressent.

Dans le cadre de ce tutoriel nous n’allons utiliser qu’un seul modèle (donc une seule ligne) : EUROCORDEX / IPSL / IPSL-CM5A / WFR331F. Il s’agit de projections issues d’un modèle français, le CM5A-Moyenne Résolution de l’Institut Pierre Simon Laplace, dont la résolution spatiale a été améliorée grâce à l’utilisation d’un modèle météorologique.

Dans la ligne correspondante, sélectionnez les 3 scénarios disponibles : Hist qui est une reconstruction du passé par le modèle climatique destinée à servir de référence, RCP4.5, un scénario d’émissions relativement modérées, et RCP8.5 qui correspond à des émissions élevées. Ensuite sélectionnez les deux variables qui nécessaires pour calculer l’indice de Martonne : la température moyenne tas et les précipitations pr.

Vous verrez alors apparaitre sous le tableau les liens pour télécharger les 6 fichiers correspondants. Vous n’avez plus qu’à faire un clic droit, “Enregistrer la cible du lien sous…” et à attendre (assez longtemps) que le téléchargement se termine.

Jouons un peu avec des fichiers .nc et Xarray

Les données que vous venez de télécharger sont sous un format peu connu du grand public mais très employé en climatologie. Il s’agit de NetCDF. Certains outils comme Panoply permettent de les ouvrir et de les explorer facilement.

Voyons comment utiliser ces fichiers avec Python. Nous n’allons utiliser que 3 libraries : matplotlib, datetime et Xarray qui nous permettra d’ouvrir et de traiter nos NetCDF.

import matplotlib.pyplot as plt
import xarray as xr
from datetime import date

Commençons par ouvrir un fichier, par exemple la projection de température entre 2006 et 2100 pour le scénario RCP4.5 :

Quelques explications s’imposent : da est un DataArray, c’est-à-dire une matrice à 2 dimensions ou plus. Dans notre cas, il y a 3 dimensions : deux coordonnées géographiques (i et j) et le temps (time). Les valeurs contenues dans la matrice sont les valeurs de la variable étudiée.

DS est un dataset, c’est-à-dire un dictionnaire de datarray. La fonction load est destinée à ouvrir un dataset et récupérer le dataarray qui nous intéresse (dans ce cas la température, tas) tout en s’assurant que le dataset, qui peut être très lourd, ne reste pas en mémoire.

Nous avons donc maintenant da, un dataarray contenant l’évolution des températures journalières pour la France métropolitaine entre 2006 et 2100.

On peut extraire une partie du datarray en sélectionnant les coordonnées qui nous intéressent avec .sel(). Prenons, par exemple, le premier point de la grille :

da = da.sel(i=1, j=1)

On va également limiter la période de temps entre 2020 et 2100, pour cela on va encore utiliser .sel() avec slice() pour définir un intervalle :

debut = date(2020, 1, 1)
fin = date(2100, 12, 31)
da = da.sel(time = slice(debut, fin))

Étape suivante : un changement d’unité. La température est fournie en degrés Kelvin, la formule de Martonne utilise des Celcius. Pour se ramener de l’un à l’autre, il suffit de soustraire 273.15 :

da = da - 273.15

Enfin on va rééchantilloner afin d’obtenir les températures moyennes annuelles plutôt que journalières. Cela se fait en une simple ligne :

da = da.resample(time = "1Y").mean(dim = "time")

Reprenons ces différentes étapes et visualisons l’évolution des températures pour cette projection :

Et voilà le résultat :

Exemple de projection de température 2020–2100

Notez que, comme on l’a dit plus haut, il s’agit de projection pas de prévision : ce n’est pas parce que cette projection nous donne une température de 12.090474°C en 2050 qu’il fera en moyenne 12.090474°C en 2050. C’est seulement un résultat possible. Si on veut avoir une idée de ce qu’il peut se passer en 2050, il faut regarder un nombre suffisant de résultats, généralement 30 années comme pour le calcul des normales climatiques.

Pour prendre une analogie simple, imaginez que vous vouliez prévoir le résultat d’un jet de dé. Vous le jetez une fois, vous obtenez 6. Évidemment ça ne signifie pas que vous obtiendrait toujours 6, pris seul ce résultat ne signifie pas grand chose. Mais si vous jetez votre dé un nombre suffisant de fois, disons 30, vous vous apercevrez que les résultats sont compris entre 1 et 6 et que le résultat moyen est quelque part entre 3 et 4. C’est à peu près ce que l’on essaie de faire avec des projections climatiques.

Calcul de l’indice de Martonne

Maintenant que nous avons vu les bases de l’utilisation des NetCDF avec Xarray, nous pouvons calculer l’évolution de l’indice de Martonne sur l’ensemble du territoire.

Nous allons commencer par calculer l’indice de Martonne sur les 30 dernières années du XXIe siècle dans le scénario RCP4.5. La première étape consiste à ouvrir les projections de température à les traiter comme précédemment :

On fait à peu près la même chose pour les précipitations :

Cette fois il n’est pas nécessaire de convertir l’unité puisque la projection est fournie directement en millimètres et comme on cherche le cumul de précipitation annuel et non la moyenne, on utilise .sum() au lieu de .mean() lors du rééchantillonnage.

Il ne nous reste plus qu’à appliquer la formule de Martonne :

martonne = pr / (tas + 10)

On se retrouve avec un dataarray contenant une projection de l’indice de Martonne annuel entre 2071 et 2100 pour tous les points du territoire. Prenons-en la moyenne temporelle :

martonne = martonne.mean(dim = 'time')

On peut visualiser ces données :

Et voilà le résultat :

Indice d’aridité de Martonne pour la France à la fin du XXIe siècle dans un scénario d’émissions modérées

On voit que les massifs montagneux sont très humides alors que la côte méditerranéenne, les bassins de la Garonne et de la Loire et, dans une moindre mesure, l’Alsace, la Beauce et l’Ile de France ont un climat plus aride.

Généralisation et interprétation

Bien sur l’interprétation de ce résultat serait plus intéressante si on pouvait le comparer à une référence et à ce qui se passerait avec des émissions plus élevées. On va donc recommencer l’opération avec nos autres jeux de données mais pour nous simplifier la vie, nous allons d’abord réunir tous le traitement des données dans une fonction :

On peut désormais obtenir facilement l’indice de Martonne, par exemple pour la période de référence :

Grâce à cette fonction et moyennant quelques étapes graphiques que nous de détaillerons pas ici, on arrive à un résultat comme celui-ci :

Évolution de l’aridité en France au XXIe siècle

Grâce à Python et Xarray, il n’a fallu que quelques lignes de code et un temps de calcul qui vous permet à peine d’aller chercher un café pour convertir 12Go de projections climatiques en une carte détaillée de l’aridité du territoire français à la fin XXIe siècle !

La comparaison entre la fin du XXe siècle et la fin du XXIe siècle permet de mieux comprendre ce qu’il se passe. Dans le scénario d’émissions modérées, le climat devient notablement plus aride sur les massifs montagneux et en Occitanie. Sur le reste du territoire, il y a peu de changements.

Dans le scénario d’émissions élevées, l’évolution est beaucoup plus contrastée. L’aridification est très marquée dans le sud de la France en particulier sur les Alpes, les Pyrénées, le Massif Central et en Corse, le nord de l’Espagne quant à lui devient quasi-désertique. Le climat des autres régions change aussi sensiblement mais dans le sens inverse. Il est évident qu’une telle évolution aurait des impacts économiques, environnementaux et humains majeurs.

A propos : Callendar est une start-up spécialisée dans le développement de solutions innovantes pour l’évaluation des risques climatiques. Conscients du défi que représente l’adaptation au changement climatique, nous nous efforçons de partager notre expertise au travers d’outils gratuits ou de tutoriels comme celui-ci.

--

--

Callendar

Start-up spécialisée dans l’exploitation des données climatiques, Callendar vous aide à prendre les bonnes décisions partout où le climat actuel et futur compte