UnboundLocalError: local variable 'selected_provider' referenced before assignment

I am trying to plot a custom (tile) map using WMTSTileSource with url starts with https://api.mapbox.com/v4/mapbox.satellite/... and I get error ouput UnboundLocalError: local variable 'selected_provider' referenced before assignment.
The case is like this:

from bokeh.plotting import figure, show
from bokeh.io import output_notebook
from bokeh.models import WMTSTileSource

output_notebook()

tk= '****'
z = 0
x = 0
y = 0

p = figure(x_range=(-4000000, 4000000), y_range=(1000000, 7000000),
           x_axis_type="mercator", y_axis_type="mercator")

WMTSTileSource(
    url=f'https://api.mapbox.com/v4/mapbox.satellite/{z}/{x}/{y}@2x.jpg90?access_token='{tk}')
p.add_tile(WMTSTileSource)
show(p)

part of the error output is :slight_smile:

---> 23 p.add_tile(WMTSTileSource)

     26 show(p)

File /home/ubuntu/miniconda/envs/ld/lib/python3.8/site-packages/bokeh/models/plots.py:420, in Plot.add_tile(self, tile_source, retina, **kwargs)
    415         selected_provider = xyzservices.providers.query_name(tile_source)
    417     scale_factor = "@2x" if retina else None
    419     tile_source = WMTSTileSource(
--> 420         url=selected_provider.build_url(scale_factor=scale_factor),
    421         attribution=selected_provider.html_attribution,
    422         min_zoom=selected_provider.get("min_zoom", 0),
    423         max_zoom=selected_provider.get("max_zoom", 30),
    424     )
    426 tile_renderer = TileRenderer(tile_source=tile_source, **kwargs)
    427 self.renderers.append(tile_renderer)

UnboundLocalError: local variable 'selected_provider' referenced before assignment

Does WMTSTileSource not support https://api.mapbox.com ?

This should be:

tile_source = WMTSTileSource(
    url=f'https://api.mapbox.com/v4/mapbox.satellite/{z}/{x}/{y}@2x.jpg90?access_token={tk}')
p.add_tile(tile_source)
2 Likes

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.