MetPy 1.0版本metpy.calc.vorticity函数使用问题咨询
MetPy 1.0 vorticity函数调用问题解答
1. 新参数结构中*的含义
这个*是Python语法中的仅关键字参数分隔符,表示*之后的所有参数(dx、dy、x_dim、y_dim)只能以关键字参数的形式传入,不能作为位置参数传递,是MetPy 1.0为了避免参数传递错位新增的强制规范。
2. 仅传入(u, v)报错的原因
dx、dy设置默认值None是为了适配xarray DataArray类型的输入:如果你的u、v是携带经纬度坐标信息的DataArray,MetPy可以自动从坐标中推导网格间距,不需要手动传入dx、dy。
但你当前传入的是普通numpy数组(或仅带单位的Quantity对象,无内置坐标信息),MetPy无法自行获取网格的经纬度信息计算间距,所以必须手动传入dx、dy才能完成计算。
3. 旧写法报错的解决方法
你沿用旧版本的位置参数写法传递dx、dy,触发了仅关键字参数的限制,所以会报参数过多的错误。只需要将dx、dy改为关键字参数传入即可。
你代码中对应的vorticity调用行修改为:
# 注意先确认uwnd_700已正确定义并附上m/s单位,和vwnd_700的处理保持一致 avor700 = mpcalc.vorticity(np.squeeze(uwnd_700), np.squeeze(vwnd_700), dx=dx, dy=dy)
另外你提到同一份数据调用geostrophic_wind没有问题,是因为该函数目前还没有调整为仅关键字参数的规范,所以位置参数可以正常传递,两个函数的参数校验规则不同。
内容的提问来源于stack exchange,提问作者Ehsan
相关产品推荐
相关产品推荐

