MetPy suface_based_cape_cin返回单位错误



在我的站点上,MetPy在尝试调用surface_based_cape_cin 时返回单位错误,这是一个问题

我看到以下错误:

Traceback (most recent call last):
File "Advanced_Sounding_3Dnetcdf2.py", line 202, in <module>
sbcape, sbcin = mpcalc.surface_based_cape_cin(p1, T1, Td1)
File "/gpfs/group/kal6112/default/sw/anaconda3/lib/python3.6/site-packages/metpy/xarray.py", line 677, in wrapper
return func(*args, **kwargs)
File "/gpfs/group/kal6112/default/sw/anaconda3/lib/python3.6/site-packages/metpy/units.py", line 320, in wrapper
return func(*args, **kwargs)
File "/gpfs/group/kal6112/default/sw/anaconda3/lib/python3.6/site-packages/metpy/calc/thermo.py", line 1851, in surface_based_cape_cin
return cape_cin(p, t, td, profile)
File "/gpfs/group/kal6112/default/sw/anaconda3/lib/python3.6/site-packages/metpy/xarray.py", line 677, in wrapper
return func(*args, **kwargs)
File "/gpfs/group/kal6112/default/sw/anaconda3/lib/python3.6/site-packages/metpy/units.py", line 319, in wrapper
raise ValueError(msg)
ValueError: `cape_cin` given arguments with incorrect units: `temperature` requires "[temperature]" but given "none", `dewpt` requires "[temperature]" but given "none".

当我检查输入值p1、T1和Td1时,它们都具有正确的单位(hectopascal、degree_Celcius(。

为了确保在调用surface_based_cape_cin:之前,我添加了以下内容并检查了结果

p1 = units.hPa * phPa
T1 =  units.degC * TdegC
Td1 = units.degC * TddegC

我正在运行以下版本的MetPy

# Name                    Version                   Build  Channel
metpy                     0.12.2                     py_0    conda-forge

我不记得在更新到这个版本之前有过这种情况,但我不能确定我看到的问题是否在更新后出现。

感谢您提供的任何帮助。

这肯定是MetPy中的一个错误,可能是由于屏蔽数组和保留单元带来的更多挑战。我新开了一期。与此同时,作为一种变通方法,最好用之类的东西来消除屏蔽的阵列

p1 = p1.compressed() * p1.units
T1 = T1.compressed() * T1.units
Td1 = Td1.compressed() * Td1.units

只要数据没有实际屏蔽值,或者如果所有3个阵列都在同一点屏蔽,这将起作用。如果没有,您将需要做更多的工作来删除其中一个值被屏蔽的任何级别。

最新更新