使用数据分析器映射背景 - "映射尚未提供的数据"

时间:2017-06-11 19:30:15

标签: python jupyter-notebook arcgis bokeh datashader

我试图在地图上叠加交互式数据分析器图,我只得到"地图数据尚未可用"背景而不是地图背景。我尝试过不同的地图服务和不同的地图,但都没有。 以下是我为类似数据集找到的代码:

import bokeh.plotting as bp
from bokeh.models.tiles import WMTSTileSource
bp.output_notebook()

def base_plot(tools='pan,wheel_zoom,reset',webgl=False):
    p = bp.figure(tools=tools,
        plot_width=int(850), plot_height=int(500),
        x_range=x_range, y_range=y_range, outline_line_color=None,
        min_border=0, min_border_left=0, min_border_right=0,
        min_border_top=0, min_border_bottom=0, webgl=webgl)

    p.axis.visible = False
    p.xgrid.grid_line_color = None
    p.ygrid.grid_line_color = None

    return p

-

background = "black"
from datashader.bokeh_ext import InteractiveImage

def image_callback(x_range, y_range, w, h, color_fn=tf.shade):
    cvs = ds.Canvas(plot_width=w, plot_height=h, x_range=x_range, y_range=y_range)
    agg = cvs.points(df, 'Dropoff_longitude', 'Dropoff_latitude', ds.count('Passenger_count'))
    image = color_fn(agg)
    return tf.dynspread(image,threshold=0.75, max_px=8)
    #return(image)

p = base_plot()

url="https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{Z}/{Y}/{X}.png"
#url="http://tile.stamen.com/toner-background/{Z}/{X}/{Y}.png"
tile_renderer = p.add_tile(WMTSTileSource(url=url))
tile_renderer.alpha=1.0 if background == "black" else 0.15

InteractiveImage(p, image_callback)

以下是对输出的看法:

Output screenshot

有谁知道为什么会这样?

提前致谢!

1 个答案:

答案 0 :(得分:1)

在我看来,您将源数据视为裸纬度和经度(数字如-75.2),并尝试使用Web墨卡托坐标(数字为-8235000)索引的图像切片覆盖它。然后,地图图块源正确地报告没有可用于该分辨率的图像数据。如果缩小了一百万左右,您就会看到地图图块,但是它们不会与数据对齐。由于Bokeh在使用切片源时仅支持Web墨卡托坐标,因此如果要使用贴图切换它,则需要在将数据投影到Web墨卡托之前将数据投影到其上。您可以将datashader.utils.lnglat_to_meters()用于此目的;请参阅其文档字符串以获取详细信息一旦事情被预测,你的例子就可以了:

screenshot