python2.7 調(diào)用百度地圖API 顯示2017年中國樓市熱度分布

本文主要參考:http://www.reibang.com/p/773ff5f08a2c

年初琅轧,國家統(tǒng)計局公布了70個大中城市住宅銷售價格變動情況
其中有一項為價格指數(shù)表:


image.png

為了直觀顯示熱度分布,這里直接用了百度官網(wǎng)的API虏等,恰好里面有heatmap.js弄唧。
網(wǎng)址為:
http://developer.baidu.com/map/jsdemo.htm#c1_15
從中可以看出,數(shù)組points的規(guī)范為:

var points =[
    {"lng":116.418261,"lat":39.921984,"count":50},
    {"lng":116.423332,"lat":39.916532,"count":51},
    ......
    ];

因此博其,我們最終python程序要將數(shù)據(jù)規(guī)整為上面points的表現(xiàn)形式套才。

這里我們采用同比數(shù)據(jù),如下csv文件所示:

北京,127.0
天津,124.4
石家莊,118.9
太原,103.0
呼和浩特,101.0
沈陽,103.2
大連,102.5
長春,104.4
哈爾濱,102.1
上海,128.3
南京,137.3
杭州,127.6
寧波,111.2
合肥,144.2
福州,125.7
廈門,138.8
南昌,114.5
濟南,119.0
青島,113.2
鄭州,127.7
武漢,124.2
長沙,118.4
廣州,124.2
深圳,118.4
南寧,111.2
耗降口,106.5
重慶,107.7
成都,105.3
貴陽,105.3
昆明,104.2
西安,107.6
蘭州,103.2
西寧,102.3
銀川,102.4
烏魯木齊,99.1
唐山,103.2
秦皇島,107.0
包頭,100.2
丹東,99.8
錦州,97.7
吉林,102.6
牡丹江,99.3
無錫,134.4
揚州,110.3
徐州,109.6
溫州,104.4
金華,106.8
蚌埠,109.8
安慶,107.7
泉州,109.8
九江,112.2
贛州,114.0
煙臺,105.5
濟寧,102.0
洛陽,105.0
平頂山,103.5
宜昌,105.9
襄陽,103.2
岳陽,105.8
常德,103.3
惠州,124.7
湛江,109.3
韶關(guān),108.7
桂林,103.8
北海,104.5
三亞,106.3
瀘州,103.0
南充,102.0
遵義,102.0
大理,102.6

接下來我們便希望得到上述城市在地圖中對應的經(jīng)緯度,也就是points變量里面的lng沸毁、lat以及count信息峰髓。

在撰寫python程序之前需要去官網(wǎng)獲取ak碼,登陸http://lbsyun.baidu.com/息尺,在該網(wǎng)頁最下方即可申請密匙携兵。(ip可以寫成0.0.0.0/0)

對應的python程序如下:

# -*- coding: UTF-8 -*-

#import requests
#from lxml import etree
#import pandas as pd

import csv
import json

import urllib
import sys
reload(sys)

sys.setdefaultencoding('utf8')


def getlonlat(address):
    ak = '你的百度api 的 key'
    ori_url ='http://api.map.baidu.com/geocoder/v2/'
    url = ori_url +'?address='+address+'&output=json'+'&ak='+ak
    req = urllib.urlopen(url)
    #urlopen返回 一個類文件對象(基礎網(wǎng)頁爬蟲知識啦)
    res = req.read()
    temp = json.loads(res)
    # print req
    # print res
    # print temp
    return temp

# add ='山西'
# getlonlat(add)

file=open('longlat.json','w')
#在本地生成爬取的經(jīng)緯度信息,以json格式保存
with open('price.csv','r') as csvfile:
#打開本地的price.csv文件
    reader = csv.reader(csvfile)
    for line in reader:
        city = line[0].strip()
        pricenum = line[1].strip()
        # print city,pricenum
        lon = getlonlat(city)['result']['location']['lng']
        lat = getlonlat(city)['result']['location']['lat']
        str_temp = '{"lat":' + str(lat) + ',"lng":' + str(lon) + ',"count":' + str(pricenum) +'},'
        print str_temp
#規(guī)整后的數(shù)據(jù)
        # print '"city":'+str(city)+',"lat":' + str(lat) + ',"lng":' + str(lon) + ',"count":' + str(pricenum) +''
        file.write(str_temp+'\n')
file.close()

最終得到數(shù)據(jù)如下:

{"lat":39.9299857781,"lng":116.395645038,"count":127.0},
{"lat":39.1439299033,"lng":117.210813092,"count":124.4},
{"lat":38.0489583146,"lng":114.522081844,"count":118.9},
{"lat":37.890277054,"lng":112.550863589,"count":103.0},
{"lat":40.8283188731,"lng":111.66035052,"count":101.0},
{"lat":41.8086447835,"lng":123.432790922,"count":103.2},
{"lat":38.9487099383,"lng":121.593477781,"count":102.5},
{"lat":43.8983376071,"lng":125.313642427,"count":104.4},
{"lat":45.7732246332,"lng":126.657716855,"count":102.1},
{"lat":31.24916171,"lng":121.487899486,"count":128.3},
{"lat":32.0572355018,"lng":118.778074408,"count":137.3},
{"lat":30.2592444615,"lng":120.219375416,"count":127.6},
{"lat":29.8852589659,"lng":121.579005973,"count":111.2},
{"lat":31.8669422607,"lng":117.282699092,"count":144.2},
{"lat":26.0471254966,"lng":119.330221107,"count":125.7},
{"lat":24.4892306125,"lng":118.103886046,"count":138.8},
{"lat":28.6895780001,"lng":115.893527546,"count":114.5},
{"lat":36.6827847272,"lng":117.024967066,"count":119.0},
{"lat":36.1052149013,"lng":120.384428184,"count":113.2},
{"lat":34.7566100641,"lng":113.64964385,"count":127.7},
{"lat":30.5810841269,"lng":114.316200103,"count":124.2},
{"lat":28.2134782309,"lng":112.979352788,"count":118.4},
{"lat":23.1200491021,"lng":113.307649675,"count":124.2},
{"lat":22.5460535462,"lng":114.025973657,"count":118.4},
{"lat":22.8064929356,"lng":108.297233556,"count":111.2},
{"lat":20.022071277,"lng":110.330801848,"count":106.5},
{"lat":29.5446061089,"lng":106.530635013,"count":107.7},
{"lat":30.6799428454,"lng":104.067923463,"count":105.3},
{"lat":26.6299067414,"lng":106.709177096,"count":105.3},
{"lat":25.0491531005,"lng":102.714601139,"count":104.2},
{"lat":42.9863649464,"lng":125.150148579,"count":107.6},
{"lat":36.064225525,"lng":103.823305441,"count":103.2},
{"lat":36.640738612,"lng":101.76792099,"count":102.3},
{"lat":38.5026210119,"lng":106.206478608,"count":102.4},
{"lat":43.8403803472,"lng":87.5649877411,"count":99.1},
{"lat":39.6505309225,"lng":118.183450598,"count":103.2},
{"lat":39.9454615659,"lng":119.604367616,"count":107.0},
{"lat":40.6471194257,"lng":109.846238532,"count":100.2},
{"lat":40.1290228266,"lng":124.338543115,"count":99.8},
{"lat":41.1308788759,"lng":121.147748738,"count":97.7},
{"lat":43.8719883344,"lng":126.564543989,"count":102.6},
{"lat":44.5885211528,"lng":129.608035396,"count":99.3},
{"lat":31.5700374519,"lng":120.305455901,"count":134.4},
{"lat":32.4085052546,"lng":119.427777551,"count":110.3},
{"lat":34.2715534311,"lng":117.188106623,"count":109.6},
{"lat":28.002837594,"lng":120.690634734,"count":104.4},
{"lat":29.1028991054,"lng":119.652575704,"count":106.8},
{"lat":32.9294989067,"lng":117.357079866,"count":109.8},
{"lat":30.5378978174,"lng":117.058738772,"count":107.7},
{"lat":24.901652384,"lng":118.600362343,"count":109.8},
{"lat":29.7196395261,"lng":115.999848022,"count":112.2},
{"lat":25.8452955363,"lng":114.935909079,"count":114.0},
{"lat":37.5365615629,"lng":121.30955503,"count":105.5},
{"lat":35.4021216643,"lng":116.600797625,"count":102.0},
{"lat":34.6573678177,"lng":112.447524769,"count":105.0},
{"lat":33.7453014565,"lng":113.300848978,"count":103.5},
{"lat":30.732757818,"lng":111.310981092,"count":105.9},
{"lat":32.2291685915,"lng":112.250092848,"count":103.2},
{"lat":29.3780070755,"lng":113.146195519,"count":105.8},
{"lat":29.0121488552,"lng":111.653718137,"count":103.3},
{"lat":23.1135398524,"lng":114.41065808,"count":124.7},
{"lat":21.2574631038,"lng":110.365067263,"count":109.3},
{"lat":24.8029603119,"lng":113.594461107,"count":108.7},
{"lat":25.262901246,"lng":110.260920147,"count":103.8},
{"lat":21.472718235,"lng":109.122627919,"count":104.5},
{"lat":18.2577759149,"lng":109.522771281,"count":106.3},
{"lat":28.8959298039,"lng":105.443970289,"count":103.0},
{"lat":30.8009651682,"lng":106.105553984,"count":102.0},
{"lat":27.6999613771,"lng":106.931260316,"count":102.0},
{"lat":25.6939666225,"lng":100.219208954,"count":102.6},

將以上數(shù)據(jù)填充在百度熱力圖編輯器里面的points變量里即可得到最終的房價漲幅熱力圖數(shù)據(jù):

image.png
image.png

關(guān)于heatmap.js
其中的參數(shù)可以自行調(diào)整搂誉。

backgroundColor 畫板的背景顏色設置徐紧,支持rgb(a),顏色名稱炭懊,但必須要用引號

gradient 設置熱點圖的光圈顏色并级,數(shù)值為[0,1],數(shù)值大的在光圈內(nèi)側(cè)侮腹,數(shù)值相等則靠下的生效嘲碧,數(shù)值設置不分大小順序,并可以同時設置很多顏色

radius 設置光圈的半徑大小父阻,值>=0,=0取得是默認值

opacity 光圈透明度設置[0,1]愈涩,如果值設置了,會重寫maxOpacity和minOpacity的值

很慚愧就做了一點微小的整理加矛!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末履婉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子斟览,更是在濱河造成了極大的恐慌毁腿,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趣惠,死亡現(xiàn)場離奇詭異狸棍,居然都是意外死亡,警方通過查閱死者的電腦和手機味悄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門草戈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人侍瑟,你說我怎么就攤上這事唐片”” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵费韭,是天一觀的道長茧球。 經(jīng)常有香客問我,道長星持,這世上最難降的妖魔是什么抢埋? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮督暂,結(jié)果婚禮上揪垄,老公的妹妹穿的比我還像新娘。我一直安慰自己逻翁,他們只是感情好饥努,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著八回,像睡著了一般酷愧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缠诅,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天溶浴,我揣著相機與錄音,去河邊找鬼滴铅。 笑死戳葵,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的汉匙。 我是一名探鬼主播拱烁,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼噩翠!你這毒婦竟也來了戏自?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤伤锚,失蹤者是張志新(化名)和其女友劉穎擅笔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屯援,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡猛们,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了狞洋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弯淘。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吉懊,靈堂內(nèi)的尸體忽然破棺而出庐橙,到底是詐尸還是另有隱情假勿,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布态鳖,位于F島的核電站转培,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浆竭。R本人自食惡果不足惜浸须,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望兆蕉。 院中可真熱鬧羽戒,春花似錦、人聲如沸虎韵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽包蓝。三九已至,卻和暖如春企量,著一層夾襖步出監(jiān)牢的瞬間测萎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工届巩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留硅瞧,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓恕汇,卻偏偏與公主長得像腕唧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瘾英,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容