Je veux tracer les centres de basse pression au fil du temps comme un moyen de «suivre» les tempêtes extrêmes dans le nord-ouest de l'Europe. Je peux le faire en traçant les contours de la basse pression comme ceci :

import pandas as pd
import matplotlib.pyplot as plt
import xarray

ds = xarray.open_mfdataset('D:\Data\CORDEX\Historical\*.nc')
ds

Printout of ds

plot = ds.psl[0].plot()
plot = ds.psl.isel(time=0).plot.contour('lon','lat', 
                                         levels=12, cmap = 'RdBu_r',vmax = 99000, ax=ax);

Cela me montre des contours pour les valeurs de basse pression comme ceci :

enter image description here

C'est bien mais ça ne fait pas vraiment ce que je veux. Idéalement, je voudrais qu'un seul point au centre de la dépression soit tracé sur la carte, puis pouvoir suivre cette dépression à chaque pas de temps, en produisant une ligne ou une série de points pour montrer la progression de la dépression -centre de pression dans le temps.

Comme je veux le faire pour des données de 3 heures sur 150 ans, je pense qu'il doit y avoir un moyen plus simple de le faire en utilisant xarray que ce à quoi je peux penser.

J'aimerais éventuellement tracer des pseudo « trajectoires de tempête » en fonction de la gravité de la basse pression et de la vitesse du vent environnant (à partir du même modèle), alors peut-être que la fonction de contour n'est pas la bonne à utiliser ? Je ne suis pas sûr.

Je ne m'intéresse qu'au nord-ouest de l'Europe mais je peux définir l'étendue de l'intrigue plus tard pour n'inclure que cette zone.

J'apprécierais vraiment toute aide. En fin de compte, je voudrais une carte simple du nord-ouest de l'Europe avec montrant les traces de tempête et leur gravité pour les périodes historiques et futures.

0
Pad 11 oct. 2020 à 12:57

1 réponse

Meilleure réponse

Vous pouvez utiliser le logiciel de suivi des tempêtes Open Source ou vous devez créer votre propre solution.

Si vous souhaitez développer votre propre solution, je vous recommande d'utiliser un algorithme pour trouver les minima (et maxima) locaux.

Par exemple. scipy et numpy fournissant un bon premier essai :

from scipy import signal
import numpy as np

minimums = signal.argrelextrema(ds.psl.values, np.less)

Une autre idée est de dériver d'abord le gradient. Vous pouvez utiliser xarray.DataArray.differentiate à cette fin. Le gradient doit être nul au centre d'un système à haute ou basse pression.

1
dl.meteo 14 oct. 2020 à 07:20