百度地图获得POI及python实现

本文介绍如何利用百度地图API进行地址解析、逆地址解析和获取POI,重点在于Python实现这一过程。首先免费申请API秘钥,然后通过设定区域(如2km*2km)并分割,调用API接口获取数据,并将结果存储到数据库。
摘要由CSDN通过智能技术生成

本文将记录有关利用百度地图API去搜索一个城市内的POI的相关内容

百度地图API

百度地图API服务说明见其主页:

http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

地址解析:根据地址获取坐标

http://api.map.baidu.com/geocoder?address=地址&output=json&key=用户密钥&city=城市名)

它返回的是个json类型数据,一个区域最大返回数为400,每页最大返回数为20

逆地址解析:根据坐标获取地址

http://api.map.baidu.com/geocoder?location=纬度,经度&output=输出格式类型&key=用户密钥

根据地址获取POI

http://api.map.baidu.com/place/v2/search?query=%E8%B6%85%E5%B8%82&page_size=0&page_num=2&scope=1&region=%E6%98%8C%E9%BB%8E&output=json&ak=40bUQeFSGGs8c45LHMfe2Ram0hSCKZks

秘钥的申请在百度API的官方网站http://lbsyun.baidu.com/apiconsole/key


秘钥是免费申请的,每天有固定的流量,如果您要使用我的代码,还麻烦您自主申请下秘钥,以免流量用完影响您的使用


在这两个API中有关query类型的选择可以参考http://lbsyun.baidu.com/index.php?title=lbscloud/poitags这个网址内的类别。
接下来需要考虑的就是有关在地图内小方格的选择,参考了一些博文里面提到方格的大小选择是2KM*2KM的大小比较好,我是对一个县城进行搜索,所以将该县城分割为四份或者8份即够了。

整体流程

1 区域划分,2km*2km的区域基本可以满足需求,获取每个区域的对角坐标(经纬度),逐行写入一个txt文本里
2 爬虫程序编写 读取1中的txt文本,逐行循环;调用百度API接口,爬取json;将爬取的数据存入数据库中; 每个类别跑一次程序

python实现

#该代码是学习其他博文,在此对其他博主表示感谢
import sys
import requests  #导入requests库,这是一个第三方库,把网页上的内容爬下来用的
ty=sys.getfilesystemencoding()  #这个可以获取文件系统的编码形式
import time

#百度API接口,通过输入经纬度范围查询范围内的POI数据,
#http://lbsyun.baidu.com/index.php?title=lbscloud/poitags 该网址为POI类型,即API链接中的query的类型
base_url='http://api.map.baidu.com/place/v2/search?query={}&bounds={}&page_size=20&page_num={}&output=json&ak=SAKipkD157dL2Mamat8D4FqgxzYz0x7X'

#1.获取每个格网起始URL
def get_begin_url(keyword,page=0):
    with open('E:/贾学斌/格网矩形范围.txt', 'r') as f:
        #网格矩形范围内每一行是一个小方格的经纬度范围,保存顺序为小方格的左下经度纬度、右上经度纬度
        f=f.readlines()
        for line in f:
            w1 = float(line.split(',')[1])
            j1 = float(line.split(',')[0])
            w2 = float(line.split(',')[3])
            j2 = float(line.split(',')[2])
            url2 = base_url.format(keyword, str(w1) + ',' + str(j1) + ',' + 
要使用Python获取百度地图POI数据,可以使用百度地图API提供的web服务来实现。首先,你需要申请一个百度开发者账号,并创建一个应用程序以获取访问API的密钥。 接下来,你可以使用Python中的requests库来发送HTTP请求并获取百度地图POI数据。首先,你需要构建一个HTTP请求URL,包括你的密钥和其他必需的参数,比如城市、关键词等。然后,发送GET请求到百度地图API,并获取返回的JSON数据。 下面是一个示例代码,演示如何使用Python获取百度地图POI数据: ```python import requests # 设置百度地图API的密钥和其他参数 api_key = "你的密钥" city = "北京市" keyword = "餐厅" # 构建HTTP请求URL url = f"http://api.map.baidu.com/place/v2/search?query={keyword}&region={city}&output=json&ak={api_key}" # 发送GET请求并获取返回的数据 response = requests.get(url) data = response.json() # 处理返回的数据 if data["status"] == 0: # 输出POI数据 for poi in data["results"]: print(poi["name"], poi["address"], poi["telephone"]) else: print("获取POI数据失败") ``` 在这个示例代码中,我们使用了requests库来发送GET请求并获取返回的JSON数据。然后,我们可以通过解析JSON数据来提取感兴趣的POI信息,比如名称、地址和电话号码。 需要注意的是,在构建HTTP请求URL时,我们使用了f-string来方便地将参数插入URL中。此外,你还需要根据你的需求来调整代码中的其他参数,比如城市和关键词。 这只是一个简单的示例,你可以根据自己的需求来扩展和优化代码。希望这个答案能帮助到你!
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值