Python调用百度地图API实现地址转经纬度
本文详解如何使用Python调用百度地图Web服务API,将中文地址转换为经纬度。重点介绍AK申请、v3接口URL构建、中文编码处理及请求库选择,提供完整代码示例与注意事项,帮助开发者避免常见错误。
Python调用百度地图API实现地址转经纬度
在中文应用场景中,
通常指提取中国境内具体地址对应的经纬度坐标。这一功能主要依赖百度地图提供的API接口。在实际操作中曾遇到不少波折,起初直接套用网络上的旧代码进行调试,耗时良久仍无法正常运行,最终发现必须紧跟官方文档的更新节奏。使用第三方API时,务必仔细阅读官方说明书,这是避免踩坑的关键。
AK申请与接口文档准备
首先,需要前往百度地图开放平台注册获取AK(Access Key)。在此之前,需完成百度开发者身份注册,该服务目前免费。随后访问其地理编码服务文档页面:
http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
访问该页面后:

由于我们的需求是将地址转换为经纬度,因此只需关注“地理编码”相关部分即可。

URL构建与编码注意事项
官网提供了详细的服务文档(务必仔细阅读),因为在爬取或调用地址时,必须构造与官方示例一致的URL。这里有两个关键点需要注意:
1. 网络上部分旧代码使用的是v2版本,但当前官方已更新至v3版本,需使用新版接口。
2. 中文地址必须进行编码处理。通常使用urllib.request库中的quote函数即可满足默认需求,但在某些特殊网址中可能会遇到非通用汉字编码方式,此时需查询对应的编码规则并进行encode处理。
Python代码实现示例
import json
from urllib.request import urlopen, quote
import requests
def getlnglat(address):
url = 'http://api.map.baidu.com/geocoding/v3/'
output = 'json'
ak = '你的AK' # 百度地图ak,具体申请自行百度,提醒需要在“控制台”-“设置”-“启动服务”-“正逆地理编码”,启动
address = quote(address) # 由于本文地址变量为中文,为防止乱码,先用quote进行编码
uri = url + '?' + 'address=' + address + '&output=' + output + '&ak=' + ak +'&callback=showLocation%20'+'//GET%E8%AF%B7%E6%B1%82'
# req = urlopen(uri)
# res = req.read().decode() 这种方式也可以,和下面的效果一样,都是返回json格式
res=requests.get(uri).text
temp = json.loads(res) # 将字符串转化为json
lat = temp['result']['location']['lat']
lng = temp['result']['location']['lng']
return lat,lng # 纬度 latitude,经度 longitude
最终获取的结果如下:
address='北京市海淀区上地十街10号'
getlnglat(address)
>>(40.05703033345938, 116.3084202915042)
以上即为本文的全部内容,希望能为读者提供有益参考。若觉得内容有帮助,欢迎支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













