Python调用百度地图API实现地址转经纬度

Aria
Aria
发布时间:2026-10-13 | 2人浏览过
原创

本文详解如何使用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)

以上即为本文的全部内容,希望能为读者提供有益参考。若觉得内容有帮助,欢迎支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表