1.百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com)
进入百度地图开放平台后,登陆用户,点击控制台——应用管理——我的应用——创建应用——应用名任意——应用类型:服务端——请求校验方式:IP白名单——IP白名单:不做任何限制(填写0.0.0.0/0)
2,
# 本次整体的源代码
AK = ''
#百度地图开发平台AK码
import pandas as pd
import requests
import json
from itertools import combinations
def getPosition(address):
url = r"http://api.map.baidu.com/place/v2/search?query={}®ion=全国&output=json&ak={}".format(
address,
AK
)
res = requests.get(url)
json_data = json.loads(res.text)
#获取对应地点的经纬度
if json_data['status'] == 0:
lat = json_data["results"][0]["location"]["lat"] # 纬度
lng = json_data["results"][0]["location"]["lng"] # 经度
else:
print("[ERROR] Can not find {}.".format(address))
return "0,0", json_data["status"]
return str(lat) + "," + str(lng), json_data["status"]
#获取两地之间的距离
def getDistance(start, end):
url = "http://api.map.baidu.com/routematrix/v2/driving?output=json&origins={}&destinations={}&ak={}".format(
start,
end,
AK
)
res = requests.get(url)
content = res.content
jsonv = json.loads(str(content, "utf-8"))
dist = jsonv["result"][0]["distance"]["value"]
return dist
#合并函数调用
def calcDistance(startName, endName):
start, status1 = getPosition(startName)
end, status2 = getPosition(endName)
if status1 == 0 and status2 == 0:
return getDistance(start, end)
else:
return -1
if __name__ == "__main__":
data =pd.read_excel("D:\Practice\city_data.xlsx")
res = []
#计算几座城市之间的非重复排列组合关系
stat_city = data.iloc[:, 0]
end_city = data.iloc[:, 1]
for i in range(0, 52):
startName = stat_city[i]
for j in range(0, 11):
endName = end_city[j]
print(startName, endName)
dist = calcDistance(startName, endName)
res.append([startName, endName, dist / 1000])
pd.DataFrame(res).to_excel(
"result2.xlsx",
header=["起点", "终点", "距离"],
index=None,
encoding="utf-8"
)