GeoViews:使用 matplotlib 后端添加瓦片底图

GeoViews: adding a tile basemap using matplotlib backend

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

Post-答案编辑

添加一个可重现的例子,假设一个人在后端之间切换,并在 EPSG:4326.

中使用邻域级多边形 gdfs

最初让我认为添加底图是不可能的是 (1) 没有定义 WMTS 缩放级别(导致绘制无法辨认的像素化文本而不是要素),并且在阅读 James 的回答后,(2)最后而不是首先将 tiles 层添加到布局中,这导致 tiles 覆盖多边形层(在 bokeh 后端不是问题,但对于 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')

好的,same as for Bokeh:

import geoviews as gv
from geoviews import opts, tile_sources as gvts
gv.extension('matplotlib')

opts.defaults(
    opts.Layout(sublabel_format='', vspace=0.1, hspace=0.1, fig_size=200),
    opts.WMTS(zoom=0))

(gvts.Wikipedia + gvts.StamenToner + gvts.EsriNatGeo + gvts.EsriImagery +
 gvts.EsriUSATopo + gvts.EsriTerrain + gvts.EsriReference + gvts.StamenTerrain).cols(4)