Anomalies de précipitations provenant des données de la station de précipitations infrarouges du Climate Hazards Group (CHIRPS)#
Produits utilisés : rainfall_chirps_monthly
Mots-clés : datasets; CHIRPS, climat, précipitations, mensuel
Aperçu#
Les anomalies pluviométriques sont des écarts de précipitations par rapport aux moyennes à long terme. Elles sont utiles pour identifier les périodes humides et sèches qui peuvent être liées à des phénomènes influencés par le climat, tels que les inondations, le débit des rivières et la production agricole.
Description#
Dans cet exemple concret, nous allons calculer les anomalies de précipitations pour un pays africain sélectionné à l’aide de l’ensemble de données mensuelles sur les précipitations CHIRPS. L’anomalie standardisée est calculée comme suit :
\begin{equation} \text{Anomalie normalisée}=\frac{x-m}{s} \end{equation}
x est la moyenne saisonnière, m est la moyenne à long terme et s est l’écart type à long terme.
Cela signifie que nous avons besoin d’une période de référence à long terme (m) et d’une période d’intérêt (x) pour lesquelles nous calculerons les anomalies. Ce bloc-notes nomme les ensembles de données « ds_rf_m » et « ds_rf_x » en conséquence.
Le carnet décrit :
Chargement d’un fichier de formes pour les pays africains et sélection d’un seul pays
Chargement des données de précipitations et masquage de celles-ci en fonction du pays sélectionné.
Calcul des anomalies mensuelles de précipitations et représentation du résultat, agrégé dans l’espace, sous forme de graphique à barres.
Calcul et représentation spatiale des anomalies mensuelles de précipitations.
Commencer#
Pour exécuter cette analyse, exécutez toutes les cellules du bloc-notes, en commençant par la cellule « Charger les packages ».
Charger des paquets#
[1]:
%matplotlib inline
# Force GeoPandas to use Shapely instead of PyGEOS
# In a future release, GeoPandas will switch to using Shapely by default.
import os
os.environ['USE_PYGEOS'] = '0'
import datacube
import numpy as np
import pandas as pd
import geopandas as gpd
import xarray as xr
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from odc.geo.geom import Geometry
from odc.geo import CRS
from deafrica_tools.spatial import xr_rasterize
from deafrica_tools.dask import create_local_dask_cluster
Configurer un cluster Dask#
Dask peut être utilisé pour mieux gérer l’utilisation de la mémoire et effectuer l’analyse en parallèle. Pour une introduction à l’utilisation de Dask avec Digital Earth Africa, consultez le Dask notebook.
Remarque : nous vous recommandons d’ouvrir la fenêtre de traitement Dask pour afficher les différents calculs en cours d’exécution ; pour ce faire, consultez la section Tableau de bord Dask en Afrique de l’Ouest du Dask notebook.
Pour utiliser Dask, configurez le cluster de calcul local à l’aide de la cellule ci-dessous.
[2]:
create_local_dask_cluster()
Client
Client-a9724b44-33f3-11f1-830d-4e2ec4a7c32d
| Connection method: Cluster object | Cluster type: distributed.LocalCluster |
| Dashboard: /user/mpho.sadiki@digitalearthafrica.org/proxy/8787/status |
Cluster Info
LocalCluster
f11f6029
| Dashboard: /user/mpho.sadiki@digitalearthafrica.org/proxy/8787/status | Workers: 1 |
| Total threads: 4 | Total memory: 26.21 GiB |
| Status: running | Using processes: True |
Scheduler Info
Scheduler
Scheduler-d31c6b92-2579-437b-a83b-d77305c683a3
| Comm: tcp://127.0.0.1:45465 | Workers: 0 |
| Dashboard: /user/mpho.sadiki@digitalearthafrica.org/proxy/8787/status | Total threads: 0 |
| Started: Just now | Total memory: 0 B |
Workers
Worker: 0
| Comm: tcp://127.0.0.1:43059 | Total threads: 4 |
| Dashboard: /user/mpho.sadiki@digitalearthafrica.org/proxy/34279/status | Memory: 26.21 GiB |
| Nanny: tcp://127.0.0.1:34533 | |
| Local directory: /tmp/dask-scratch-space/worker-2o4babtm | |
Paramètres d’analyse#
La cellule suivante définit des paramètres importants pour l’analyse :
« pays » : dans cette analyse, nous sélectionnerons un pays africain pour masquer l’ensemble de données et l’analyse.
time_m: les précipitations mensuelles CHIRPS sont disponibles à partir de 1981. La moyenne à long terme des anomalies de précipitations est souvent calculée sur une période de 30 ans, nous utiliserons donc la période de 1981 à 2011 dans cet exemple.time_x: C’est la période pour laquelle nous voulons calculer les anomalies.« résolution » : nous utiliserons 5 000 m, ce qui correspond approximativement à la résolution par défaut indiquée ci-dessus.
dask_chunks: la taille des morceaux dask, dask divise les données en morceaux gérables qui peuvent être facilement stockés en mémoire, par exemple dict(x=1000,y=1000)
L’anomalie standardisée est calculée comme suit :
\begin{equation} \text{Anomalie normalisée}=\frac{x-m}{s} \end{equation}
\(x\) est la moyenne saisonnière, \(m\) est la moyenne à long terme et \(s\) est l’écart type à long terme.
Cela signifie que nous avons besoin d’une période de référence à long terme (m) et d’une période d’intérêt (x) pour lesquelles nous calculerons les anomalies. Ce bloc-notes nomme les ensembles de données « ds_rf_m » et « ds_rf_x » en conséquence.
Si vous exécutez le bloc-notes pour la première fois, conservez les paramètres par défaut ci-dessous. Cela permettra de démontrer le fonctionnement de l’analyse et de fournir des résultats significatifs.
[3]:
# Select a country, for the example we will use Kenya, a complete list of countries is available below.
country = "Kenya"
# Set the range of dates for the climatology, this will be the reference period (m) for the anomaly calculation.
# Standard practice is to use a 30 year period, so we've used 1981 to 2011 in this example.
time_m = ('1981', '2011')
# time period for monthly anomaly (x)
time_x = ('1981', '2021')
# CHIRPS has a spatial resolution of ~5x5 km
resolution = (-5000, 5000)
#size of dask chunks
dask_chunks = dict(x=500,y=500)
Se connecter au datacube#
Connectez-vous au datacube pour que nous puissions accéder aux données de DE Africa. Le paramètre « app » est un nom unique pour l’analyse qui est basé sur le nom du fichier du notebook.
[4]:
dc = datacube.Datacube(app='rainfall_anomaly')
Charger le fichier de formes des pays africains#
Ce shapefile contient des polygones pour les frontières des pays africains et nous permettra de calculer les anomalies de précipitations dans un pays choisi
[5]:
african_countries = gpd.read_file('../Supplementary_data/Rainfall_anomaly_CHIRPS/african_countries.geojson')
african_countries.explore()
[5]: