基于百度地图做热力图

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

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.text
    r = r.strip('showLocation&&showLocation(')
    r = r.strip(')')
    jsonData = json.loads(r)  # 将json字符串转换为字典类型转为字典格式类型
    return jsonData
with open(r'附件2 北京地铁各站点进站客流分时汇总表.csv',encoding = 'UTF-8') as csvfile: #打开csv
    reader = csv.reader(csvfile)
    for line in reader: #读取csv里的数据        
    	if reader.line_num == 1: 
            continue
        if 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右上角的浏览器打开热力图
在这里插入图片描述

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

  • 9
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值