python可视化经纬度信息

判断汽车停下:
stoped_state = new_data[(new_data['acc_state']==0)&(new_data['gps_speed']==0)]
得到了5126个符合条件的点。
这样可以用来分析汽车行车过程中经过了哪些点。
然后去除掉这些点里面的重复数据:
stoped_state.drop_duplicates(inplace=True)
然后查看其长度发现问题,需要将首条数据加入:
stop = new_data.loc[[0]].append(stoped_state)
共计有165条记录。
我们想做的事是:根据这些停车点的index值将原始数据分段,然后绘制地图。
将其index组织成一个列表。

new = pd.DataFrame(marks.to_list())
news = marks.to_list()

对这些点稍作处理:

l = []
for i in range(len(news)-1):
    dif = news[i+1]-news[i]
#     print(dif)
    if dif<900:
        l.append(news[i])

此时,需要去除这些重复的刻度值。有如下几种方式:
第一种是借助set()方法

import numpy as np
mark1 = list(set(news).difference(set(l)))
np.sort(mark1)

第二种是借助列表生成式。

mark2 = [x for x in news if x not in l]

相对而言,列表生成式更为简洁。
之后就可以绘图了:

lat_lng = []
for i in range(len(mark2)-1):
    start = mark2[i]
    end = mark2[i+1]
    range_data = new_data[start:end]
    lng = range_data.iloc[:,3:4]#经度
    lat = range_data.iloc[:,4:5]#维度
    # 绘图的时候要将维度放在前面
    lat_lng = lat.join(lng)
    lat_lng_f = lat_lng.values.tolist()
#     lat_lng_format = [list(map(eval,x)) for x in lat_lng_f]
    locations = lat_lng_f
    m = folium.Map(lat_lng_f[0],zoom_start=10)
    route = folium.PolyLine(
        locations,
        weight=3,
        color='red',
        opacity=0.8
    ).add_to(m)
    filename = 'Heatmap'+str(i)+'.html'                              
    m.save(os.path.join(r'E:\TIANCHI\Tips\explore\2', filename)) 

index值相同的dataframe合并用new = right.join(left)

参考文章:
1.将dataframe对象转为list
2.python在openstreetmap地图上绘制路线图
3.Python可视化-县市按经纬度坐标在地图标记数值
4.python两个 list 获取交集,并集,差集的方法
5.Python 提取两个列表的共同元素

猜你喜欢

转载自blog.csdn.net/LawenceRay/article/details/88832932