本篇博文主要介绍了如何使用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

python调用谷歌地图_使用Python调用谷歌地图并记录运动轨迹进行可视化相关推荐

  1. python的坐标代码_基于Python的地图坐标服务接口调用代码实例

    代码描述:基于Python的地图坐标服务接口调用代码实例 关联数据:地图坐标服务 接口地址:http://www.juhe.cn/docs/api/id/32 #!/usr/bin/python # ...

  2. Python可以调用Gpu吗_加快Python算法的四个方法:Numba篇

    CDA数据分析师 出品 相信大家在做一些算法经常会被庞大的数据量所造成的超多计算量需要的时间而折磨的痛苦不已,接下来我们围绕四个方法来帮助大家加快一下Python的计算时间,减少大家在算法上的等待时间 ...

  3. python调用matlab函数_从 Python 调用 MATLAB 函数的三种方法

    0. 实验环境Ubuntu 16.04 Matlab R2015b 1. 借助于 mlab 库 安装方法非常简单,只需一行命令 sudo pip install mlab 即可. import num ...

  4. python调用usb设备_用Python与USB设备通信

    假设您使用Linux和libusb-1.0作为PyUSB的后端库.// Detach a kernel driver from an interface. // If successful, you ...

  5. python调用excel宏_用Python如何开发Excel宏脚本?新手必学

    今天介绍一个叫 xlpython 的库,通过它我们可以用 Python 来开发 Excel 的宏脚本,真正实现在 Excel 中调用 Python. 基本环境 操作系统:Windows 10 x64 ...

  6. python调用微信客户端_用Python编写的简化版微信客户端

    原标题:用Python编写的简化版微信客户端 原文:A simple WeChat client written in Python supports session persistence. 翻译: ...

  7. python画交互式地图_使用Python构建交互式地图-入门指南

    python画交互式地图 Welcome to The Beginner's Guide to Building Interactive Maps in Python 欢迎使用Python构建交互式地 ...

  8. python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议

    <Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  <Python之禅>中对于Pyt ...

  9. python list存储对象_《python解释器源码剖析》第4章--python中的list对象

    4.0 序 python中的list对象,底层对应的则是PyListObject.如果你熟悉C++,那么会很容易和C++中的list联系起来.但实际上,这个C++中的list大相径庭,反而和STL中的 ...

  10. python常用模块教程_盘点Python常用的模块和包

    模块 1.定义 计算机在开发过程中,代码越写越多,也就越难以维护,所以为了编写可维护的代码,我们会把函数进行分组,放在不同的文件里.在python里,一个.py文件就是一个模块. 2.优点: 提高代码 ...

最新文章

  1. 深度学习之PyTorch物体检测
  2. 微软学者 | 郭达雅:瞄准科研目标主动出击,挑战“不可思议”
  3. 记录一次mysql不能启动的解决方案
  4. 网络编程--connect()、listen()、accept()
  5. HTML表单input类型有哪些,HTML表单之input元素的23种type类型
  6. 思而后言:用点赞数据来帮助对话生成模型
  7. 解决git push 中remote: Permission to xxxxx.git denied to xxx. fatal: unable to access xxxx 403(转)
  8. embedding_Keras嵌入层
  9. 推荐系统遇上深度学习(十五)--强化学习在京东推荐中的探索
  10. LinkedHashMap内部实现
  11. 对话 “智能+”平台大师,看IBM如何重塑企业数字化
  12. centos8解压war包
  13. 黑马程序员最新Python教程——第一阶段(2)
  14. Scrapy-豆瓣电影Top250
  15. 规划过程组-项目管理
  16. Java桌面应用程序设计新贵:SWT简介
  17. 人民大学与加拿大女王大学金融硕士——你终究会成为你想成为的人
  18. 【云原生之Docker实战】使用Docker部署Snipe-It固定资产管理平台
  19. BZOJ2901: 矩阵求和
  20. 上海大学计算机专硕与学硕,计算机学院2017届留沪研究生学习成绩综合评定工作通知...

热门文章

  1. 区块与共识(一):解决竞选记账权的问题
  2. JS运动从入门到兴奋1
  3. 易文档(yidocs),更简单的markdown静态文档生成模板
  4. 通过Fiddler Script替换请求/响应内容
  5. 笔记本控制台开启热点
  6. 程序员转正述职报告_程序员转正的述职报告【五篇】
  7. 谷歌:加入账号其他设备登陆通知功能
  8. execute与executeUpdate的区别(学习笔记)
  9. invalidate()不起作用
  10. 18. 图像分类、分割