关于地理热力图的绘制,我觉得很炫酷。在这里我使用了两种方法:结合python和百度地图api的方法;使用python的folium的方法。
(1)结合python和百度地图api的方法
1. 进入网站:http://lbsyun.baidu.com/,选择控制台。
2.选择创建应用
3. 获取密钥
4. 再转到网址:http://lbsyun.baidu.com/jsdemo.htm#c1_15 ,百度地图api示例
关于热力图的样例代码:
关于var point[]内部数据的形式是字典,字典中第一个元素是经度,第二个元素是纬度,第三个是数值大小。
所以我们需要将数据转换成可视化的图形,在这里我们用python来获取经纬度和转换数据形式。
核心函数如下:
def get_Lnglat(addresses): for address in addresses: url='http://api.map.baidu.com/geocoder?key=f247cdb592eb43ebac6ccd27f796e2d2&output=json&address='+str(address) r=requests.get(url,headers=header) time.sleep(1) answer=r.json() # 获取纬度 lng = float(answer['result']['location']['lng']) print(address) # 获取经度 lat = float(answer['result']['location']['lat']) print(lng) dict="{'lng':"+str(lng)+",'lat':"+str(lat)+",'count':"+str(count)+"}," return dict
将获取的数据转换并添加到var point[]中,再用之前获取的密钥加到这里
再运行代码,则有
(2)使用python的folium的方法
在这里使用之前获取的数据源,文件格式这样:
代码: #!/usr/bin/env python3 #!coding=utf-8 import pandas as pd import numpy as np import folium from folium.plugins import HeatMap import webbrowser df_1=pd.read_csv(r'F:\python\数据\全国省市经纬度信息.csv',engine='python',encoding='utf-8') lng,lat,values=np.array(df_1['lng']),np.array(df_1['lat']),np.array(df_1['value']) data=[[lat[i],lng[i],values[i]] for i in range(len(df_1['address']))] map_osm = folium.Map(location=[35,110],zoom_start=2) HeatMap(data).add_to(map_osm) file_path = r"F:\python\数据\photo.html" map_osm.save(file_path) #保存本地 webbrowser.open(file_path) #在本地浏览器打开
效果图: