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

Bokeh中STAMEN_TERRAIN_RETINA瓦片无法加载问题求助

关于Bokeh中STAMEN_TERRAIN_RETINA无法显示的问题排查与解决

你遇到的这个情况确实存在已知原因——STAMEN_TERRAIN_RETINA的内置瓦片服务存在访问稳定性问题,而CARTODBPOSITRON_RETINA的服务目前运行正常。下面给你拆解原因和可行的解决办法:

核心原因

Stamen的部分瓦片服务近年进行了域名迁移和服务调整,Bokeh内置的STAMEN_TERRAIN_RETINA对应的旧URL可能已无法正常访问。由于Bokeh对瓦片加载失败不会抛出明确报错(只会静默不显示),所以你看不到错误提示,但地图瓦片无法渲染出来。

解决办法

1. 手动自定义Stamen Terrain Retina瓦片源

直接使用Mapbox托管的Stamen最新瓦片地址,通过WMTSTileSource自定义瓦片提供者,替代内置的STAMEN_TERRAIN_RETINA:

from bokeh.models import WMTSTileSource
from bokeh.plotting import figure

# 自定义Stamen Terrain Retina瓦片源
tile_provider = WMTSTileSource(
    url='https://stamen-tiles.a.ssl.fastly.net/terrain-retina/{Z}/{X}/{Y}.png',
    attribution='Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.'
)

# 原有绘图逻辑保持不变,替换tile_provider即可
traj_osm = figure(
    y_range=(map_lon_m[0], map_lon_m[1]), 
    x_range=(map_lat_m[0], map_lat_m[1]), 
    x_axis_type="mercator", 
    y_axis_type="mercator", 
    plot_height=plot_h, 
    plot_width=plot_w, 
    title="Trajectory Map Catographical", 
    tools=TOOLS
)
traj_osm.add_tools(crosshair_maps_osm)
traj_osm.add_tile(tile_provider)

2. 升级Bokeh到最新稳定版

如果你的Bokeh版本较旧,内置的瓦片服务URL可能没有同步更新。执行以下命令升级:

pip install --upgrade bokeh

升级完成后再尝试使用原有的get_provider(STAMEN_TERRAIN_RETINA)代码,大概率能解决问题。

3. 验证网络访问权限

部分网络环境可能无法访问Stamen的瓦片服务器,你可以先在浏览器中打开一个测试瓦片地址(比如https://stamen-tiles.a.ssl.fastly.net/terrain-retina/10/512/341.png),如果无法加载,说明是网络限制导致的,这时候建议使用自定义瓦片源或者切换到其他稳定的地图服务(比如你已经验证可用的CARTODBPOSITRON_RETINA)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:47:59