2017-07-31 84 views
1

我想绘制使用cartopy在AzimuthalEquidistant投影上的一些数据。但是,它给了我几个问题。首先海岸线不再显示这种类型的投影。不知道这是我的代码还是Cartopy问题。我还注意到,如果我在pcolormesh命令中使用ccrs.PlateCarree()转换,海岸线确实会显示,但据推测,我的数据是错误类型的预测?Cartopy Azimuthal等距投影:放大到一个区域和海岸线

第二,如果绘制数据后轴边界是圆形的,是否可以使用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) 

回答

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