You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GeoViews使用matplotlib后端添加瓦片底图的实现方法咨询

GeoViews matplotlib后端添加瓦片底图说明

核心问题解答

使用matplotlib后端时,完全可以为GeoViews绘图添加OSM这类瓦片底图,无需额外调用contextily实现,和Bokeh后端的调用逻辑一致,直接通过gv.tile_sources获取瓦片资源后添加到叠加层即可。

常见底图显示异常原因

此前无法正常显示底图通常由以下两个操作问题导致:

  • 未定义WMTS图层的缩放级别,会渲染出无法识别的像素化内容,无法展示正常地物
  • matplotlib后端对图层叠加顺序敏感,需要将瓦片层放在叠加表达式的最前面,如果放在最后会覆盖上层的矢量图层,该层叠顺序问题在Bokeh后端不会出现

多后端适配可复现代码

以下代码支持bokeh、matplotlib双后端切换,适配EPSG:4326坐标系的街道级多边形GeoDataFrame场景:

import geoviews as gv
from geoviews import opts
from cartopy import crs as ccrs

# 同时加载bokeh、matplotlib后端
gv.extension('bokeh', 'matplotlib')

# 加载OSM瓦片底图
tiles = gv.tile_sources.OSM()

# 图层叠加注意瓦片放在最前面,gdf1、gdf2为EPSG:4326坐标系的多边形GeoDataFrame
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'),
            # 指定wmts缩放级别避免底图糊
            opts.WMTS(zoom=13, backend='matplotlib'),
            # 瓦片底图默认基于墨卡托投影
            projection=ccrs.Mercator()
        )
        
# 指定输出参数,切换backend参数即可切换渲染后端
gv.output(layout, size=500, fig='svg', backend='matplotlib')

内容的提问来源于stack exchange,提问作者grg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 03:39:04