python文本热点追踪_python根据IP列表生成百度IP热点图tilemap

1、安装python库,用到读取csv的库pandas,获取IP经度和纬度的库pygeoip

pip install pandas

pip install pygeoip

2、下载GeoIP库

3、读取ip,转化为point.js文件,源码如下:

#!/usr/bin/python

import pandas as pd

import pygeoip

import types

#初始化pygeoip

gi = pygeoip.GeoIP('/usr/local/python2.7.6/lib/python2.7/site-packages/pygeoip/GeoLiteCity.dat', pygeoip.MEMORY_CACHE)

#转换IP为经度和纬度

def getLocal(ip):

if type(ip) != types.StringType:

print ip

return

location = gi.record_by_addr(ip)

if location is None:

print ip

return

lng = location['longitude']

lat = location['latitude']

str_temp = '{"lat":' + str(lat) + ',"lng":' + str(lng) + '},\n'

#print ip,lng,lat,str_temp

file.write(str_temp)

file = open('/root/point.js', 'w')

file.write("var points =[\n")

#读取ip列表

df = pd.read_csv("/root/iplist.csv")

df.apply(lambda x:getLocal(x.sip), axis=1)

file.write("];\n")

file.close()

4、编写map.html文件,把point.js的数据传给百度,生成地图

热力图功能示例

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

html{height:100%}

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

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

var point = new BMap.Point(113.418261, 33.921984);

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

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

if(!isSupportCanvas()){

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

}

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

map.addOverlay(heatmapOverlay);

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

//是否显示热力图

function openHeatmap(){

heatmapOverlay.show();

}

function closeHeatmap(){

heatmapOverlay.hide();

}

openHeatmap();

function setGradient(){

var gradient = {};

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'));

}

5、把map.html和point.js放在一个目录,双击map.html得到地图

最终热力图的样子如下:

fb4fc14578d127dac3e7b7641124a497.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值