In [1]:
from bokeh.resources import JSResources

In [2]:
js_resources_before = JSResources()
js_resources_before._render_custom_models_static()

In [3]:
from bokeh.plotting import figure
from bokeh.models import Range1d, TMSTileSource
from bokeh.models import WheelZoomTool, PanTool
class CustomTileSource(TMSTileSource):
    __implementation__ = """
    _ = require "underscore"
    Util = require "util/util"
    TMSTileSource = require "renderer/tile/tms_tile_source"
    class CustomTileSource extends TMSTileSource.Model
      type: "CustomTileSource"
      initialize: () ->
        @set('x_origin_offset', 0)
        @set('y_origin_offset', 0)
        @set('initial_resolution', 134217.728)
        super
    module.exports =
      Model: CustomTileSource
    """

x_range = Range1d(start=0, end=1200)
y_range = Range1d(start=0, end=800)

custom_service = 'http://localhost:8081/tiles/{filter_size}/{band}/{Z}/{X}/{Y}.png?clim=0.0,70.0'
extra_url_vars = {}
extra_url_vars['filter_size'] = '1.024'
extra_url_vars['band'] = '0'

tile_source = CustomTileSource()
tile_source.url = custom_service
tile_source.extra_url_vars = extra_url_vars

p = figure(x_range=x_range, y_range=y_range, plot_height=800, plot_width=800)
p.add_tools(WheelZoomTool(), PanTool())
p.add_tile(tile_source)


Out[3]:
<bokeh.models.renderers.TileRenderer at 0x1082819e8>

In [4]:
js_resources_after = JSResources()
js_resources_after._render_custom_models_static()


Out[4]:
'\n(function outer(modules, cache, entry) {\n  if (typeof Bokeh !== "undefined") {\n    for (var name in modules) {\n      var module = modules[name];\n\n      if (typeof(module) === "string") {\n        try {\n          coffee = Bokeh.require("coffee-script")\n        } catch (e) {\n          throw new Error("Compiler requested but failed to import. Make sure bokeh-compiler(-min).js was included.")\n        }\n\n        function compile(code) {\n          var body = coffee.compile(code, {bare: true, shiftLine: true});\n          return new Function("require", "module", "exports", body);\n        }\n\n        modules[name] = [compile(module), {}];\n      }\n    }\n\n    for (var name in modules) {\n      Bokeh.require.modules[name] = modules[name];\n    }\n\n    for (var i = 0; i < entry.length; i++) {\n      Bokeh.Collections.register_locations(Bokeh.require(entry[i]));\n    }\n  } else {\n    throw new Error("Cannot find Bokeh. You have to load it prior to loading plugins.");\n  }\n})({\n "custom/main":[function(require,module,exports){\n   module.exports = { CustomTileSource: require("custom/custom_tile_source") };\n }, {}],\n "custom/custom_tile_source": "\\n    _ = require \\"underscore\\"\\n    Util = require \\"util/util\\"\\n    TMSTileSource = require \\"renderer/tile/tms_tile_source\\"\\n    class CustomTileSource extends TMSTileSource.Model\\n      type: \\"CustomTileSource\\"\\n      initialize: () ->\\n        @set(\\\'x_origin_offset\\\', 0)\\n        @set(\\\'y_origin_offset\\\', 0)\\n        @set(\\\'initial_resolution\\\', 134217.728)\\n        super\\n    module.exports =\\n      Model: CustomTileSource\\n    "\n}, {}, ["custom/main"]);\n'

In [ ]: