注:本文的ak码一周后会删除。

1.调用经纬度转换成地址 python调用代码。
#单个经纬度到地址
import pandas as pd
import json
from urllib.request import urlopen, quote
import requests
AK = 'w0tqnxXPboagGGdrWZr258ch5awnlPa6'#***换成自己的ak码,本AK码一周后删除
lng= 122.9893 #经度
lat= 41.1162#纬度
url_drive='https://api.map.baidu.com/reverse_geocoding/v3/?ak={}&output=json&coordtype=wgs84ll&location={},{}'.format(AK,lat,lng)
result_drive=json.loads(urlopen(url_drive).read())
result_drive
其查到的结果是:

详细地址:

import pandas as pd
import json
from urllib.request import urlopen, quote
import requests
data = pd.read_excel('经纬度转地址.xlsx')#相对路径
for i in data.index:
lng=data.loc[i,'经度']
lat=data.loc[i,'纬度']
AK = data.iat[0,0]#***换成自己的ak码
url_drive='https://api.map.baidu.com/reverse_geocoding/v3/?ak={}&output=json&coordtype=wgs84ll&location={},{}'.format(AK,lat,lng)
result_drive=json.loads(urlopen(url_drive).read())
if result_drive=="":
data.loc[i,'地址']=""
elif result_drive['status'] == 0:
data.loc[i,'地址']=result_drive['result']['formatted_address']
data.loc[i,'省份']=result_drive['result']['addressComponent']['province']
data.loc[i,'城市']=result_drive['result']['addressComponent']['city']
else:
data.loc[i,'地址']=""
2.地址转经纬度
原理如上面一样,这里只上代码:
import pandas as pd
import json
from urllib.request import urlopen, quote
import requests
data = pd.read_excel('地址转经纬度.xlsx')#相对路径
def get_lng_lat(address):
url = 'http://api.map.baidu.com/geocoding/v3/?address='#百度开发文档查询链接地址
ak = data.iat[0,0]#输入自己的ak码,在导入文件中
url_i = url + quote(address) + '&output=json&ak=' + ak# 由于本文地址变量为中文,为防止乱码,先用quote进行编码
req = urlopen(url_i)
res = req.read().decode()
temp = json.loads(res)#读取内容
if temp['status']==0 : # 限定了信心值大于20
lng = temp['result']['location']['lng'] # lng longitude 经度值
lat = temp['result']['location']['lat'] # lat latitude 纬度值
c=temp['result']['comprehension']#解析误差,方便后面核对 ,为0的时候,可能地址未定位清楚,建议检查 小于20的定位。
else:
lng = 0
lat = 0#未定位到的,取0
c=0
return lng,lat,c
for i in data.index:
lng,lat,c = get_lng_lat(data.loc[i,'地址'])
data.loc[i,'经度'] = lng
data.loc[i,'纬度'] = lat
data.loc[i,'c'] = c
data

3.输入两地经纬度算距离
import pandas as pd
import json
from urllib.request import urlopen
data=pd.read_excel('输入数据.xlsx',sheet_name=0)
datalist = []
for i in range(len(data)):
out_lat = data.at[i,'起始地纬度']#起始地纬度
out_lng = data.at[i,'起始地经度']#起始地经度
des_lat = data.at[i,'目的地纬度']#目的地纬度
des_lng = data.at[i,'目的地经度']#目的地经度
AK = data["AK码"][0]#***换成自己的ak码
url_drive='http://api.map.baidu.com/directionlite/v1/driving?origin={},{}&destination={},{}&ak={}'.format(out_lat,out_lng,des_lat,des_lng,AK)
result_drive=json.loads(urlopen(url_drive).read())
if result_drive['status']==0:
distance_drive=round(result_drive['result'][ 'routes'][0]['distance']/1000,2)
datalist.append(distance_drive)
else:
datalist.append(" ")
data['百度导航距离:km']=datalist
df=data.loc[:,['起始地纬度','起始地经度','目的地纬度', '目的地经度','百度导航距离:km']]
df
输出结果如下:


本文介绍了百度API的基础使用,并介绍了Python调用百度API的基础代码,后续我会研究其他API的使用分享给大家。
原文作者:Python学习杂记;如有侵权,请联系管理员删除。