Python北极极射投影下稀疏绘制风羽的问题求解
北极极射投影下风羽调整的解决方案
你当前代码中手动稀疏风场不生效的核心原因是barbs方法传入了*regrid_shape=35*参数,该参数会触发cartopy自动对输入风场做重采样,完全覆盖你手动做的经纬度、uv分量切片操作,导致自定义间隔失效。
解决方案
方案1:关闭自动重采样,使用自定义间隔采样
直接删除regrid_shape参数即可,此时你写的[::2]切片会完全生效,需要更稀疏的风场直接调大切片步长(比如改成[::3]、[::4])即可。
修改后的参考代码:ax3.barbs(u10_2['lon'][::3].values, u10_2['lat'][::3].values, u10_2[::3,::3].values, v10_2[::3,::3].values, transform=ccrs.PlateCarree(), pivot='middle', sizes=dict(emptybarb=0.1, height=0.4), length=6, color='black', linewidth=1, alpha=0.8, barb_increments=dict(half=.5, full=1, flag=5))方案2:使用自动重采样调整稀疏度
无需手动做切片,直接修改regrid_shape的数值即可,数值越小风羽越稀疏。该方案更适配极射投影这类存在坐标变形的场景,采样点分布更均匀,不会出现高纬/低纬区域疏密不均的问题:
修改后的参考代码:# 无需对lon、lat、u、v做切片,直接用全量数据 ax3.barbs(u10_2['lon'].values, u10_2['lat'].values, u10_2.values, v10_2.values, transform=ccrs.PlateCarree(), pivot='middle', sizes=dict(emptybarb=0.1, height=0.4), length=6, color='black', regrid_shape=20, linewidth=1, alpha=0.8, barb_increments=dict(half=.5, full=1, flag=5))
其他效果调整建议
- 极射投影下显示比例和等经纬度投影不同,可适当调大
length参数到5~7,风羽会更清晰 - 原来的
emptybarb=0.0000001数值过小,可能导致弱风风羽显示异常,建议改成0.1~0.2 sizes中的height参数调整到0.3~0.4,风羽比例会更协调
内容的提问来源于stack exchange,提问作者Evelien
相关产品推荐
相关产品推荐

