GeoViews:使用 matplotlib 后端添加图块底图 回答后编辑

问题描述

使用 matplotlib 后端,是否可以将图块底图(例如 OSM)添加到 GeoViews 绘图,例如通过以某种方式调用 contextily?使用 Bokeh 后端,这是通过 gv.tile_sources 完成的,然后将其添加到叠加层,但 mpl 后端是否有类似的功能?

回答后编辑

添加一个可重现的示例,假设在后端之间切换,并在 EPSG:4326 中使用邻域级多边形 gdfs。

最初让我认为无法添加底图的原因是 (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'],opts.Overlay(backend='matplotlib'),opts.WMTS(zoom=13,backend='matplotlib'),projection=ccrs.Mercator()
        )
        
gv.output(layout,size=500,fig='svg',backend='matplotlib')

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)