【发布时间】:2021-10-05 17:46:16
【问题描述】:
使用matplotlib 后端,是否可以向GeoViewsplot 添加图块底图(例如 OSM),例如以某种方式调用contextily?使用Bokeh 后端,这是通过gv.tile_sources 完成的,然后将其添加到覆盖中,但是mpl 后端是否有类似的功能?
回答后编辑
添加一个可重现的示例,假设一个在后端之间切换,并在 EPSG:4326 中使用邻域级多边形 gdf。
最初让我认为不可能添加底图的原因是 (1) 没有定义 WMTS 缩放级别(导致绘制无法辨认的像素化文本而不是特征),并且在阅读了 James 的回答后,(2) 添加了瓦片层到布局的最后,而不是第一个,这导致瓦片覆盖多边形层(在散景后端不是问题,但显然使用 matplotlib 确实很重要)。
import geoviews as gv
from geoviews import opts
from cartopy import crs as ccrs
gv.extension('bokeh', 'matplotlib')
tiles = gv.tile_sources.OSM()
layout = tiles * gv.Polygons(gdf1, group="group1") * gv.Polygons(gdf2, group="group2")
layout.opts(
opts.Polygons('group1', cmap=['red'], backend="matplotlib"),
opts.Polygons('group2', cmap=['lightgrey'], backend="matplotlib"),
opts.Overlay(backend='matplotlib'),
opts.WMTS(zoom=13, backend='matplotlib'),
projection=ccrs.Mercator()
)
gv.output(layout, size=500, fig='svg', backend='matplotlib')
【问题讨论】: