Pythoni c способ подсчета осадков воды? - PullRequest
0 голосов
/ 16 апреля 2020

Я использую данные повторного анализа ERA5 из RDA NCAR. Я использую metpy dewpoint_from_relative_humidity () для вычисления точки росы, затем я преобразую ее в объект DataArray и назначаю координаты и измерения, соответствующие объекту набора данных, в котором у меня есть данные ERA5. Я бы хотел вычислить осаждаемую воду, используя метафизическую осадку в), но Я изо всех сил пытаюсь найти наиболее эффективный способ выполнить этот расчет, поскольку он предназначен для работы с массивами (зондированиями), а не с сетками данных. Я посмотрел на xr.apply_ufun c (), но я не уверен, будет ли это подходящим применением этой функции xarray или, честно говоря, даже как я ее выполню. Я мог бы написать вложенные для loop / while циклы, но я не думаю, что это лучший способ сделать это. У кого-нибудь есть предложения? Я попробовал строку ниже, но она говорит мне слишком много позиционных аргументов, и я не думаю, что это можно сделать, поскольку ds ['TD'] не является массивом.

ds['TD']  = xr.DataArray(mpcalc.dewpoint_from_relative_humidity(ds['T'],ds['R']),dims=['level','latitude','longitude'],coords=ds.coords)
ds['PW'] = xr.DataArray(mpcalc.precipitable_water(ds['TD'],ds.level,1000.0,700.0),dims=['level','latitude','longitude'],coords=ds.coords)

1 Ответ

0 голосов
/ 17 апреля 2020

Я предполагаю, что вы используете MetPy 1.0 (rc1). Для этого вызов функции precipitable_water() был изменен и теперь использует аргументы только для ключевых слов для bottom и top. Я ожидаю, что следующее будет работать:

pw = mpcalc.precipitable_water(ds['TD'], ds.level, bottom=1000.0, top=700.0)
...