关于如何将实际地址转换成经纬度。
首先,先用到百度地图的API,先自行注册账号,地址 http://lbsyun.baidu.com/
按照上述操作发送请求即可使用requests.get函数去调用API。
url = ‘http://api.map.baidu.com/geocoding/v3/?address=%s&output=json&ak=%s’%(name,AK)
res = requests.get(url)
话不多说,上代码。
import requests
from openpyxl import load_workbook
AK = "XXXXXXXXXXXXXXXXXXXXXXXXXX" # 把复制的AK直接粘贴过来就可以了
def change(name):
url = 'http://api.map.baidu.com/geocoding/v3/?address=%s&output=json&ak=%s'%(name,AK)
res = requests.get(url)
if res.status_code == 200:
val = res.json()
if val["status"] == 0:
retval = {'地址':name,'经度':val['result']['location']['lng'],'纬度':val['result']['location']['lat'],'地区标签':val['result']['level'],'是否精确查找':val['result']['precise']}
else:
retval = None
return retval
else:
print('无法获取%s经纬度'%name)
if __name__ == '__main__':
file = r'C:\Users\TR\Desktop\map.xlsx'#存放在桌面
wb = load_workbook(file)
ws = wb.active
for i in range(2,ws.max_row+1):
name = ws.cell(row=i,column=1).value
map = change(name)
if map !=None:
ws.cell(row=i,column=2).value = map['经度']
ws.cell(row=i,column=3).value = map['纬度']
else:
ws.cell(row=i,column=2).value = ' '
ws.cell(row=i,column=3).value = ' '
wb.save(file)
结果如下: