使用底图我用来添加我的自定义边界shapefile:
map = Basemap(..)
map.readshapefile(file.shp, 'attribute', drawbounds=True)
我如何使用cartopy做同样的事?
我试过了:
ax.add_feature(cfeature.shapereader.Polygon('file.shp'))
但那不起作用..
答案 0 :(得分:9)
目前还没有ShapefileFeature类(虽然这很容易创建,并且可能很有意义)所以如果你真的想要使用这个功能界面,那么就有一个环节可以跳过:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from cartopy.io.shapereader import Reader
from cartopy.feature import ShapelyFeature
fname = '50m_glaciated_areas.shp'
ax = plt.axes(projection=ccrs.Robinson())
shape_feature = ShapelyFeature(Reader(fname).geometries(),
ccrs.PlateCarree(), facecolor='none')
ax.add_feature(shape_feature)
plt.show()
或者,您可以使用add_geometries方法,该方法没有使用功能接口(因此,将来不会优化从磁盘读取实际绘制的几何图形,因为使用ShapefileFeature类的情况):
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from cartopy.io.shapereader import Reader
fname = '50m_glaciated_areas.shp'
ax = plt.axes(projection=ccrs.Robinson())
ax.add_geometries(Reader(fname).geometries(),
ccrs.PlateCarree(),
facecolor='white', hatch='xxxx')
plt.show()
HTH