全国大学分布热力图

全国大学分布热力图

1.数据准备

       第一步得有全国大学经纬度信息,本来打算自己爬取,后来找到网上有人已经打包好的全国大学经纬度信息,但是由于它是腾讯坐标(用的是火星坐标GCJ_02),而我们现在要调用的是百度地图的api,其用的是百度坐标。下面稍微解释一下几种坐标的差别。
 地球坐标 (WGS84) 国际标准,从 GPS 设备中取出的数据的坐标系 国际地图提供商使用的坐标系 
 火星坐标 (GCJ-02)也叫国测局坐标系 中国标准,从国行移动设备中定位获取的坐标数据使用这个坐标系 国家规定: 国内出版的各种地图系统(包括电子形式),必须至少 采用GCJ-02对地理位置进行首次加密。 
 百度坐标 (BD-09) 百度标准,百度 SDK,百度地图,Geocoding 使用(本来就乱了, 百度又在火星坐标上来个二次加密)

2.数据处理

接下来就是处理数据了,首先进行的是将腾讯坐标转换成百度坐标,数据格式如下:
中国人民大学 39.99173116.30965
清华大学 40.0036116.32697
北京交通大学 39.95092116.34107
北京工业大学 39.87385116.48067
北京航空航天大学 39.98421116.34975
北京理工大学 39.96091116.31667
北京科技大学 39.99135116.36072
北方工业大学 39.9289116.20819
北京化工大学 39.97069116.42098
北京工商大学 39.9256116.31492
北京服装学院 39.97402116.43062
北京邮电大学 39.96337116.35685

详细数据url地址:http://download.csdn.net/download/jgzquanquan/10148627
然后我需要要坐标转换,并且以一定的格式输出以方便传入到百度api中,数据格式如下:
{"lng":116.31608196337851,"lat":39.99792627537259,"count":50},
{"lng":116.33340814277092,"lat":40.009780570502635,"count":50},
{"lng":116.34750970867914,"lat":39.957086116513146,"count":50},
{"lng":116.48715543594966,"lat":39.87986870711284,"count":50},
{"lng":116.35619452073995,"lat":39.99036838691412,"count":50},
{"lng":116.32310239107963,"lat":39.967099252661534,"count":50},
{"lng":116.36716864919447,"lat":39.99749774045856,"count":50},
{"lng":116.21459074380809,"lat":39.93517523825392,"count":50},
{"lng":116.42744879742955,"lat":39.976775219057615,"count":50},

详细数据url地址:http://download.csdn.net/download/jgzquanquan/10148635
这边我主要用了python才处理这些数据,具体代码如下:
import math
def main():
    queryFile = open("poi_university.txt", 'r', encoding='utf-8')
    fout = open('university_lee1.txt', 'a', encoding='utf-8')
    for query in queryFile:
        splitRes = query.split('\t')
        if len(splitRes) != 3:
            print(query, ' 格式不正确')
        else:
            uinfo = []
            lat = query.split('\t')[1]
            lng = query.split('\t')[2]
            # 下面是数据转换的逻辑
            x=float(lng.rstrip('\n'))
            y=float(lat)
            z=math.sqrt(x*x+y*y)+0.00002*math.sin(y*math.pi)
            theta=math.atan2(y,x)+0.000003*math.cos(x*math.pi)
            bd_lng=z*math.cos(theta)+0.0065
            bd_lat=z*math.sin(theta)+0.006
            str1="{"+"\"lng\":"+str(bd_lng)+","+"\"lat\":" +str(bd_lat)+",\"count\":50},"
            fout.write(str1 + '\n')
            print(str1)
    queryFile.close()
    fout.close()
main()



3.百度api

       这边我主要找到了百度地图web端api中的一个关于热力图的例子,该地址的url为: http://lbsyun.baidu.com/jsdemo.htm#c1_15 ;我主要修改了其数据源,以及再改了一些参数,下面是该例子的源码。



    
    
    
    
    热力图功能示例
    	


	
该html详情请见我的资源:http://download.csdn.net/download/jgzquanquan/10148642 点击打开链接

4.展示效果

全国大学分布热力图_第1张图片

你可能感兴趣的:(数据可视化)