ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用Python调用谷歌地图并记录运动轨迹进行可视化

2019-08-24 14:42:05  阅读:982  来源: 互联网

标签:轨迹 min Python 谷歌 df html 可视化 gmplot GPS


  本篇博文主要介绍了如何使用python来调用谷歌地图,并对北京的一个轨迹数据集进行可视化展示。该数据集包含在3年内收集的182个用户的GPS轨迹。我在这个演示中使用了用户001的数据。
  博文会给出具体可执行代码,小伙伴只需按照文中所说进行操作,即可成功实现如下图所示的结果。后面就看大家需要怎么进一步利用了。
在这里插入图片描述
由于谷歌地图的限制,只提供个人学习使用,因此会有如上水印。
PS:从左下角的轨迹上来看,该用户是不是还坐飞机出差了一次,哈哈。

操作步骤:

一、下载数据集

  我使用的数据来自Microsoft Research Asia的GeoLife GPS Trajectories Dataset(下载链接)。 该数据集包含在3年内收集的182个用户的GPS轨迹。
点击下载链接后,我们直接Download即可。
在这里插入图片描述

二、安装gmplot模块

cmd命令行输入:

pip install gmplot

最后提示success即可。

这我也是在网上找了很久的资料,很多博客都没有具体说明,这里卡了很久,希望能帮到大家。我是在github上找到了提示的,倒数第二行有说明。

gmplot的github源码,这个大家简单参考下就行了,这一次我们用不到:
https://github.com/vgm64/gmplot

三、编写代码

  我们读取用户001的轨迹数据。 每个数据点都有纬度,经度,高度,日期和时间信息,如下表所示。 我们可以在地图上绘制这些GPS数据,以大致了解该用户的活动区域。具体代码如下,代码可以执行,我是在spyder上执行的,大家也可以用其他python工具。
  注意:以下代码我们只需要修改两处路径即可,分别是读取的数据集路径(第8行),和最后要生成的html文件存放的路径(倒数第二行),我们得到html后用谷歌浏览器打开就是我们最开始看到的那个地图轨迹了。

实现代码:

import numpy as np  #Python的一种开源的科学计算库
import matplotlib.pyplot as plt   #Python可视化库
import pandas as pd  #Python数据分析模块
import os  #统一的操作系统接口函数
import gmplot
#定义数据文件的路径
user = '001'
userdata = 'E:/Geolife Trajectories 1.3/Data/' + user + '/Trajectory/'

# Enable inline plotting  启用内联绘图
#%matplotlib inline        matplotlib内联
 
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) #表格列字段不同的表合并
 
# delete unused column 删除未使用的列
df.drop(['zero', 'days'], axis=1, inplace=True) #drop函数默认删除行,列需要加axis = 1
 
# data is recorded every 1~5 seconds, which is too frequent. Reduce it to every minute
# 每隔1~5秒记录一次数据,这种情况太频繁了。 将它减少到每分钟
df_min = df.iloc[::12, :] #每隔12行取一次
 
df_min.head(10)  #查看前5行

print ('Total GPS points: ' + str(df_min.shape[0]))  #df.shape():查看行数和列数


# declare the center of the map, and how much we want the map zoomed in
# 声明地图的中心,以及我们希望地图放大多少倍
gmap = gmplot.GoogleMapPlotter(df_min.lat[0], df_min.lng[0], 11)
gmap.plot(df_min.lat, df_min.lng)  #描绘轨迹点
gmap.draw("C:/Users/john/Desktop/user.html")   #显示图
print("over")

四、运行结果

  我们直接运行上面的代码,会得到一个html文件,用谷歌浏览器打开。
  注意:很多小伙伴可能访问不了谷歌地图,那么我们就需要安装一款谷歌插件,操作过程可以参考:
https://www.cnblogs.com/jincieryi1120/p/10704704.html

实现结果:
在这里插入图片描述

最后:

  欢迎下方评论或点赞支持,感谢!

友情链接:
最具参考原文:
Inferring home and work locations using GPS trajectories and DBSCAN
参考借鉴博文:
https://blog.csdn.net/qq_38684480/article/details/85123777
https://blog.csdn.net/qq_27636147/article/details/88078538

标签:轨迹,min,Python,谷歌,df,html,可视化,gmplot,GPS
来源: https://blog.csdn.net/fallwind_of_july/article/details/100052113

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有