百度地图Web服务API抓取POI数据

(1)申请百度地图API信令

    访问百度地图API需要一个信令(AK),打开百度地图开放平台(http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5),点击右上角“API控制台”,进入了百度地图的开发界面。

选择“创建应用”-应用类型勾选“服务器端”–勾选所用到的服务(一般全选即可),此时就创建好了应用账号,得到“AK”。

(2)获取目标区域的经纬度

    利用百度地图坐标拾取系统(http://api.map.baidu.com/lbsapi/getpoint/index.html)获取矩形目标区域的左下角和右上角两点的经纬度

(3)要获取的POI类型

    百度地图Place API提供的POI提供二级行业分类(http://lbsyun.baidu.com/index.phptitle=lbscloud/poitags)

    选择你需要的行业分类

(4)获取POI信息

    适用于Python3,同时需要安装requests、json、xlwt库

只需要修改query、left_bottom、right_top、ak四个参数

query:第三步中选择的行业分类(注意'')

left_bottom:第二步中左下角的经纬度(经度在前,纬度在后,中间用逗号隔开)

right_top:第二步中右上角的经纬度

ak:第一步中获取的AK秘钥

import requests

import json

import time

import xlwt

query = '企业'    #关键词

left_bottom = [108.915,34.246]    #左下角的经纬度

right_top = [108.995,34.255]    #右上角的经纬度

ak = 'xxxxxxxxxxx'  #百度地图API信令AK

left_bottom_part = []

right_top_part = []

urllist = []

r = 0

part_n = 1

p = 1

col = 0

row = 0

result =[]

wb = xlwt.Workbook()

ws = wb.add_sheet('result')

url0 = 'http://api.map.baidu.com/place/v2/search?'   

url = url0 +'query=' + query + '&bounds='+ str(left_bottom[1]) + ',' + str(left_bottom[0]) + ',' + str(right_top[1])+ ',' + str(right_top[0]) + '&page_size=20&page_num=0&output=json&ak=' + ak

data = requests.get(url).text

data_json = json.loads(data)

total = data_json['total']

while total == 400:

    part_n = part_n *2

    a = []

    for i in range(part_n):

        for j in range(part_n):

            x_item = (right_top[0]-left_bottom[0])/part_n

            y_item = (right_top[1]-left_bottom[1])/part_n

            left_bottom_part = [left_bottom[0]+i*x_item,left_bottom[1]+j*y_item]

            right_top_part = [left_bottom[0]+(i+1)*x_item,left_bottom[1]+(j+1)*y_item]

            url = url0 +'query=' + query + '&bounds=' + str(left_bottom_part[1]) + ',' + str(left_bottom_part[0]) + ',' + str(right_top_part[1]) + ',' + str(right_top_part[0]) + '&page_size=20&page_num=0&output=json&ak=' + ak

            data = requests.get(url).text

            data_json = json.loads(data)

            a.append(data_json['total'])

            time.sleep(1)

    total = max(a)

    pass

for m in range(part_n):

    for n in range(part_n):

        b = 0

        x_item = (right_top[0]-left_bottom[0])/part_n

        y_item = (right_top[1]-left_bottom[1])/part_n

        left_bottom_part = [left_bottom[0]+m*x_item,left_bottom[1]+n*y_item]

        right_top_part = [left_bottom[0]+(m+1)*x_item,left_bottom[1]+(n+1)*y_item]

        url1 = url0 +'query=' + query + '&bounds=' + str(left_bottom_part[1]) + ',' + str(left_bottom_part[0]) + ',' + str(right_top_part[1]) + ',' + str(right_top_part[0]) + '&page_size=20&page_num=0&output=json&ak=' + ak

        data = requests.get(url1).text

        data_json = json.loads(data)

        if data_json['total']%20 ==0:

            b = data_json['total']/20

        else:

            b = data_json['total']//20+1

        for c in range(int(b)):

            url2 = url0 +'query=' + query + '&bounds=' + str(left_bottom_part[1]) + ',' + str(left_bottom_part[0]) + ',' + str(right_top_part[1])+ ',' + str(right_top_part[0])+ '&page_size=20&page_num='+ str(c) +'&output=json&ak=' + ak

            data = requests.get(url2).text

            data_json = json.loads(data)

            result.append(data_json['results'])

            print('第'+str(p)+'页成功'+','+str(data_json['total'])+'条数据载入')

            p +=1

            urllist.append(url2)

            time.sleep(1)

for e in result:

    for g in e:

        ws.write(row,0,str(g))

        row +=1

wb.save('result.xls')

(5)数据清洗

    Excel中“数据”-“分列”-分隔符号-“,”

“查找替换”将文本中不要的内容删去

注:获取的数据为百度坐标系,可以通过http://mapclub.cn/archives/2168转换为国测局坐标系

(6)数据可视化

    可以用Powermap对数据进行分析,也可以导入gis分析。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,667评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,361评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,700评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,027评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,988评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,230评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,705评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,366评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,496评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,405评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,453评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,725评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,803评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,015评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,514评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,111评论 2 341

推荐阅读更多精彩内容