python如何可视化经纬度信息
作者:LawenceRay
在Python中处理经纬度信息,首先通过筛选得到符合条件的停车点,并去除重复数据,利用这些数据点的索引值将原始数据进行分段,并绘制地图,处理重复数据时可以使用set()方法或列表生成式,最后,可以通过DataFrame的join方法合并具有相同索引值的数据
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)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。