Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Bokeh在贴图平铺顶部添加choropleth贴图_Python_Bokeh - Fatal编程技术网

Python 使用Bokeh在贴图平铺顶部添加choropleth贴图

Python 使用Bokeh在贴图平铺顶部添加choropleth贴图,python,bokeh,Python,Bokeh,我为学区内的学校区域定制了形状文件,我可以使用Folium在地图块(例如cartodbpositron)顶部绘制。但是,我想添加小部件,以便在选择不同的小部件选项时,地图渲染会更新。为了做到这一点,我使用了Bokeh。但是,在Bokeh上,地图打印是在空画布上完成的,而不是在地图平铺上完成的,我在将shapefile边界覆盖到Bokeh的地图平铺上时遇到了问题 如果这个问题没有完整的代码示例,我深表歉意,但这个问题不一定是编程问题,而是数据包功能问题 提前感谢。问题是博克地图瓷砖需要Web墨卡托

我为学区内的学校区域定制了形状文件,我可以使用Folium在地图块(例如cartodbpositron)顶部绘制。但是,我想添加小部件,以便在选择不同的小部件选项时,地图渲染会更新。为了做到这一点,我使用了Bokeh。但是,在Bokeh上,地图打印是在空画布上完成的,而不是在地图平铺上完成的,我在将shapefile边界覆盖到Bokeh的地图平铺上时遇到了问题

如果这个问题没有完整的代码示例,我深表歉意,但这个问题不一定是编程问题,而是数据包功能问题


提前感谢。

问题是博克地图瓷砖需要Web墨卡托坐标。我的自定义形状文件具有lat/lon坐标对,这一事实使得它与Bokeh贴图平铺渲染不兼容

我使用以下方法将多边形坐标从lat/lon对转换为Web Mercator坐标:

def latlontomercator_math(row):
    x_lon = row['x']
    y_lat = row['y']

    # longitudes are a one step transformation
    x_mer = list(map(lambda x: x * 20037508.34 / 180, x_lon))

    # latitudes are a two step transformation
    y_mer_aux = list(map(lambda y: math.log(math.tan((90 + y) * math.pi / 360))
                                    / (math.pi / 180), y_lat))
    y_mer = list(map(lambda y: y * 20037508.34 / 180, y_mer_aux))

    return(x_mer, y_mer)

data[['x_mer', 'y_mer']] = data.apply(latlontomercator_math, axis=1).apply(pd.Series)
该函数被编写为使用数据帧按行应用