You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用cartopy+quiver调整全球辐散风矢量密度的报错解决

报错原因

切片逻辑错误导致数组形状不匹配:

  • 读取的lon、lat是一维数组,分别对应经度、纬度格点坐标
  • NCEP再分析的风场u、v是二维数组,维度顺序为[纬度, 经度]
  • 之前对四个数组统一使用[::3]的一维切片,仅对二维风场的纬度方向做了采样,经度方向仍保留原始格点数量,经cartopy自动生成经纬度网格后,x/y坐标数组和风场u/v数组形状完全不一致,触发ValueError。
修复方法

对二维风场的纬度、经度两个维度同时按步长采样,一维经纬度数组单独做对应维度的步长切片即可,参考代码如下:

# 定义采样步长,数值越大矢量越稀疏,可根据显示效果调整
step = 3

# 分别对经纬度一维数组采样
lon_sampled = lon.to_numpy()[::step]
lat_sampled = lat.to_numpy()[::step]
# 对u、v二维数组的两个维度同时采样,顺序对应[纬度方向, 经度方向]
u_sampled = u_850.to_numpy()[::step, ::step]
v_sampled = v_850.to_numpy()[::step, ::step]

ax = plt.axes(projection=ccrs.PlateCarree(central_longitude=180))
q = ax.quiver(lon_sampled, lat_sampled, u_sampled, v_sampled,
              width=0.00095, scale_units='xy', scale=3,
              transform=ccrs.PlateCarree())

调试提示

如果运行后出现风矢量位置和海岸线错位,先打印四个数组的形状验证,满足以下要求即可正常运行:

  • lon_sampled.shape为一维结构,长度为采样后的经度格点数
  • lat_sampled.shape为一维结构,长度为采样后的纬度格点数
  • u_sampled.shape、v_sampled.shape为二维结构,形状为(采样后纬度格点数, 采样后经度格点数)

内容的提问来源于stack exchange,提问作者Tanu Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 04:33:43