2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 调用百度地图API接口制作热力图

调用百度地图API接口制作热力图

时间:2019-02-09 01:02:31

相关推荐

调用百度地图API接口制作热力图

调用百度地图API接口制作热力图

Python学了很久,也做了一些机器学习的demo,利用matolotlib库做过一些可视化。今天呢想尝试做一下热力图。先PO一张我最终效果图。

因为数据原因,效果一般,但我们的目的还是达到了。下面就讲一下大致流程。

1、数据准备

我没有上千个CSV数据,一个CSV数据就代表一辆车一天内的情况。我们要做的就是这几千辆车某一天某一个时间段在地图上的热力图。所以我们对每个表都要根据某个特定的时间去获取经纬度和速度,所以每个CSV我们都要获取M,N,O,P这四列元素。我们把所有的CSV数据放在一个名为十月份数据的文件夹下面,这样子我们可以循环获取每个CSV文件,再对单个CSV文件解析获取我们要的信息写入一个单独的表内。

Python代码如下:

import csvimport osplot_time = []for i in range(0,10):plot_time.append( '-10-10'+ ' '+'20:00:0'+str(i))#自己设置需要的日期,注意格式要按照这样for i in range(10,60):plot_time.append( '-10-10'+ ' '+'20:00:'+str(i))#自己设置需要的日期,注意格式要按照这样outputname = category+'_'+'-10-10-2000' #输出文件名csv_file = open(outputname+'.csv','w',newline='',encoding='utf-8-sig')#建立csv总表for csvfile in os.listdir('十月份数据/'):with open('十月份数据/'+csvfile,'r') as f:k = 0reader = csv.reader(f)for line in reader:if k > 60:breakelse:if line[12] in plot_time:info = []time = line[12]lng = line[13].strip()lat = line[14].strip()speed = float(line[15].strip())info.append(time)info.append(lng)info.append(lat)info.append(speed)writer = csv.writer(csv_file)writer.writerow(info)k += 1csv_file.close()

2、注册密钥

我们需要把数据导入到百度API接口中才能实现热力图的制作,那么我们该导入什么样格式的数据呢。所以我们得先申请API接口,去观察它的源码需要怎样的数据。

首先打开网址/注册一个帐号。然后点击 控制台->创建应用,根据网页提示设置相关信息。提交之后会有一个应用AK,这是我们需要保存的。找到百度地图API/jsdemo.htm#c1_15。从源码中我们可以看出热力图需要的数据格式是JSON格式。那么我们就通过python读取总表的数据生成json数据然后放入源码中。

Python代码如下:

import csvfile = open('-10-10-184230.json','w',encoding='UTF-8') #建立json数据文件with open('-10-10-184230.csv','r',encoding='UTF-8') as f:reader = csv.reader(f)for line in reader:if reader.line_num == 1:continuelng = line[1].strip()lat = line[2].strip()c = line[3].strip()str_temp = '{"lng":' + str(lng) + ',"lat":' + str(lat) + ',"count":' + str(c) + '},'# print(str_temp) #也可以通过打印出来,把数据copy到百度热力地图api的相应位置上file.write(str_temp) # 写入文档file.close() # 保存

最后替换网页源码中的json数据即可。注意网页源码中有半径点的设置和最大值。这个根据自己的数据需求去设置,制作出自己理想的热力图。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。