基于百度地图做热力图

经过一天的学习,终于把基于百度地图做热力图搞出来了,现将流程分享如下:

1、收集整理数据

**
一列地名,一列数据。如下图所示
在这里插入图片描述

2、将地名转换成经纬度

只有转换为经纬度,才能自动定位在地图上的位置,为下步做热力图打基础

2.1进入百度开放平台(http://lbsyun.baidu.com/)获取AK码
注册登录之后点击控制台–>点击创建应用—>输入应用名称和ip白名单,点击创建!
在这里插入图片描述
2.2 获得api地址
开发文档—WEB服务API—正逆地理编码—地理编码—服务文档,可以获得接口地址。
在这里插入图片描述准备工作做好,直接上代码:

def gain_location(adress):api_url ="http://api.map.baidu.com/geocoding/v3/?address={adress}&output=json&ak=AK码&callback=showLocation".format(adress=adress)r = requests.get(api_url)r = r.textr = r.strip('showLocation&&showLocation(')r = r.strip(')')jsonData = json.loads(r)  # 将json字符串转换为字典类型转为字典格式类型return jsonData
with open(r'附件2 北京地铁各站点进站客流分时汇总表.csv',encoding = 'UTF-8') as csvfile: #打开csvreader = csv.reader(csvfile)for line in reader: #读取csv里的数据        if reader.line_num == 1: continueif gain_location(line[0]).get('result', False): try:lng = gain_location(line[0])['result']['location']['lng']  # 经度lat = gain_location(line[0])['result']['location']['lat']  # 纬度count = line[1]  # 地名计数str_temp = '{"lat":' + str(lat) + ',"lng":' + str(lng) + ',"count":' + str(count) + '},'  # 将经度,纬度,计数变成格式print(str_temp)  except:print(line[0])  # 打印出出问题的地名

只需要把文件导入进去,就能输出结果,是做热力图的标准格式,运行结果如下:
在这里插入图片描述

4、生成热力图

4.1 新建html文件
4.2 把做热力图源码添加进来

开发文档—JavaScript API—DEMO详情—覆盖物示例—添加热力图—将源码编辑器里的内容复制到新建html文件里。
4.3修改相关参数
point()中放中心点的经纬度,centerAndZoom(12)是地图缩放比例,相关信息可以在http://api.map.baidu.com/lbsapi/creatmap/查看
在这里插入图片描述
把第3步运行出来的结果放到这里来
在这里插入图片描述
“radius”:是热力图的半径,"maxOpacity"是热力图的透明度,max我理解的是根据count的值可以调节热力图的颜色。
在这里插入图片描述
4.4把做好的热力图打开
点击html右上角的浏览器打开热力图
在这里插入图片描述

最后的效果:
在这里插入图片描述

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注