百度API 位置与经纬度相互转换
每天限制6000次
百度API平台 https://lbsyun.baidu.com/apiconsole/key#/home
1.pip install 安装相关python库
import json
from urllib.request import urlopen, quote
import requests
2.根据地理位置返回其相关经纬度
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
req = urlopen(uri)
# res = req.read().decode() 这种方式也可以,和下面的效果一样,都是返回json格式
res = requests.get(uri).text
temp = json.loads(res) # 将字符串转化为json
try:
lat = temp.get('result').get('location').get('lat')
lng = temp.get('result').get('location').get('lng')
str_lat_lng = str(lat) + ',' + str(lng)
except Exception as e:
str_lat_lng = ' , '
得到结果:lnglat is: 30.7962695*****,106.0930205***
# 纬度 latitude,经度 longitude
3.根据经纬度返回其相关地理位置
address = '30.7962695*****,106.0930205***' # 有效经纬度
lat = address.split(',')[0]
lng = address.split(',')[1]
AK = '百度地图AK(自己创建好的应用里有,这里直接复制过来即可)' # 百度地图AK(自己创建好的应用里有,这里直接复制过来即可),
url = 'http://api.map.baidu.com/reverse_geocoding/v3/?ak={}&output=json&coordtype=wgs84ll&location={},{}'.format(AK,lat,lng)
res = requests.get(url)
address = json.loads(res.text)['result']['formatted_address']
得到结果:address is: 四川省********
# 纬度 latitude,经度 longitude