Построение центров низкого давления с течением времени с использованием рентгеновских данных и данных CORDEX

Я хочу построить центры низкого давления с течением времени как способ «отслеживания» экстремальных штормов на северо-западе Европы. Я могу сделать это, построив контуры низкого давления следующим образом:

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

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

Распечатка 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);

Это показывает мне контуры для значений низкого давления, например:

введите описание изображения здесь

Это нормально, но на самом деле это не то, что я хочу. В идеале я хотел бы, чтобы на карте была нанесена только одна точка в центре депрессии низкого давления, а затем была бы возможность отслеживать это низкое давление на каждом временном шаге, создавая линию или серию точек, чтобы показать прогрессию низкого давления. -центр давления с течением времени.

Поскольку я хочу сделать это для трехчасовых данных за 150 лет, я думаю, что должен быть более простой способ сделать это с помощью xarray, чем я могу думать.

В конце концов, я хотел бы построить псевдо «следы шторма» в зависимости от силы низкого давления и скорости окружающего ветра (из того же прогона модели), так что, может быть, контурная функция не подходит для использования? Я не уверен.

Меня интересует только Северо-Западная Европа, но я могу установить размер участка позже, чтобы включить только эту область.

Буду очень признателен за любую помощь. В конце концов, мне нужна простая карта Северо-Западной Европы с указанием следов штормов и их силы для исторического и будущего периодов.


person Pad    schedule 11.10.2020    source источник


Ответы (1)


вы можете использовать программное обеспечение для отслеживания штормов с открытым исходным кодом, или вам нужно будет создать собственное решение.

Если вам интересно разработать собственное решение, я рекомендую использовать алгоритм для поиска локальных минимумов (и максимумов).

Например. scipy и numpy обеспечивают хорошую первую попытку:

from scipy import signal
import numpy as np

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

Другая идея состоит в том, чтобы сначала получить градиент. Вы можете использовать xarray.DataArray.differentiate для этой цели. Градиент должен быть нулевым в центре системы высокого или низкого давления.

person dl.meteo    schedule 14.10.2020
comment
Ах, я не знал, что там уже есть программное обеспечение - большое спасибо за эту ссылку и ваш совет. - person Pad; 15.10.2020
comment
@Pad Если этот пост помог вам найти решение, оцените мой ответ как полезный. Удачного дня и веселья с метеоданными;) - person dl.meteo; 16.10.2020