add_wmts
方法在底层使用 WMTSRasterSource
。它的文档字符串说它使用缓存来重复检索,并且快速、不知情地浏览一下源表明它在发出请求之前确实检查了某种本地缓存。
但是,如果我在 Matplotlib 中使用 Cartopy 设置了一个简单的图形,则重复调用代码会生成网络流量,建议从 WMTS 源重复下载。很多时候,我会对与图像无关的地图进行一些小调整,并且不想每次都下载图像(或者被限制或禁止)。
cartopy.config['data_dir']
设置为默认位置并包含其他类型的缓存数据(SRTM 高程数据、自然地球数据等)
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
plt.figure()
ax = plt.subplot(1,1,1,projection=ccrs.Mercator())
ax.set_extent([-122.55, -122, 37.4, 37.85], crs=ccrs.PlateCarree())
ax.add_wmts('https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapServer/WMTS/1.0.0/WMTSCapabilities.xml', layer_name='USGSImageryOnly')
plt.show()
在这种情况下如何让 Cartopy 使用本地缓存?
事实证明这是预期的行为,并且文档中提到的缓存是按图计算的,以提高交互式绘图的速度。 WMTSRasterSource 尚未实现本地缓存。