Cartopy 中的风倒钩和矢量 - regrid_shape 的问题
Wind barbs and vectors in Cartopy - issue with regrid_shape
我最近从 Basemap 切换到 Cartopy,但在绘制风向量时遇到了一些问题。我有一个范围为 [-180,180,10,90] 的北极立体投影 (central_longitude=-100.0)。我有一个 netCDF 数据集,每 0.5 度纬度和经度具有 u、v 风值。
如果我使用 slice 绘制倒钩以手动跳过某个数字(因为数据太密集而无法绘制所有数据),我得到的似乎是该字段的正确表示(请参见下面的第一张图片) :
sknum = 15
skip=(slice(None,None,sknum),slice(None,None,sknum))
ax.barbs(lons[skip], lats[skip], u[skip],v[skip], length=6,
sizes=dict(emptybarb=0.25, spacing=.2, height=0.5),
zorder = 20,
linewidth=0.95, transform= ccrs.PlateCarree())
不过,这种方法看起来有点不自然,靠近杆子太密了。使用 cartopy 的 regrid_shape 功能给我一个更严重的错误(见第二张图片),同一向量的行一遍又一遍。
ax.barbs(lons, lats, u,v, length=6,
sizes=dict(emptybarb=0.25, spacing=.2, height=0.5),
zorder = 20,
linewidth=0.95, transform= ccrs.PlateCarree(), regrid_shape=20)
这是 regrid_shape 在此投影下的错误吗,我做错了什么吗,and/or 是否有另一种方法可以让我获得看起来自然的矢量?
在这个投影的极点转换矢量似乎是个问题。如果您从输入数据中删除极点,重新网格化将按预期工作。无论如何,在极点处绘制一个 multi-valued 的矢量场并没有什么意义,尤其是在这个极点是一个点的投影中,所以你不会通过删除数据来做任何不好的事情极点。
我最近从 Basemap 切换到 Cartopy,但在绘制风向量时遇到了一些问题。我有一个范围为 [-180,180,10,90] 的北极立体投影 (central_longitude=-100.0)。我有一个 netCDF 数据集,每 0.5 度纬度和经度具有 u、v 风值。
如果我使用 slice 绘制倒钩以手动跳过某个数字(因为数据太密集而无法绘制所有数据),我得到的似乎是该字段的正确表示(请参见下面的第一张图片) :
sknum = 15
skip=(slice(None,None,sknum),slice(None,None,sknum))
ax.barbs(lons[skip], lats[skip], u[skip],v[skip], length=6,
sizes=dict(emptybarb=0.25, spacing=.2, height=0.5),
zorder = 20,
linewidth=0.95, transform= ccrs.PlateCarree())
不过,这种方法看起来有点不自然,靠近杆子太密了。使用 cartopy 的 regrid_shape 功能给我一个更严重的错误(见第二张图片),同一向量的行一遍又一遍。
ax.barbs(lons, lats, u,v, length=6,
sizes=dict(emptybarb=0.25, spacing=.2, height=0.5),
zorder = 20,
linewidth=0.95, transform= ccrs.PlateCarree(), regrid_shape=20)
这是 regrid_shape 在此投影下的错误吗,我做错了什么吗,and/or 是否有另一种方法可以让我获得看起来自然的矢量?
在这个投影的极点转换矢量似乎是个问题。如果您从输入数据中删除极点,重新网格化将按预期工作。无论如何,在极点处绘制一个 multi-valued 的矢量场并没有什么意义,尤其是在这个极点是一个点的投影中,所以你不会通过删除数据来做任何不好的事情极点。