def get_eventbmap(pos) -> BMap: #[(lo,la),(lo,la)]这种格式即可 BAIDU_AK = "HOTBRAfU1jGcQKHBX15ucKsfZO722eyN" center = (117.20, 39.12) c = BMap() c.add_schema( baidu_ak=BAIDU_AK, center=[117.20, 39.12], zoom=10, is_roam=False, ) sequence = [] for i in range(len(pos)): c.add_coordinate(str(i), pos[i][0], pos[i][1]) #[(posindex,lo,la)] sequence.append((str(i), 0.1)) #这里名字和pos要对应 c.add( "投诉坐标", #系列名称 sequence, type_="scatter", #"heatmap" 可以切换显示的类型热力图或散点图 label_opts=opts.LabelOpts(formatter="{b}"), symbol_size=5) c.set_series_opts(effect_opts=opts.EffectOpts(is_show=True), label_opts=opts.LabelOpts(is_show=False)) c.add_control_panel( scale_control_opts=opts.BMapScaleControlOpts(), navigation_control_opts=opts.BMapNavigationControlOpts(), maptype_control_opts=opts.BMapTypeControlOpts()) #c.set_global_opts(visualmap_opts=opts.VisualMapOpts()) return c
def test_bmap_map_control_panel(fake_writer): bmap = (BMap().add_schema( baidu_ak=FAKE_API_KEY, center=[ -0.118092, 51.509865 ]).add_coordinate("London", -0.118092, 51.509865).add( "bmap", [list(z) for z in zip(TEST_LOCATION, TEST_VALUE)], type_=ChartType.LINES, label_opts=opts.LabelOpts(formatter="{b}"), ).add_control_panel( copyright_control_opts=opts.BMapCopyrightTypeOpts(position=3), maptype_control_opts=opts.BMapTypeControlOpts( type_=BMapType.MAPTYPE_CONTROL_DROPDOWN), scale_control_opts=opts.BMapScaleControlOpts(), overview_map_opts=opts.BMapOverviewMapControlOpts(is_open=True), navigation_control_opts=opts.BMapNavigationControlOpts(), geo_location_control_opts=opts.BMapGeoLocationControlOpts(), )) bmap.render() content = fake_writer.call_args[0][1] assert_in("new BMap.CopyrightControl", content) assert_in("new BMap.MapTypeControl", content) assert_in("new BMap.ScaleControl", content) assert_in("new BMap.OverviewMapControl", content) assert_in("new BMap.NavigationControl", content) assert_in("new BMap.GeolocationControl", content)
def get_gridbmap(message) -> BMap: BAIDU_AK = "HOTBRAfU1jGcQKHBX15ucKsfZO722eyN" pos = (117.20, 39.12) #jscode = "console.log('hi hi');"#可嵌入jscode #jscode = "functions(param){bmap.addEventListener('click', function(e){alert(e.point.lng + ','+ e.point.lat);});}" #每两个点画一条线 j = [[{ "coord": [117.20, 39.12] }, { "coord": [118.21, 41.12] }], [{ "coord": [119.21, 41.12] }, { "coord": [115.21, 41.12] }]] c = ( BMap().add_schema( baidu_ak=BAIDU_AK, center=[117.20, 39.12], zoom=12).add( "", type_="lines", data_pair=j, is_polyline=True, is_large=False, linestyle_opts=opts.LineStyleOpts(color="purple", opacity=0.6, width=1), ).set_series_opts(effect_opts=opts.EffectOpts(is_show=False), label_opts=opts.LabelOpts(is_show=False)). add_control_panel( scale_control_opts=opts.BMapScaleControlOpts(), navigation_control_opts=opts.BMapNavigationControlOpts(), maptype_control_opts=opts.BMapTypeControlOpts(), #copyright_control_opts=opts.BMapCopyrightTypeOpts(copyright_="我的") #geo_location_control_opts=opts.BMapGeoLocationControlOpts() #overview_map_opts=opts.BMapOverviewMapControlOpts(is_open=True), ) #.add_js_funcs(jscode) #.set_global_opts(title_opts=opts.TitleOpts(title="BMap-基本示例")) ) return c
def get_bmap(pos) -> BMap: BAIDU_AK = "HOTBRAfU1jGcQKHBX15ucKsfZO722eyN" #center = (117.20, 39.12) c = BMap() c.add_schema(baidu_ak=BAIDU_AK, center=[117.20, 39.12], zoom=10, is_roam=False) sequence = [] for i in range(len(pos)): #print(pos[i]) c.add_coordinate(pos[i][0], pos[i][2], pos[i][1]) sequence.append((str(i), 5)) c.add( "投诉坐标", #系列名称 sequence, type_="scatter", #"heatmap" 可以切换显示的类型热力图或散点图 label_opts=opts.LabelOpts(formatter="{b}"), symbol_size=4 #scatter大小 ) #.add("bmap", #[{"coord":[117.21, 39.13],"sim":10},{"coord":[117.20, 39.13],"sim":20},{"coord":[117.21, 39.12],"sim":5}], #[list(z) for z in zip(Faker.provinces, Faker.values())],#zip将迭代对像打包成元组最后的结果是[['浙江',v1],['广东',v2]] #[[117.21, 39.13],[117.20, 39.12],[117.22, 39.10],[117.25, 39.11],[117.19, 39.02],[117.20, 39.12]], #type_="heatmap", #label_opts=opts.LabelOpts(formatter="{b}")) c.set_series_opts( effect_opts=opts.EffectOpts(is_show=True), label_opts=opts.LabelOpts(is_show=False), ) c.add_control_panel( scale_control_opts=opts.BMapScaleControlOpts(), navigation_control_opts=opts.BMapNavigationControlOpts(), maptype_control_opts=opts.BMapTypeControlOpts()) #copyright_control_opts=opts.BMapCopyrightTypeOpts(copyright_="我的") #geo_location_control_opts=opts.BMapGeoLocationControlOpts() #overview_map_opts=opts.BMapOverviewMapControlOpts(is_open=True), #c.set_global_opts(visualmap_opts=opts.VisualMapOpts(pos_left="right")) return c
}) coord = prepare_coord(load_street_pickle()) for s, (long, lat) in coord.items(): m.add_coordinate(s, long, lat) speed, n_slice = read_speed() # Match T-GCN expand 3 times... (don't know why) idx_map = list(range(0, 114 - 12 - 3 - 1)) + list(range(114, 143 - 12 - 3)) pred_speed, n_slice1 = read_pred_speed() assert len(idx_map) == n_slice1 m.add(series_name="actual", type_="heatmap", data_pair=get_data_pair(speed, 0)).add( series_name="predict", type_="heatmap", data_pair=get_data_pair(pred_speed, 0), ).add_control_panel( copyright_control_opts=opts.BMapCopyrightTypeOpts(position=3), maptype_control_opts=opts.BMapTypeControlOpts( type_=BMapType.MAPTYPE_CONTROL_DROPDOWN), scale_control_opts=opts.BMapScaleControlOpts(), overview_map_opts=opts.BMapOverviewMapControlOpts(is_open=True), navigation_control_opts=opts.BMapNavigationControlOpts(), geo_location_control_opts=opts.BMapGeoLocationControlOpts(), ).set_global_opts( visualmap_opts=opts.VisualMapOpts( min_=0, max_=60, range_color=['blue', 'blue', 'green', 'yellow', 'red']), title_opts=opts.TitleOpts(title="Traffic Status of Xi'An")) m.render('test.html')
def bmap_lines() -> BMap: with open( os.path.join("fixtures", "hangzhou-tracks.json"), "r", encoding="utf-8" ) as f: j = json.load(f) c = ( BMap() .add_schema( baidu_ak=BAIDU_MAP_AK, center=[120.13066322374, 30.240018034923], zoom=14, is_roam=True, map_style={ "styleJson": [ { "featureType": "water", "elementType": "all", "stylers": {"color": "#d1d1d1"}, }, { "featureType": "land", "elementType": "all", "stylers": {"color": "#f3f3f3"}, }, { "featureType": "railway", "elementType": "all", "stylers": {"visibility": "off"}, }, { "featureType": "highway", "elementType": "all", "stylers": {"color": "#fdfdfd"}, }, { "featureType": "highway", "elementType": "labels", "stylers": {"visibility": "off"}, }, { "featureType": "arterial", "elementType": "geometry", "stylers": {"color": "#fefefe"}, }, { "featureType": "arterial", "elementType": "geometry.fill", "stylers": {"color": "#fefefe"}, }, { "featureType": "poi", "elementType": "all", "stylers": {"visibility": "off"}, }, { "featureType": "green", "elementType": "all", "stylers": {"visibility": "off"}, }, { "featureType": "subway", "elementType": "all", "stylers": {"visibility": "off"}, }, { "featureType": "manmade", "elementType": "all", "stylers": {"color": "#d1d1d1"}, }, { "featureType": "local", "elementType": "all", "stylers": {"color": "#d1d1d1"}, }, { "featureType": "arterial", "elementType": "labels", "stylers": {"visibility": "off"}, }, { "featureType": "boundary", "elementType": "all", "stylers": {"color": "#fefefe"}, }, { "featureType": "building", "elementType": "all", "stylers": {"color": "#d1d1d1"}, }, { "featureType": "label", "elementType": "labels.text.fill", "stylers": {"color": "#999999"}, }, ] }, ) .add( "", type_="lines", data_pair=j, is_polyline=True, is_large=True, linestyle_opts=opts.LineStyleOpts(color="purple", opacity=0.6, width=1), ) .add_control_panel( maptype_control_opts=opts.BMapTypeControlOpts( type_=BMapType.MAPTYPE_CONTROL_DROPDOWN ), scale_control_opts=opts.BMapScaleControlOpts(), overview_map_opts=opts.BMapOverviewMapControlOpts(is_open=True), ) .set_global_opts(title_opts=opts.TitleOpts(title="BMap-杭州热门步行路线")) ) return c
is_show_zoom_info=True, # 是否显示级别提示信息 is_enable_geo_location=True, # 控件是否集成定位功能 ), # 若下面还有add_contorl_panel里面的空间调整,这里必须有“,”,若没有,可以没有逗号 opts.BMapOverviewMapControlOpts( # 缩略地图控件 # position=0, # 等同于anchor_top_left,1、2、3分别为右上,左下,右下 # offset_height=50, # 距离上部偏移量 # offset_width=10, # 距离左右偏移量 is_open=True, ), opts.BMapScaleControlOpts( # 比例尺控件 # position=0, # 等同于anchor_top_left,1、2、3分别为右上,左下,右下 # offset_height=50, # 距离上部偏移量 # offset_width=10, # 距离左右偏移量 ), opts.BMapTypeControlOpts( # 切换地图类型的控件 # position=0, type_=2, # MAPTYPE_CONTROL_HORIZONTAL/DROPDOWN/MAP,按钮水平方式展示为0,下拉列表为1,图片方式为2(设置该类型后无法指定 maptypes 属性) ), opts.BMapCopyrightTypeOpts( # 版权控件,您可以在地图上添加自己的版权信息 # position=0, # offset_height=50, # 距离上部偏移量 # offset_width=10, # 距离左右偏移量 copyright_="made by shh", # Copyright 的文本内容, 可以放入 HTML 标签 ), opts.BMapGeoLocationControlOpts( # 地图定位的控件,使用 HTML5 浏览器定位功能 # position=0, # offset_height=50, # 距离上部偏移量 # offset_width=10, # 距离左右偏移量 is_show_address_bar=True, # 是否显示定位信息面板。默认显示定位信息面板 is_enable_auto_location=True, # 添加控件时是否进行定位。默认添加控件时不进行定位 ) )
for group in X.groupby('labels'): c = c.add(series_name=group[0], type_="scatter", is_large=True, large_threshold=2000, symbol_size=5, label_opts=opts.LabelOpts(is_show=False), tooltip_opts=opts.TooltipOpts(formatter='{c}'), data_pair=[ list(z) for z in zip(list(group[1].index), group[1]['labels']) ]) c = (c.add_control_panel( navigation_control_opts=opts.BMapNavigationControlOpts( position=BMapType.ANCHOR_TOP_LEFT), maptype_control_opts=opts.BMapTypeControlOpts())) c = c.set_global_opts(title_opts=opts.TitleOpts(title="Clusters of Crime")) c.render(name + 'scatter.html') # In[393]: map_c = pd.read_csv('dbscanoutput.csv')[:10000] map_c.columns = ['x', 'y', 'labels'] gp_col = 'labels' x = -87.65005 y = 41.85003 a = map_c.groupby(gp_col).count() a = a.rename(columns={ 'labels': 'labels', 'x': 'count', 'y': 'a'
def plot_map(point_data, path): point_data = point_data[point_data['remarks'] != 'no_result'] data = point_data[['lat_BaiDu', 'long_BaiDu', 'behavior', 'label']].copy() data.columns = ['lat', 'lon', 'behavior', 'label'] # 地图中心 map_center = [data['lon'].mean(), data['lat'].mean()] # 初始化百度地图 bd_map = BMap(init_opts=opts.InitOpts(width="1920px", height="1080px")) bd_map.add_schema(baidu_ak=KEY, center=map_center, zoom=8, is_roam=True, map_style=None, ) color = ['red', 'green', 'blue', 'yellow', 'gold', 'cyan', 'magenta', 'purple'] behavior_list = data.drop_duplicates(['behavior'])['behavior'].copy() # 剔除重复的数据文件路径 i = 0 for behavior in behavior_list: behavior_data = data[data['behavior'] == behavior] # behavior_color = color_choice() # 从color列表中随机抽取一个颜色 behavior_color = color[i] i = i + 1 map_data = [] # 利用BMap.add_coordinate 将坐标值赋值给一个地点名称,并增加近BMap对象地理信息中 for j in range(len(behavior_data)): name = behavior + str(j) longitude = behavior_data['lon'].iloc[j] latitude = behavior_data['lat'].iloc[j] bd_map.add_coordinate(name=name, longitude=longitude, latitude=latitude ) map_data.append((name, 1)) # 将地点增加到百度地图 bd_map = bd_map.add( series_name=behavior, type_="scatter", data_pair=map_data, symbol_size=20, effect_opts=opts.EffectOpts(), label_opts=opts.LabelOpts(formatter="{b}", position="left", is_show=False), itemstyle_opts=opts.ItemStyleOpts(color=behavior_color), ) # 显示聚类分析的结果 label_list = data.drop_duplicates(['label'])['label'].copy() map_data = [] for label in label_list: if label == -1: continue else: label_data = data[data['label'] == label] # 将聚类点命名增加至地图地名空间 name = '高风险路段_' + str(label) bd_map.add_coordinate(name=name, longitude=label_data['lon'].mean(), latitude=label_data['lat'].mean() ) map_data.append((name, len(label_data))) # 将地点增加到百度地图 bd_map = bd_map.add( series_name='高风险行为频发路段', type_="scatter", data_pair=map_data, symbol_size=50, # blur_size=500, is_selected=True, # 是否选中图例 effect_opts=opts.EffectOpts(), label_opts=opts.LabelOpts(formatter="{b}", position="right", is_show=False), itemstyle_opts=opts.ItemStyleOpts(color='rgba(138,43,226, 0.8)'), ) # 将绘图结果输出至网页文件 bd_map = bd_map.add_control_panel(maptype_control_opts=opts.BMapTypeControlOpts(position=1), ) # 设置图例 bd_map = bd_map.set_global_opts(legend_opts=opts.LegendOpts(is_show=True, item_height=50, ), title_opts=opts.TitleOpts(title="新奥危险货物运输高风险路段聚类分析图"), ) bd_map = bd_map.render(path) # 用浏览器打开文件 webbrowser.open(path) return bd_map
def plot_scatter_map(route_data, path): route_data = route_data[route_data['speed'] > 10.0] data = route_data[['lat_BaiDu', 'long_BaiDu', 'behavior', 'label']].copy() data.columns = ['lat', 'lon', 'behavior', 'label'] # 地图中心 map_center = [data['lon'].mean(), data['lat'].mean()] # 初始化百度地图 bd_map = BMap(init_opts=opts.InitOpts(width="1920px", height="1080px")) bd_map.add_schema( baidu_ak=KEY, center=map_center, zoom=8, is_roam=True, map_style=None, ) color = [ 'red', 'green', 'blue', 'yellow', 'gold', 'cyan', 'magenta', 'purple' ] # 将数据分为异常路段和正常路段 normal_route = data[data['label'] <= -0.0].copy() risk_route = data[data['label'] > 0.0].copy() # 绘制正常路段散点图,颜色为绿色 normal_map_data = [] # 利用BMap.add_coordinate 将坐标值赋值给一个地点名称,并增加近BMap对象地理信息中 for i in range(len(normal_route)): name = 'low_risk' + str(i) longitude = normal_route['lon'].iloc[i] latitude = normal_route['lat'].iloc[i] bd_map.add_coordinate(name=name, longitude=longitude, latitude=latitude) normal_map_data.append((name, -1)) # 绘制高风险路段散点图,颜色为红色 risk_map_data = [] # 利用BMap.add_coordinate 将坐标值赋值给一个地点名称,并增加近BMap对象地理信息中 for j in range(len(risk_route)): name = 'high_risk' + str(j) longitude = risk_route['lon'].iloc[j] latitude = risk_route['lat'].iloc[j] bd_map.add_coordinate(name=name, longitude=longitude, latitude=latitude) risk_map_data.append((name, -1)) # 将低风险轨迹散点标识在百度地图上 bd_map = bd_map.add( series_name='低风险路段', type_="scatter", data_pair=normal_map_data, symbol_size=10, effect_opts=opts.EffectOpts(), label_opts=opts.LabelOpts(formatter="{b}", position="left", is_show=False), itemstyle_opts=opts.ItemStyleOpts(color='green'), ) # 将高风险轨迹散点标识在百度地图上 bd_map = bd_map.add( series_name='高风险路段', type_="scatter", data_pair=risk_map_data, symbol_size=20, effect_opts=opts.EffectOpts(), label_opts=opts.LabelOpts(formatter="{b}", position="left", is_show=False), itemstyle_opts=opts.ItemStyleOpts(color='red'), ) # 将绘图结果输出至网页文件 bd_map = bd_map.add_control_panel( maptype_control_opts=opts.BMapTypeControlOpts(position=1), ) # 设置图例 bd_map = bd_map.set_global_opts( legend_opts=opts.LegendOpts( is_show=True, item_height=50, ), title_opts=opts.TitleOpts(title="新奥危险货物运输高风险路段聚类分析图"), ) # 将地图加载到网页 bd_map = bd_map.render(path) # 用浏览器打开文件 webbrowser.open(path) return bd_map
is_polyline=True, data_pair=all_map_data, linestyle_opts=opts.LineStyleOpts(opacity=0.8, width=5), effect_opts=opts.EffectOpts(), label_opts=opts.LabelOpts(formatter="{b}", position="left", is_show=False), itemstyle_opts=opts.ItemStyleOpts(color='green'), # 如果不是最新版本的话可以注释下面的参数(效果差距不大) progressive=200, progressive_threshold=500, ) # 将绘图结果输出至网页文件 bd_map = bd_map.add_control_panel( maptype_control_opts=opts.BMapTypeControlOpts(position=1), ) # 设置图例 bd_map = bd_map.set_global_opts( legend_opts=opts.LegendOpts( is_show=True, item_height=50, ), title_opts=opts.TitleOpts(title="新奥危险货物运输高风险路段聚类分析图"), ) # 将地图加载到网页 bd_map = bd_map.render(lines_file_dir) # 用浏览器打开文件 webbrowser.open(lines_file_dir) # # 地图中心