Données climatiques quadrillées ERA5

  • Produits utilisés : ERA5

Cet ensemble de données est externe à la plateforme Digital Earth Africa.

Mots-clés : données utilisées ; ERA5, ensembles de données ; ERA5, climat, température, précipitations, vent

Aperçu

Ce bloc-notes montre comment accéder et utiliser le produit de réanalyse climatique mondial du Centre européen pour les prévisions météorologiques à moyen terme (ECMWF) appelé ERA5, issu du programme AWS Public Dataset <https://registry.opendata.aws/ecmwf-era5/> ou de Google Cloud Storage <https://cloud.google.com/storage/docs/public-datasets/era5>.

Ce service opérationnel de 5e génération utilise les meilleures données d’observation disponibles provenant de satellites et de stations in situ, qui sont assimilées et traitées à l’aide du système de prévision intégré du CEPMMT. L’ensemble de données fournit des paramètres météorologiques atmosphériques essentiels tels que la température de l’air, la pression et le vent à différentes altitudes, ainsi que des paramètres de surface comme les précipitations et des paramètres de la mer comme la température de surface de la mer et la hauteur des vagues. La résolution spatiale est de 0,25 degré (latitude et longitude), ce qui équivaut à environ 31 km. Les données sont disponibles de 1979 à aujourd’hui et sont mises à jour de manière opérationnelle.

Pour obtenir des informations officielles sur cet ensemble de données, consultez la « documentation des données ERA5 de l’ECMWF <https://confluence.ecmwf.int/display/CKB/ERA5%3A+data+documentation> ».

Actuellement, l’ensemble de données AWS ERA 5 est obsolète. L’ensemble de données ERA5 utilisé dans le bloc-notes provient de Google Cloud Storage et couvre les années 1959 à 2022.

Description

Nous recommandons l’utilisation des données ERA5 au format Zarr qui permet un accès natif au cloud sans avoir besoin de télécharger les données.

15 variables de surface ou de niveau unique sont accessibles à l’aide de la fonction wrapper load_era5().

Catégorie

Variable

Nom pour la requête

Précipitation

Précipitations sur 6 heures

précipitations_totales_6h

Précipitations sur 12 heures

précipitations_totales_12h

Précipitations sur 24 heures

précipitations_totales_24h

Vent

Composante éolienne en U de 10 mètres

vent d’est à 10 mètres

Composante du vent V de 10 mètres

vent_du_nord_à_10_mètres

Température

Température à 2 mètres

température_de_l’air_à_2_mètres

Température de la surface de la mer

température_de_surface_de_la_mer

Pression atmosphérique

Pression au niveau moyen de la mer

pression_de_l’air_au_niveau_moyen_de_la_mer

Pression superficielle

pression_de_surface

Ce notebook présente des exemples d’accès et de travail avec les variables suivantes :

  1. Précipitations totales journalières

  2. Températures minimales et maximales quotidiennes de l’air à 2 mètres de hauteur

  3. Vitesse horaire du vent à 10 mètres de hauteur

  4. Température maximale mensuelle de l’air à 2 mètres de hauteur pour le continent


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

Importez les packages Python utilisés pour l’analyse.

[1]:
%matplotlib inline
import fsspec
import datacube
from matplotlib import pyplot as plt
import numpy as np
import rasterio as rio
import xarray as xr

from deafrica_tools.load_era5 import load_era5

Paramètres d’analyse

Définissez l’emplacement et la période de temps qui vous intéressent. Pour un test initial, utilisez une période de quelques mois maximum pour limiter l’accès aux données.

  • « lat » et « lon » : la plage de latitude et de longitude de la zone d’intérêt.

  • time : la plage de temps pour laquelle vous souhaitez extraire des données. Les heures peuvent être fournies sous forme de chaînes d’année, de mois ou de date ou d’objets datetime.

[2]:
# Lake Turkana Wind Power Station, Kenya
lat = (2.45, 2.55)
lon = (36.75, 36.85)

# Define the time window
time = '2021-01', '2021-03'

Précipitations totales journalières

Les précipitations totales correspondent à l’accumulation d’eau liquide et gelée, comprenant la pluie et la neige, qui tombe à la surface de la Terre. Elles n’incluent pas le brouillard, la rosée ou les précipitations qui s’évaporent dans l’atmosphère avant d’atterrir à la surface de la Terre. Les unités de ce paramètre sont la profondeur en mètres d’équivalent en eau. Il s’agit de la profondeur que l’eau aurait si elle était répartie uniformément sur la grille. Il convient d’être prudent lors de la comparaison des paramètres du modèle avec les observations, car les observations sont souvent locales à un point particulier dans l’espace et le temps, plutôt que de représenter des moyennes sur une grille de modèle.

Dans cet exemple, les précipitations totales sont agrégées à intervalles quotidiens.

Notez que la grille spatiale de sortie est alignée sur les points de la grille d’entrée les plus proches.

[3]:
var = 'total_precipitation_24hr'

precip = load_era5(var, lat, lon, time).compute()
[4]:
# convert to Millimeters (mm), keeping other attributes
attrs = precip[var].attrs
attrs['units']='mm'
precip = precip*1000
precip[var].attrs = attrs
[5]:
# plot daily total precipitation for this area
precip[var].sum(['lat','lon']).plot(figsize = (16,4), marker='o', markersize=4, linewidth=0);
plt.xlabel('Day');
plt.ylabel('%s (%s)'%('Total Precipitation', precip[var].attrs['units']));
../../../_images/sandbox_notebooks_Datasets_Climate_Data_ERA5_AWS_12_0.png

Températures minimales et maximales quotidiennes de l’air à 2 mètres de hauteur

L’estimation de la température de l’air est fournie en kelvin (K) et peut être convertie en degrés Celsius (°C) en soustrayant 273,15.

Dans cet exemple, les températures quotidiennes les plus élevées et les plus basses sont extraites.

Paramètres facultatifs utilisés pour charger les données :

  • reduce_func : fonction permettant d’agréger les données horaires d’entrée, définie sur np.max et np.min pour calculer la température maximale et minimale.

  • « resample » : fréquence de rééchantillonnage temporel, « 1D » (par défaut) pour l’agrégation quotidienne.

Notez que la grille spatiale de sortie est alignée sur les points de la grille d’entrée les plus proches.

[6]:
temp_var = 'air_temperature_at_2_metres'

temp_max = load_era5(temp_var, lat, lon, time, reduce_func=np.max, resample='1D').compute()

temp_min = load_era5(temp_var, lat, lon, time, reduce_func=np.min, resample='1D').compute()

[7]:
# convert to Celsius, keeping other attributes
attrs = temp_max.attrs
attrs['units']='C'
temp_max, temp_min = temp_max-273.15, temp_min-273.15
temp_max[temp_var].attrs = attrs
temp_min[temp_var].attrs = attrs
[8]:
# plot mean temperatures for this area
temp_max[temp_var].mean(['lat','lon']).plot(figsize = (16,4), label='Highest');
temp_min[temp_var].mean(['lat','lon']).plot(label='Lowest');
plt.legend();
plt.xlabel('Day');
plt.ylabel('%s (%s)'%('Tempeature at 2 metres', temp_max[temp_var].attrs['units']));
../../../_images/sandbox_notebooks_Datasets_Climate_Data_ERA5_AWS_16_0.png

Vitesse horaire maximale du vent à 10 mètres de hauteur

Le vent provoque des changements dans les caractéristiques de surface de certains types de couverture terrestre, par exemple la rugosité de la surface de l’eau. Une rugosité de surface accrue entraîne une augmentation de la rétrodiffusion radar mesurée. Bien qu’il soit généralement plus fort que le vent à la surface, le vent à 10 mètres de hauteur peut être utilisé pour signaler des conditions venteuses.

Dans ERA5, l’estimation du vent horizontal est fournie en mètres par seconde et est représentée par une composante est et une composante nord. Un signe négatif indique que l’air se déplace dans la direction opposée, par exemple vers l’ouest pour la composante est. Les deux composantes peuvent être combinées pour donner la vitesse et la direction du vent horizontal.

La vitesse du vent est très variable tout au long de la journée, l’échantillonnage est donc effectué toutes les heures.

Paramètres facultatifs utilisés pour charger les données :

  • « resample » : fréquence de rééchantillonnage temporel, « 1 h », de sorte que les données de sortie soient à la même fréquence que l’entrée.

Notez que la grille spatiale de sortie est alignée sur les points de la grille d’entrée les plus proches.

[9]:
east = "eastward_wind_at_10_metres"
north = "northward_wind_at_10_metres"

wind_east = load_era5(east, lat, lon, time, resample='6h').compute()

wind_north = load_era5(north, lat, lon, time, resample='6h').compute()

Combinez les deux composantes du vent pour obtenir la vitesse du vent

L’amplitude de la vitesse du vent est calculée à partir des composants U et V comme suit \(sqrt(U^2 + V^2)\).

[10]:
wind = (wind_east[east]**2 + wind_north[north]**2)**0.5
wind.attrs['units'] = wind_east[east].attrs['units']
[11]:
# plot mean wind speed for this area
wind.mean(['lat','lon']).plot(figsize = (16,4));
plt.ylabel('%s (%s)'%('wind speed at 10 metres', wind.attrs['units']));
../../../_images/sandbox_notebooks_Datasets_Climate_Data_ERA5_AWS_21_0.png

Température maximale mensuelle de l’air à 2 mètres de hauteur

Dans cet exemple, la température maximale de l’air à 2 mètres de hauteur est récupérée mensuellement pour le continent africain.

Les plages de latitude et de longitude sont définies pour couvrir le continent. La plage horaire est définie de janvier à mars 2021.

Paramètres facultatifs utilisés pour charger les données :

  • reduce_func : fonction permettant d’agréger les données horaires d’entrée, définie sur np.max pour calculer la température maximale.

[12]:
temp_var = 'air_temperature_at_2_metres'

temp_max_month = load_era5(temp_var, (-40, 40), (-20, 60), ('2021-01', '2021-03'), reduce_func=np.max, resample='1M').compute()

# convert to Celsius, keeping other attributes
attrs = temp_max_month.attrs
attrs['units']='C'
temp_max_month = temp_max_month-273.15
temp_max_month[temp_var].attrs = attrs
[13]:
# plot for each month
temp_max_month[temp_var].plot(col='time', col_wrap=3, vmin=-20, vmax=50, cmap = 'coolwarm', figsize=(16, 5));
../../../_images/sandbox_notebooks_Datasets_Climate_Data_ERA5_AWS_24_0.png

Informations Complémentaires

Licence : Le code de ce carnet est sous licence Apache, version 2.0 <https://www.apache.org/licenses/LICENSE-2.0>. Les données de Digital Earth Africa sont sous licence Creative Commons par attribution 4.0 <https://creativecommons.org/licenses/by/4.0/>.

Contact : Si vous avez besoin d’aide, veuillez poster une question sur le canal Slack Open Data Cube <http://slack.opendatacube.org/>`__ ou sur le GIS Stack Exchange en utilisant la balise open-data-cube (vous pouvez consulter les questions posées précédemment ici). Si vous souhaitez signaler un problème avec ce bloc-notes, vous pouvez en déposer un sur Github.

Version de Datacube compatible :

[14]:
print(datacube.__version__)
1.8.15

Dernier test :

[15]:
from datetime import datetime
datetime.today().strftime('%Y-%m-%d')
[15]:
'2024-02-01'