Расчет завихренности для нескольких вертикальных уровней в MetPy

лучший способ (для меня) сделать его следующей инфраструктурой:

<form method="POST">
<input type="submit" formaction="default_url_when_press_enter" style="visibility: hidden; display: none;">
<!-- all your inputs -->
<input><input><input>
<!-- all your inputs -->
<button formaction="action1">Action1</button>
<button formaction="action2">Action2</button>
<input type="submit" value="Default Action">
</form>

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

2
задан Alex Konrad 5 March 2019 в 16:45
поделиться

1 ответ

К сожалению, появившееся сообщение об ошибке не очень полезно в этом случае, если вы не знаете, что искать!

Проблема с вызовом функции vorticity в вашем примере заключается в том, что Размерность ваших входных переменных не совпадает. data['u_wind'] и data['v_wind'] являются трехмерными массивами с формой (29, 118, 292), но dx и dy, поскольку они были вычислены из lat_lon_grid_deltas, являются двумерными массивами с формами (118, 291) и (117, 292) соответственно. Итак, нам нужно получить массивы, которые передают соответствующим образом ... Есть много разных способов сделать это, но я бы порекомендовал два варианта:

Вариант 1: Ручное вещание [ 1123]

Поскольку «дополнительное» измерение, в котором отсутствуют dx и dy, является первым измерением (по вертикали), мы можем просто превратить dx и dy в правильно выровненные трехмерные массивы путем вставки начального размера первого размера:

dx, dy = mpcalc.lat_lon_grid_deltas(lon, lat, initstring=data_crs.proj4_init)
dx = dx[None, :]
dy = dy[None, :]

vort = mpcalc.vorticity(data['u_wind'], data['v_wind'], dx, dy)

Вариант 2: Используйте вспомогательную функцию grid_deltas_from_dataarray()

MetPy также имеет вспомогательная функция, облегчающая извлечение дельты сетки из xarray DataArray. Это также обеспечивает правильное вещание, поэтому вам не придется делать это самостоятельно. Используя его в вашем примере, это будет:

dx, dy = mpcalc.grid_deltas_from_dataarray(data['u_wind'])

vort = mpcalc.vorticity(data['u_wind'], data['v_wind'], dx, dy)
0
ответ дан Jon Thielen 5 March 2019 в 16:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: