python 日本 地图 热力图_【python实战】热力图——百度地图API

本文介绍了如何使用Python结合百度地图API来绘制热力图。首先,你需要在百度地图开放平台注册并获取AK。接着,你可以根据提供的HTML示例,通过Python动态生成包含数据的HTML文件,并利用heatmap.js库展示热力图。最终效果可以在浏览器中查看。
摘要由CSDN通过智能技术生成

1.需求

上篇说到可以批量获得地址的经纬度,根据这些经纬度及数量,就可以画出热力图了,热力图有挺多工具可以画的,例如,BDP,Echarts等。

这里就用百度地图API来画热力图。

2.过程

1.获取ak

在百度地图开放平台上,注册,创建应用获得自己的ak。

2.地图API示例

在地图API示例中,找到热力图示例,能看到示例HTML,需要修改的就是里面的ak和变量points的数据。

e44be5ba4734

热力图示例.png

3. python中生成html

有了样例HTML,就可以根据需求进行修改,通过python生成HTML,这样每次跑出不同的数据,就可以生成不同的热力图了。

import webbrowser

data='json数据'

#打开文件,准备写入

current_date=time.strftime("%Y-%m-%d")

html="热力图.html"

f = open(html,'w',encoding='utf-8')

ht='{height:100%}'

body='{height:100%;margin:0px;padding:0px;font-family:"微软雅黑";}'

container="#container{height:90%;width:100%;}"

r='#r-result{width:100%;}'

gradient="{}"

message="""

热力图

ul,li{list-style: none;margin:0;padding:0;float:left;}

html%s

body%s

%s

%s

var map = new BMap.Map("container"); // 创建地图实例

var point = new BMap.Point(116.418261,39.921984);

map.centerAndZoom(point, 12); // 初始化地图,设置中心点坐标和地图级别

map.enableScrollWheelZoom(); // 允许滚轮缩放

var points = %s;

if(!isSupportCanvas()){

alert('热力图目前只支持有canvas支持的浏览器,您所使用的浏览器不能使用热力图功能~')

}

//详细的参数,可以查看heatmap.js的文档 https://github.com/pa7/heatmap.js/blob/master/README.md

//参数说明如下:

/* visible 热力图是否显示,默认为true

* opacity 热力的透明度,1-100

* radius 势力图的每个点的半径大小

* gradient 热力图的渐变区间 . gradient如下所示

* {

.2:'rgb(0, 255, 255)',

.5:'rgb(0, 110, 255)',

.8:'rgb(100, 0, 255)'

}

其中 key 表示插值的位置, 0~1.

value 为颜色值.

*/

heatmapOverlay = new BMapLib.HeatmapOverlay({"radius":45});

map.addOverlay(heatmapOverlay);

heatmapOverlay.setDataSet({data:points,max:100});

//是否显示热力图

function openHeatmap(){

heatmapOverlay.show();

}

function closeHeatmap(){

heatmapOverlay.hide();

}

closeHeatmap();

function setGradient(){

/*格式如下所示:

{

0:'rgb(102, 255, 0)',

.5:'rgb(255, 170, 0)',

1:'rgb(255, 0, 0)'

}*/

var gradient = %s;

var colors = document.querySelectorAll("input[type='color']");

colors = [].slice.call(colors,0);

colors.forEach(function(ele){

gradient[ele.getAttribute("data-key")] = ele.value;

});

heatmapOverlay.setOptions({"gradient":gradient});

}

//判断浏览区是否支持canvas

function isSupportCanvas(){

var elem = document.createElement('canvas');

return !!(elem.getContext && elem.getContext('2d'));

}

"""%(ht,body,container,r,data,gradient)

#写入文件

f.write(message)

#关闭文件

f.close()

#运行完自动在网页中显示

webbrowser.open(html,new = 1)

这里将html代码当做文本,然后写入文件的方式,生成html。data就是json数据样式,由于我这里的数据太多,就不写在代码里了,示例:

[{"lng":116.418261,"lat":39.921984,"count":50},

{"lng":116.423332,"lat":39.916532,"count":51},

{"lng":116.419787,"lat":39.930658,"count":15}]

3. 效果

最后,生成的html,会在浏览器中打开,呈现的效果如下:

e44be5ba4734

热力图.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值