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
相关产品推荐
相关产品推荐

