Cartopy AzimuthalEquidistant投影:放大区域和海岸线

时间:2017-07-31 16:15:47

标签: cartopy

我正在尝试使用cartopy在AzimuthalEquidistant投影上绘制一些数据。但是,它给了我一些问题。首先,海岸线不再显示此类投影。不确定这是我的代码还是Cartopy问题。我还注意到如果我在pcolormesh命令中使用ccrs.PlateCarree()变换,海岸线确实显示但是,假设我的数据是错误的预测类型?

其次我更喜欢在绘制数据后轴寄存器是圆形的,是否可以使用set_extent或类似的功能来执行此操作? 下面的代码应该重现问题,圆圈显示我希望寄宿生看起来如何。

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import matplotlib.patches as mpatches

clat = 55.0
clon = -8.0
lons = np.arange(clon-15,clon+16,0.5)
lats = np.arange(clat-15,clat+16,0.5)
d = np.random.rand(lons.shape[0],lats.shape[0])

trans = ccrs.AzimuthalEquidistant(central_latitude=clat, central_longitude=clon)

ax = plt.axes(projection=trans)
ax.coastlines(resolution='10m')

CB=ax.pcolormesh(lons-0.25, lats-0.25, d.T, 
                 cmap=plt.cm.viridis, alpha=0.5,
                 transform=trans)#ccrs.PlateCarree())

p1 = mpatches.Circle((clon,clat), radius=15, color='k', lw=5, fill=False,
                     transform=trans)
ax.add_patch(p1)

1 个答案:

答案 0 :(得分:0)

如果您绘制的数据是纬度/经度坐标,那么transform关键字的正确值确实为ccrs.PlateCarree()。这是新用户常见的问题。 transform参数告诉cartopy您的数据所在的坐标,并且完全独立于您要绘制到的projection

要使图表循环,您需要自己设置边界。 Cartopy文档有几个例子:http://scitools.org.uk/cartopy/docs/latest/examples/always_circular_stereo.htmlhttp://scitools.org.uk/cartopy/docs/latest/examples/star_shaped_boundary.html