使用Python加载谷歌地图并可视化

使用Python加载谷歌地图并可视化

1.库


 - pyqt5
 - pandas
 - gmplot

首先放个结果图(本文使用的是gmplot,该库使用的是谷歌地图,地图仅供小型开发玩一下而已,大家可以使用百度的api接口,必须要引用下面这篇博客,博客写的是用北京的一个轨迹数据集在gmplot上进行可视化)。

Inferring home and work locations using GPS trajectories and DBSCAN
https://yidatao.github.io/2016-12-23/geolife-dbscan/

pyqt加载的html地图文件

1.1 为啥要在Python内进行html文件的读取呢?

我们在进行GIS开发的时候总是需要封装成exe,文件肯定需要在python内进行界面设计的。不能说我给用户一个html文件让他自己在浏览器打开吧。而现在的主流地图api返回值都是html文件。在Python内读取需要使用pyqt库。

2.gmplot地图可视化

上文引用的博客中使用的数据集来自微软亚洲研究院(下载地址)。直接上代码读取数据吧。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os

# Enable inline plotting

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]
df = pd.concat(df_list, ignore_index=True)

# delete unused column
df.drop(['zero', 'days'], axis=1, inplace=True)

# data is recorded every 1~5 seconds, which is too frequent. Reduce it to every minute
df_min = df.iloc[::12, :]

df_min.head(10)

数据结构如下图所示。
在这里插入图片描述

然后直接使用gmplot对longtitude和latitude进行可视化,代码如下。

import gmplot
# 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("user001_map.html")

这时候我们保存了一个html文件,可以把它放到浏览器中打开,但是我们需要在Python内开发GIS怎么办呢?

3.使用PyQt5 库打开html文件

大家千万不要乱装pyqt!!!这很容易造成你的IDLE打不开,如果你用的是Anaconda自带的spyder应该是自带pyqt库的,不然你的spyder打不开,如果你更新了的anaconda-navigator然后导致了spyder打不开,这就是你把你的pyqt玩坏了。毕竟我就玩坏了很多次,然后有个bug。说import QtWebEngineWidgets 之前要加入 Qtcoreapplication(忘记具体名字了)的一个error,如果报错了可以使用重装anaconda修复(我出了这个bug,但是没有找到解决办法就重装了)。就当大家的pyqt都是好的了。
上文我们得到了一个html文件,这时候我们需要让pyqt5扮演浏览器帮我们打开这个html文件。
直接上代码

from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl

app = QApplication([])
view = QWebEngineView()
view.load(QUrl("file:///C:/Users/Maohan/Desktop/roadcrusling/user001_map.html"))
view.show()
app.exec_()

这样我们就能的到上文的窗口了,是不是很简单就能用了。后面如果进行开发,直接嵌入你的应用中就行。

  • 9
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值