geo-tool 解析百度经纬出错 {‘status‘: 240, ‘message‘: ‘APP 服务被禁用‘}

geo-tool 解析百度经纬出错 {'status': 240, 'message': 'APP 服务被禁用'}

作者:高玉涵

时间:2023.6.25

环境:Windows 10 专业版 22H2,Python 3.10.4

第三方包:geo-tool 1.1.2

引子

近日,在做一个项目需要使用百度地图提供的地理编码 API 来完成从物理地址到经纬度的转化。实践过程中纯手工调用百度 API 较为繁琐,就想查找一下是否有人已经实现了这个服务的通信协议。

因此查阅了 Python 包索引(https://pypi.python.org)输入关键字百度地理搜索,返回结果中的第一条记录为 geo-tool 的包(https://pypi.org/project/geo-tool/)这个包提供了简洁的接口来获取百度、高德和谷歌的地理编码服务(从包名可以注意到,这个包并非由官方提供,而是第三方开发者开发的)。遂安装并按着示例使用,意外收到 {‘status’: 240, ‘message’: ‘APP 服务被禁用’} 的错误信息。

一、查错

搜索百度给出的结论是自己创建 AK 时设置有问题,实际检查设置没有问题。

在这里插入图片描述

继续搜索找到以下官方回复。

在这里插入图片描述

参考最新官方文档发现更新之后请求的 URL 发生了改变。

旧 URL:

http://api.map.baidu.com/geocoder/v2/?location=34.35555,107.32518&output=json&ak=你的AK&pois=1

新 URL:

http://api.map.baidu.com/reverse_geocoding/v3/?ak=你的AK&output=json&coordtype=wgs84ll&location=31.225696,121.49884

在上述 URL 填上自己的 AK 来测试。

二、排错

知道故障原因,接下来的事情就好办了。进入到存放 geo-tool 包源文件位置,修改 URL 为新的即可。步骤如下:

  1. Lib\site-packages\geo_tool

  2. baidu_geo.py(因我只使用了百度,所以只需修改这个文件)

  3. BaiduGeo 类,修改 geo2address (将经纬度转成地址)方法中的 url 变量指向。

在这里插入图片描述

  1. 保存修改并退出。

三、测试通过

继续用示例来测试。

from geo_tool import BaiduGeo

baidu_map_key = '你的 AK'
print(BaiduGeo(baidu_map_key).geo2address(22.52955, 113.93078))
print(BaiduGeo(baidu_map_key).get_city_name_by_geo(22.52955, 113.93078))
print(BaiduGeo(baidu_map_key).address2geo('北京市海淀区上地十街10号'))

物理地址到经纬度的转化成功,故障排除。

{'status': 0, 'result': {'location': {'lng': 113.93077999999997, 'lat': 22.52954999936777}, 'formatted_address': '广东省深圳市南山区桂庙路65', 'edz': {'name': ''}, 'business': '南油,南头,桂庙路口', 'addressComponent': {'country': '中国', 'country_code': 0, 'country_code_iso': 'CHN', 'country_code_iso2': 'CN', 'province': '广东省', 'city': '深圳市', 'city_level': 2, 'district': '南山区', 'town': '南 
山街道', 'town_code': '440305002', 'distance': '31', 'direction': '附近', 'adcode': '440305', 'street': '桂庙路', 'street_number': '65'}, 'pois': [], 'roads': [], 'poiRegions': [], 'sematic_description': '', 'formatted_address_poi': '', 'cityCode': 340}}
深圳市
{'status': 0, 'result': {'location': {'lng': 116.3076223267197, 'lat': 40.05682848596073}, 'precise': 1, 'confidence': 80, 'comprehension': 100, 'level': '门址'}}

参考

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值