python——基于gmplot实现调用谷歌地图进行GPS轨迹可视化
原创
©著作权归作者所有:来自51CTO博客作者IrvingGao的原创作品,请联系作者获取转载授权,否则将追究法律责任
文章目录
- 安装gmplot模块
- 获取GPS开源数据集
- 调用gmplot模块读取GPS数据并实现地图轨迹绘制
因为需要做一个GPS数据的地图轨迹绘制,基于gmplot可以很好的绘制出,所以我们开始吧!
安装gmplot模块
获取GPS开源数据集
Microsoft Research Asia的GeoLife GPS Trajectories Dataset。 该数据集包含在3年内收集的182个用户的GPS轨迹。
下载解压即可。
调用gmplot模块读取GPS数据并实现地图轨迹绘制
可以在gmplot的github网站汇总查看API的使用用法。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os
import gmplot
#定义数据文件的路径
user = "005"
userdata = './class/ITS/Geolife_Trajectories/Data/{}/Trajectory/'.format(user)
filelist = os.listdir(userdata) #返回指定路径下所有文件和文件夹的名字,并存放于一个列表中
names = ['lat','lng','zero','alt','days','date','time']
df_list = [pd.read_csv(userdata + f,header=6,names=names,index_col=False) for f in filelist]
# f为文件索引号,header为列数,names为列表列名,index_col为行索引的列编号或列名
df = pd.concat(df_list, ignore_index=True) #表格列字段不同的表合并
# 删除未使用的列
df.drop(['zero', 'days'], axis=1, inplace=True) #drop函数默认删除行,列需要加axis = 1
# 每隔1~5秒记录一次数据,这种情况太频繁了。 将它减少到每分钟
df_min = df.iloc[::12, :] #每隔12行取一次
df_min.head(10) #查看前5行
print ('Total GPS points: ' + str(df_min.shape[0])) #df.shape():查看行数和列数
# 声明地图的中心,以及我们希望地图放大多少倍
gmap = gmplot.GoogleMapPlotter(df_min.lat[0], df_min.lng[0], 11)
gmap.plot(df_min.lat, df_min.lng) #描绘轨迹点
gmap.draw("./class/ITS/user.html") #显示图
print("over")
打开生成的user.html
,就是绘好轨迹的地图啦。
参考文章:
- 使用Python调用谷歌地图并记录运动轨迹进行可视化