Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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
Example #5
0
        type_="lines",
        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)

    # # 地图中心