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(): b = BMap() b.add_schema(baidu_ak='iMplFNfYyAf4e7EleegtObtcOZdliriG',center=[116.395645,39.929986],zoom=9) # 定义坐标对应的名称,添加到坐标库中 add_coordinate(name, lng, lat) engine = create_engine('mysql+pymysql://root:123456@localhost:3306/house') # 查询语句,选出employee表中的所有数据 sql = '''select * from 4sstore_beijing;''' # read_sql_query的两个参数: sql语句, 数据库连接 df = pd.read_sql_query(sql, engine) data_pair=[] for index,row in df.iterrows(): b.add_coordinate(row['name'], float(row['lng']),float(row['lat'])) data_pair.append((row['name'], None)) # Geo 图类型,有 scatter, effectScatter, heatmap, lines 4 种,建议使用 # from pyecharts.globals import GeoType # GeoType.GeoType.EFFECT_SCATTER,GeoType.HEATMAP,GeoType.LINES # 将数据添加到地图上 b.add('bmap', data_pair, "scatter" ,symbol_size=5) # 设置样式 b.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) b.set_global_opts( visualmap_opts=opts.VisualMapOpts(is_piecewise=False), title_opts=opts.TitleOpts(title="北京4s店分布") ) return b
def bdapi(): friends = bot.friends(update=True) dd1 = defaultdict(int) # 如果调用字典的key不存在的时候,默认value为0 for hy in friends: # print(hy.city) if '\u9fa5' >= hy.city >= '\u4e00': # 如果省份是汉字就保留,否则就舍弃,因为在中国地图上也不会显示 city = hy.city + "市" # 必须要加,不加会名字识别不到 dd1[city] += 1 # 每次进来如果key相同则进行累加 sj = [list(a) for a in zip(dd1.keys(), dd1.values())] # 地图部分 BD_AK = "xC9wlIKWG31GZwZ87jFBGO6RycDZf7Ue" MR_ZX = [108.9550557300, 34.3247934100] # 定义地图的默认中心位置 m3 = BMap() # 进去的地图中心点 可以在网址查询 http://www.gpsspg.com/maps.htm 但是这里有一点需要注意,地图给出来的维度和经度,这里的顺序是经纬度,需要调整下 m3.add_schema( baidu_ak=BD_AK, center=MR_ZX, zoom=8 # 缩放程度 ) m3.add( series_name="", data_pair=sj, label_opts=opts.LabelOpts("{b}"), ) m3.set_global_opts( title_opts=opts.TitleOpts("百度API展示微信好友分布"), visualmap_opts=opts.VisualMapOpts( is_piecewise=True, max_=180, pos_bottom=40), # 最后一个是设置提示距离底端的距离,防止百度的log将数据挡住 ) m3.render("./kshwy/map_bdapi.html") webbrowser.open("E:\study\kshwy\map_bdapi.html", autoraise=True)
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
m.add_schema(baidu_ak="Uf1rIjuIVVXxDwEy0iEU0tApwdoqGeGn", center=[108.953457, 34.26949], zoom=15, 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": "on" } }, { "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": "on" } }, { "featureType": "boundary", "elementType": "all", "stylers": { "color": "#fefefe" } }, { "featureType": "building", "elementType": "all", "stylers": { "color": "#d1d1d1" } }, { "featureType": "label", "elementType": "labels.text.fill", "stylers": { "color": "#999999" } }] })
from pyecharts.charts import BMap from pyecharts import options as opts from parse_xml import get_coordinate_list baidu_log_offset = 0.010598 baidu_lat_offset = 0.00203 # 不习惯链式调用的开发者依旧可以单独调用方法 bmap = BMap(init_opts=opts.InitOpts(width='2000px', height='1000px')) bmap.add_schema(baidu_ak='GvrsNgKWZokjb1yG7gOphfmHFsrBn8AL', center=[113.975994, 22.59844], zoom=16) coordinate_list = get_coordinate_list('build/my-data.xml') bunch_points = [[i[2], 1] for i in coordinate_list] for i, v in enumerate(coordinate_list): bmap.add_coordinate(v[2], baidu_log_offset + v[0], baidu_lat_offset + v[1]) bmap.add('shenzhen', bunch_points, label_opts=opts.LabelOpts(is_show=False)) bmap.set_global_opts(legend_opts=opts.LegendOpts(is_show=False)) bmap.render()
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
route_data=all_data, color='green', ) # risk_map_data = route_data_cut(route_data=risk_route, # color='red', # ) # 地图中心 map_center = [all_data['long_BaiDu'].mean(), all_data['lat_GPS'].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 = all_data[all_data['label'] <= -0.0].copy() risk_route = all_data[all_data['label'] > 0.0].copy() # # 绘制正常路段散点图,颜色为绿色 # normal_map_data = [] # # 利用BMap.add_coordinate 将坐标值赋值给一个地点名称,并增加近BMap对象地理信息中
output = 'json' ak = 'Z2hzbMkqq4hgAS0IPHgRYPoRfjP9QBee' url = 'http://api.map.baidu.com/place/v2/search?q=华中科技大学食堂®ion=武汉&output=' + output + '&ak=' + ak r = requests.get(url) r_js = r.json() for i in range(0, 9): names = r_js['results'][i]['name'] lng_ = r_js['results'][i]['location']['lng'] lat_ = r_js['results'][i]['location']['lat'] print(names, lng_, lat_) c = BMap() c.width = "1000px" c.height = "800px" c.add_schema(baidu_ak='Z2hzbMkqq4hgAS0IPHgRYPoRfjP9QBee', center=[114.421214, 30.519139], zoom=17) for i in range(0, 9): c.add_coordinate(r_js['results'][i]['name'], r_js['results'][i]['location']['lng'], r_js['results'][i]['location']['lat']) c.add("华中科技大学食堂", [(r_js['results'][i]['name'], "#404a59")], color="#404a59") c.set_global_opts(title_opts=opts.TitleOpts(title="BMap-基本示例"), visualmap_opts=opts.VisualMapOpts(is_piecewise=True)) c.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) c.render() '''driver = webdriver.Chrome() driver.get("F:///pyecharts/untitled/html/road.html") driver.get("http://127.0.0.1:8848/untitled/road.html")'''
def route_plot(data, map_center): # 初始化百度地图 bd_map = BMap(init_opts=opts.InitOpts(width="1920px", height="1080px")) bd_map.add_schema( baidu_ak=KEY, center=map_center, zoom=10, is_roam=True, map_style={ "styleJson": [{ "featureType": "estatelabel", "elementType": "labels.text.fill", "stylers": { "color": "#8d694eff" } }, { "featureType": "restaurantlabel", "elementType": "labels", "stylers": { "visibility": "off" } }, { "featureType": "restaurantlabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "lifeservicelabel", "elementType": "labels", "stylers": { "visibility": "off" } }, { "featureType": "lifeservicelabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "transportationlabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "transportationlabel", "elementType": "labels", "stylers": { "visibility": "on" } }, { "featureType": "financelabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "financelabel", "elementType": "labels", "stylers": { "visibility": "off" } }, { "featureType": "land", "elementType": "geometry", "stylers": { "color": "#ffffffff" } }, { "featureType": "building", "elementType": "geometry.topfill", "stylers": { "color": "#e7dfd6ff" } }, { "featureType": "building", "elementType": "geometry.sidefill", "stylers": { "color": "#f4ebe2ff" } }, { "featureType": "building", "elementType": "geometry.stroke", "stylers": { "color": "#b9a797ff" } }, { "featureType": "estatelabel", "elementType": "labels.text.stroke", "stylers": { "color": "#ebe1d8ff" } }, { "featureType": "estatelabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "estatelabel", "elementType": "labels.text", "stylers": { "fontsize": "28" } }, { "featureType": "manmade", "elementType": "labels.text.fill", "stylers": { "color": "#72533aff" } }, { "featureType": "manmade", "elementType": "geometry", "stylers": { "color": "#ecececff" } }, { "featureType": "manmade", "elementType": "labels.text", "stylers": { "fontsize": "36" } }, { "featureType": "manmade", "elementType": "labels.text.stroke", "stylers": { "color": "#b6997fff" } }, { "featureType": "green", "elementType": "geometry", "stylers": { "color": "#ecececff" } }, { "featureType": "education", "elementType": "geometry", "stylers": { "color": "#ecececff" } }, { "featureType": "medical", "elementType": "geometry", "stylers": { "color": "#ecececff" } }, { "featureType": "scenicspots", "elementType": "geometry", "stylers": { "color": "#ecececff" } }, { "featureType": "entertainment", "elementType": "geometry", "stylers": { "visibility": "off" } }, { "featureType": "estate", "elementType": "geometry", "stylers": { "color": "#ecececff" } }, { "featureType": "shopping", "elementType": "geometry", "stylers": { "visibility": "on", "color": "#ecececff" } }, { "featureType": "transportation", "elementType": "geometry", "stylers": { "color": "#ecececff" } }, { "featureType": "transportation", "elementType": "labels.text.fill", "stylers": { "color": "#72533aff" } }, { "featureType": "transportation", "elementType": "labels.text.stroke", "stylers": { "color": "#b6997fff" } }, { "featureType": "transportation", "elementType": "labels.text", "stylers": { "fontsize": "36" } }, { "featureType": "medical", "elementType": "labels.text.fill", "stylers": { "color": "#72533aff" } }, { "featureType": "medical", "elementType": "labels.text.stroke", "stylers": { "color": "#b6997fff" } }, { "featureType": "medical", "elementType": "labels.text", "stylers": { "fontsize": "36" } }, { "featureType": "education", "elementType": "labels.text.fill", "stylers": { "color": "#72533aff" } }, { "featureType": "education", "elementType": "labels.text.stroke", "stylers": { "color": "#b6997fff" } }, { "featureType": "education", "elementType": "labels.text", "stylers": { "fontsize": "36" } }, { "featureType": "carservicelabel", "elementType": "labels", "stylers": { "visibility": "off" } }, { "featureType": "carservicelabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "shoppinglabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "hotellabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "governmentlabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "companylabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "businesstowerlabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "entertainmentlabel", "elementType": "labels", "stylers": { "visibility": "off" } }, { "featureType": "entertainmentlabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "medicallabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "educationlabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "scenicspotslabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "airportlabel", "elementType": "labels.icon", "stylers": { "visibility": "off" } }, { "featureType": "airportlabel", "elementType": "labels.text", "stylers": { "fontsize": "36" } }, { "featureType": "airportlabel", "elementType": "labels.text.fill", "stylers": { "color": "#72533aff" } }, { "featureType": "airportlabel", "elementType": "labels.text.stroke", "stylers": { "color": "#b6997fff" } }, { "featureType": "scenicspotslabel", "elementType": "labels.text", "stylers": { "fontsize": "28" } }, { "featureType": "scenicspotslabel", "elementType": "labels.text.fill", "stylers": { "color": "#4a4a4aff" } }, { "featureType": "scenicspotslabel", "elementType": "labels.text.stroke", "stylers": { "color": "#ffffffff" } }, { "featureType": "educationlabel", "elementType": "labels.text.fill", "stylers": { "color": "#8d694eff" } }, { "featureType": "educationlabel", "elementType": "labels.text.stroke", "stylers": { "color": "#ebe1d8ff" } }, { "featureType": "educationlabel", "elementType": "labels.text", "stylers": { "fontsize": "26" } }, { "featureType": "medicallabel", "elementType": "labels.text.fill", "stylers": { "color": "#8d694eff" } }, { "featureType": "medicallabel", "elementType": "labels.text.stroke", "stylers": { "color": "#ebe1d8ff" } }, { "featureType": "medicallabel", "elementType": "labels.text", "stylers": { "fontsize": "24" } }, { "featureType": "businesstowerlabel", "elementType": "labels.text.stroke", "stylers": { "color": "#ebe1d8ff" } }, { "featureType": "businesstowerlabel", "elementType": "labels.text.fill", "stylers": { "color": "#8d694eff" } }, { "featureType": "businesstowerlabel", "elementType": "labels.text", "stylers": { "fontsize": "24" } }, { "featureType": "companylabel", "elementType": "labels", "stylers": { "visibility": "off" } }, { "featureType": "hotellabel", "elementType": "labels.text.fill", "stylers": { "color": "#8d694eff" } }, { "featureType": "hotellabel", "elementType": "labels.text.stroke", "stylers": { "color": "#ebe1d8ff" } }, { "featureType": "hotellabel", "elementType": "labels.text", "stylers": { "fontsize": "24" } }, { "featureType": "shoppinglabel", "elementType": "labels.text.fill", "stylers": { "color": "#8d694eff" } }, { "featureType": "shoppinglabel", "elementType": "labels.text.stroke", "stylers": { "color": "#ebe1d8ff" } }, { "featureType": "transportationlabel", "elementType": "labels.text.fill", "stylers": { "color": "#4a4a4aff" } }, { "featureType": "transportationlabel", "elementType": "labels.text", "stylers": { "fontsize": "24" } }, { "featureType": "scenicspots", "elementType": "labels.text.fill", "stylers": { "color": "#72533aff" } }, { "featureType": "scenicspots", "elementType": "labels.text.stroke", "stylers": { "color": "#b6997fff" } }, { "featureType": "scenicspots", "elementType": "labels.text", "stylers": { "fontsize": "36" } }, { "featureType": "governmentlabel", "elementType": "labels.text.fill", "stylers": { "color": "#4a4a4aff" } }, { "featureType": "scenicspotslabel", "elementType": "labels", "stylers": { "visibility": "off" } }, { "featureType": "district", "elementType": "labels.text.fill", "stylers": { "color": "#ffffffff" } }, { "featureType": "district", "elementType": "labels.text.stroke", "stylers": { "color": "#72533aff", "weight": "3.5" } }, { "featureType": "town", "elementType": "labels.text.stroke", "stylers": { "color": "#72533aff", "weight": "3" } }, { "featureType": "town", "elementType": "labels.text.fill", "stylers": { "color": "#ffffffff" } }, { "featureType": "village", "elementType": "labels.text.stroke", "stylers": { "color": "#ffffffff", "weight": "2.5" } }, { "featureType": "village", "elementType": "labels.text.fill", "stylers": { "color": "#72533aff", "weight": "40" } }, { "featureType": "village", "elementType": "labels.text", "stylers": { "fontsize": "20" } }, { "featureType": "highway", "elementType": "geometry.fill", "stylers": { "color": "#fdf0daff" } }, { "featureType": "highway", "elementType": "geometry.stroke", "stylers": { "color": "#ffd993ff" } }, { "featureType": "highway", "elementType": "labels.text.fill", "stylers": { "color": "#000000ff" } }, { "featureType": "highway", "elementType": "labels.text.stroke", "stylers": { "color": "#ffffffff" } }, { "featureType": "nationalway", "elementType": "geometry.fill", "stylers": { "color": "#fdf0daff" } }, { "featureType": "nationalway", "elementType": "geometry.stroke", "stylers": { "color": "#ffd993ff" } }, { "featureType": "nationalway", "elementType": "labels.text.fill", "stylers": { "color": "#000000ff" } }, { "featureType": "nationalway", "elementType": "labels.text.stroke", "stylers": { "color": "#ffffffff" } }, { "featureType": "provincialway", "elementType": "geometry.stroke", "stylers": { "color": "#ffd993ff" } }, { "featureType": "provincialway", "elementType": "geometry.fill", "stylers": { "color": "#fdf0daff" } }, { "featureType": "provincialway", "elementType": "labels.text.fill", "stylers": { "color": "#000000ff" } }, { "featureType": "provincialway", "elementType": "labels.text.stroke", "stylers": { "color": "#ffffffff" } }, { "featureType": "subway", "elementType": "geometry.fill", "stylers": { "color": "#f5a117ff" } }, { "featureType": "manmade", "elementType": "labels", "stylers": { "visibility": "on" } }] }, ) # 剔除重复的数据文件路径 truck_list = data.drop_duplicates(['truck_license' ])['truck_license'].to_list() # 将数据根据时间间隔大于10分钟的规则进行分割,保存进list # 将每一段行程数据保存进一个列表 trip_list = [] for truck in truck_list: print(truck) truck_temp = data[data['truck_license'] == truck].copy() # 剔除车辆静止时的数据 truck_temp = truck_temp[truck_temp['distance_gps'] > 20].copy() # 将行程数据按照时间序列排序 truck_temp = truck_temp.sort_values(by='time') # 通过相邻GPS坐标计算的行程距离 truck_temp = gps_distance(earth_r=EARTH_REDIUS, data=truck_temp) # 以间距大于100米采样 # truck_temp = truck_temp[truck_temp['distance_gps'] > 100].copy() truck_temp = gps_distance(earth_r=EARTH_REDIUS, data=truck_temp) # 重新计算提出零速度后的相邻数据行之间的时间间隔 truck_temp = driving_time(truck_temp) # 获取行程间隔数据的索引列表,初定为间距2km以上时认为是分隔的路线 time_cut_index = truck_temp[truck_temp['distance_gps'] > 2000].index index_bp = truck_temp.index[0] index_ep = truck_temp.index[len(truck_temp) - 1] if len(time_cut_index) > 1: for i in range(len(time_cut_index)): if i == 0: trip_temp_data = truck_temp.loc[index_bp:time_cut_index[i]] trip_temp_data = trip_temp_data.drop( index=[time_cut_index[i]]) else: trip_temp_data = truck_temp.loc[ time_cut_index[i - 1]:time_cut_index[i]] trip_temp_data = trip_temp_data.drop( index=[time_cut_index[i]]) # 只有具备一定长度的路线才被绘制,初定为至少包括5个轨迹坐标点 if len(trip_temp_data) > 50: bd_map = bd_map.add( series_name='低风险路段' + truck + str(i), type_="lines", is_polyline=True, data_pair=[ route_to_baidu_line(trip_temp_data, color='green') ], 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, ) print('低风险路段_' + truck + '_', str(i)) print(route_to_baidu_line(trip_temp_data, color='green')) # 设置图例 bd_map = bd_map.set_global_opts( legend_opts=opts.LegendOpts( is_show=False, # 不显示标签 ), title_opts=opts.TitleOpts(title="新奥危险货物运输高风险路段聚类分析图"), ) return bd_map
def heatmap() -> Line: sql1 = """ SELECT CONCAT(city, '市', region, POSITION) AS pos, longitude, latitude, AVG(rent) FROM house WHERE city = '北京' AND longitude != 0 AND latitude != 0 GROUP BY pos; """ sql2 = """ SELECT CONCAT(city, '市', region, POSITION) AS pos, longitude, latitude, AVG(rent) FROM house WHERE city = '上海' AND longitude != 0 AND latitude != 0 GROUP BY pos; """ sql3 = """ SELECT CONCAT(city, '市', region, POSITION) AS pos, longitude, latitude, AVG(rent) FROM house WHERE city = '广州' AND longitude != 0 AND latitude != 0 GROUP BY pos; """ sql4 = """ SELECT CONCAT(city, '市', region, POSITION) AS pos, longitude, latitude, AVG(rent) FROM house WHERE city = '深圳' AND longitude != 0 AND latitude != 0 GROUP BY pos; """ with connection.cursor() as cursor: cursor.execute(sql1) rows1 = cursor.fetchall() cursor.execute(sql2) rows2 = cursor.fetchall() cursor.execute(sql3) rows3 = cursor.fetchall() cursor.execute(sql4) rows4 = cursor.fetchall() data1 = [] coord = [] for row in rows1: coord.append([row[0], row[1], row[2]]) data1.append((row[0], row[3])) data2 = [] for row in rows2: coord.append([row[0], row[1], row[2]]) data2.append((row[0], row[3])) data3 = [] for row in rows3: coord.append([row[0], row[1], row[2]]) data3.append((row[0], row[3])) data4 = [] for row in rows4: coord.append([row[0], row[1], row[2]]) data4.append((row[0], row[3])) # 添加坐标 b = BMap() for item in coord: b.add_coordinate(item[0], item[1], item[2]) sql1 = "" c = (b.add_schema(baidu_ak="ecW4FwdyIvse01ZzuQpYeiFsqOlTqmnv", center=[120.13066322374, 30.240018034923], zoom=5, is_roam=True).add( "北京", data1, type_="heatmap", label_opts=opts.LabelOpts(formatter="{b}"), ).add( "上海", data2, type_="heatmap", label_opts=opts.LabelOpts(formatter="{b}"), ).add( "广州", data3, type_="heatmap", label_opts=opts.LabelOpts(formatter="{b}"), ).add( "深圳", data4, type_="heatmap", label_opts=opts.LabelOpts(formatter="{b}"), ).set_global_opts( title_opts=opts.TitleOpts(title="各地小区租房均价热力图"), visualmap_opts=opts.VisualMapOpts( max_=10000, min_=900)).dump_options_with_quotes()) return c
def locate(): # 对数据进行绘图 station_data = pd.read_csv("station.csv",header = 0, sep = '\t') latitude = station_data['lat'].values longitude = station_data['lng'].values index = station_data['station_id'].values length = len(latitude) mag = [1] * length #可视化 BMaps = BMap() data_pair = dict.fromkeys(index, 0) user = pd.read_csv("mobile.csv",header = 0, sep = '\t') locate = user['station_id'].values count = user['count'].values for i in range(len(locate)): try: if count[i] >= 10: data_pair[locate[i]] += int(count[i]) except: pass for i in range(len(index)): BMaps.add_coordinate(index[i], longitude[i], latitude[i]) BMaps.add_schema(baidu_ak = 'UoW1wfwAiRoBPYeh52XzdUGGoByxmUN2', center=(121.37, 31.23), zoom=10, map_style={ "styleJson": [ { "featureType": "water", "elementType": "all", "stylers": {"color": "#031628"}, }, { "featureType": "land", "elementType": "geometry", "stylers": {"color": "#000102"}, }, { "featureType": "highway", "elementType": "all", "stylers": {"color": "#50A3BA"}, }, { "featureType": "local", "elementType": "geometry", "stylers": {"color": "#000000"}, }, { "featureType": "railway", "elementType": "geometry.fill", "stylers": {"color": "#000000"}, }, { "featureType": "railway", "elementType": "geometry.stroke", "stylers": {"color": "#08304b"}, }, { "featureType": "building", "elementType": "geometry.fill", "stylers": {"color": "#000000"}, }, { "featureType": "all", "elementType": "labels.text.fill", "stylers": {"color": "#857f7f"}, }, { "featureType": "all", "elementType": "labels.text.stroke", "stylers": {"color": "#000000"}, }, { "featureType": "building", "elementType": "geometry", "stylers": {"color": "#022338"}, }, { "featureType": "green", "elementType": "geometry", "stylers": {"color": "#062032"}, }, { "featureType": "boundary", "elementType": "all", "stylers": {"color": "#465b6c"}, }, { "featureType": "manmade", "elementType": "all", "stylers": {"color": "#022338"}, }, { "featureType": "label", "elementType": "all", "stylers": {"visibility": "on"}, }, ] }) # 添加数据点 data_pair = [list(z) for z in zip(data_pair.keys(), data_pair.values())] BMaps.add('次数', data_pair,type_="scatter",symbol_size=3, label_opts=opts.LabelOpts(is_show=False)) pieces = [ {'max': 10000, 'label': '10000以下', 'color': '#50A3BA'}, {'min': 10000, 'max': 20000, 'label': '10000-20000', 'color': '#E2C568'}, {'min': 20000, 'max': 30000, 'label': '20000-30000', 'color': '#D94E5D'}, {'min': 30000, 'max': 40000, 'label': '30000-40000', 'color': '#3700A4'}, {'min': 40000, 'label': '40000+', 'color': '#81AE9F'}, ] BMaps.set_global_opts( visualmap_opts=opts.VisualMapOpts(is_piecewise=True, pieces= pieces, pos_top='top', pos_left = 'right'), title_opts=opts.TitleOpts(title="基站频率分布>10") ) #导出图像 BMaps.render('基站频率分布10.html')