python热力图参数_python3.5数据处理——百度地图热力图传值

import pandas as pd

import webbrowser

import win32ui

################################原始数据导入#############################

#获取MR表信息

dlg = win32ui.CreateFileDialog(1) # 1表示打开文件对话框

dlg.SetOFNInitialDir('E:/Python') # 设置打开文件对话框中的初始显示目录

dlg.DoModal()

filename = dlg.GetPathName() # 获取选择的文件名称

df=pd.DataFrame(pd.read_csv('171018HN-MDT.csv'))#获取MR的df

print('原始MR的数据量为:%s'%str(df.shape[0]))

#获取基站参考表表信息

dlg = win32ui.CreateFileDialog(1) # 1表示打开文件对话框

dlg.SetOFNInitialDir('E:/Python') # 设置打开文件对话框中的初始显示目录

dlg.DoModal()

filename = dlg.GetPathName() # 获取选择的文件名称

df_para=pd.DataFrame(pd.read_excel('参考表1-基站经纬度.xls',sheet_name='sheet1'))

##############################数据清洗整理##############################

#选取需要处理数据的列

#eNB_Id MR_Longitude MR_Latitude MR_LteScRSRP

MR_LteScSinrUL

df_mr =

df.ix[:,['eNB_Id','MR_Longitude','MR_Latitude','MR_LteScRSRP','MR_LteScSinrUL']]

#数据清洗,去除空值

df_mr=df_mr.dropna(axis=0,how='any')#去除含有空值的行

#数据清洗,剔除经纬度偏差过大站点

df_mr=pd.merge(df_mr,df_para,on=['eNB_Id','eNB_Id'])#匹配基站经纬度

df_mr=df_mr[abs(df_mr['MR_Longitude']-df_mr['eNB_lon'])<0.1]#经度偏差

df_mr=df_mr[abs(df_mr['MR_Latitude']-df_mr['eNB_lat'])<0.1]#纬度偏差

#添加计数列

df_mr["MR_count"] = 1#count_MR

df_mr["eNB_count"] = 1#count_enb

#栅格化处理,10米栅格

df_mr10 = round(df_mr,4)#经纬度保留到4位,是10米栅格

#df_mr100= round(df_mr,3)#经纬度保留到3位,是100米栅格

#############################弱覆盖点聚合##########################

#计算弱覆盖的count值

df_rsrp = df_mr10[df_mr10['MR_LteScRSRP']

df_rsrp = df_rsrp.groupby(['MR_Longitude',

'MR_Latitude']).count().reset_index()#统计count点

#弱覆盖栅格点

df_rsrp0 = df_rsrp[df_rsrp['MR_count']>0]

df_rsrp0.to_csv('RSRP弱覆盖栅格.csv',index=True,header=True)

print('弱覆盖MR区域:%s'%str(df_rsrp0.shape[0]))

#弱覆盖,黄色点

df_rsrp10 = df_rsrp[df_rsrp['MR_count']<=50]

df_rsrp10.to_csv('RSRP弱覆盖栅格0-50聚合.csv',index=True,header=True)

print('50次以下弱覆盖MR区域:%s'%str(df_rsrp10.shape[0]))

#弱覆盖,橙色点

df_rsrp20 =

df_rsrp[(df_rsrp['MR_count']<=100)&(df_rsrp['MR_count']>50)]

df_rsrp20.to_csv('RSRP弱覆盖栅格50-100聚合.csv',index=True,header=True)

print('50-100次弱覆盖MR区域:%s'%str(df_rsrp20.shape[0]))

#弱覆盖,红色点

df_rsrp30 = df_rsrp[100

df_rsrp30.to_csv('RSRP弱覆盖栅格大于100聚合.csv',index=True,header=True)

print('100次以上弱覆盖MR区域:%s'%str(df_rsrp30.shape[0]))

############################百度地图HTML显示##############################

GEN_HTML = "demo_3.html"  #命名生成的html

f = open(GEN_HTML,'w')

message1 = """

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

html{height:100%}

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

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

#r-result{width:100%;}

var map = new

BMap.Map("container");  //

创建地图实例

var point = new

BMap.Point(117.023851, 32.63886);

map.centerAndZoom(point,

14);  //

初始化地图,设置中心点坐标和地图级别

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

var points = [

"""

###############################前后的保留部分是重点##########################

message2 = """ ];

if(!isSupportCanvas()){

}

//详细的参数,可以查看heatmap.js的文档

https://github.com/pa7/heatmap.js/blob/master/README.md

//参数说明如下:

heatmapOverlay = new

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

map.addOverlay(heatmapOverlay);

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

//是否显示热力图

function

openHeatmap(){

heatmapOverlay.show();

}

function closeHeatmap(){

heatmapOverlay.hide();

}

closeHeatmap();

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_x('canvas');

return !!(elem.getContext &&

elem.getContext('2d'));

}

"""

#HTML中写入第一部分

f.write(message1)

#HTML中写入第二部分,dataframe部分

for i in range(df_rsrp.shape[0]):  ##########################重点部分##################

f.write('{"lng":%s,"lat":%s,"count":%s}'%(str(df_rsrp.at[i,'MR_Longitude']),str(df_rsrp.at[i,'MR_Latitude']),str(df_rsrp.at[i,'MR_count'])))

#\r\n为换行符

f.write(','+'\r\n')

#HTML中写入第三部分

f.write(message2)

f.close()

webbrowser.open(GEN_HTML,new = 1)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值