Python基于百度地图API根据地址获取经纬度
根据一个中文的地址信息,获取该地址所对应的经纬度信息。(专业的说法是地理编码)。编程语言:Python3,百度地图API接口:http://lbsyun.baidu.com/index.php?title=webapi
获取地址的经纬度大致步骤如下:
- 1.注册百度账号、登录百度地图,申请秘钥:http://lbsyun.baidu.com/apiconsole/key?application=key
- 2.查看百度地图中关于地址解析的服务文档:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
- 3.Python 编写request请求,使用GET访问接口:http://api.map.baidu.com/geocoder/v2/?address=北京市海淀区上地十街10号&output=json&ak=您的ak&callback=showLocation //GET请求
- 4.Python解析返回的json结果,得到经纬度信息
访问API接口需要上传的信息:

代码如下:
# encoding:utf-8
import requests
import time# 此处需要ak,ak申请地址:https://lbs.amap.com/dev/key/app
ak = "xxxxxxxxxxx"headers = {'X-Requested-With': 'XMLHttpRequest','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/56.0.2924.87 Safari/537.36','Referer': 'https://restapi.amap.com/'
}# 地理信息解析
def amp_geocode(addr=None):url = "https://restapi.amap.com/v3/geocode/geo?parameters"params = {"key": ak,"address": addr}response = requests.get(url, params=params, headers=headers)if response.status_code == 200:try:loc_info = response.json()["geocodes"][0]["location"]lng = loc_info.split(",")[0]lat = loc_info.split(",")[1]print(loc_info)time.sleep(0.25)return (lng, lat)except Exception as e:print("Exception in amp_geocode",e)time.sleep(5)return Noneelse:print("========>", response.status_code)time.sleep(5)return None
注意事项:
- 访问API的方式要对,POST、GET方式各有不同,参数要正确
- 网络访问,难免会出现错误,需要进行异常处理,try…except,此外如果出现短时间出现频繁的访问接口,可能百度的服务器会中断响应,因此如果出现异常时,先让程序休眠等待一下,即time.sleep(5)
- 对百度地图访问量很大的话,可以申请开发者个人认证,百度对认证过的用户,开放的接口访问额度大很多。

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
