一、需求描述
输入信息:机场名字、经纬度
返回:机场间的路径距离矩阵(非直线距离)。
二、代码
import pandas as pd
import requests
import json
df = pd.read_excel(r'东京城市群机场9_ss.xlsx')
import numpy as np
import requests
num = 8;#东京是9个
distance_channel = np.zeros((num,num))
for i in range(num):
origin = df['lat'][i] , df['lng'][i]
n1=df['name'][i]
for j in range(num):
if j!=i:
destination= df['lat'][j], df['lng'][j]
n2=df['name'][j]
url = (f"http://api.map.baidu.com/direction_abroad/v1/driving?origin="
f"{'%.6f'% origin[0]},{'%.6f'%origin[1]}&destination={'%.6f'%destination[0]},{'%.6f'%destination[1]}&ak=我的AK")#①
print(url)
res = requests.get(url)
jd = res.json()
print(jd)
try:
distance_channel[i][j] = jd['result']['routes'][0]['distance']
except Exception as e:
distance_channel[i][j] = -1
#②
with open('res.csv','w',encoding='utf-8-sig') as f:#③
print(end=',',file=f)#④
for i in range(num):
print(df['name'][i],end=',',file=f)#⑤
print(file=f)
for i in range(num):
print(df['name'][i],end=',',file=f)#⑥
for j in range(num):
print(distance_channel[i][j],end=',',file=f)#⑦
print(file=f)#⑧
解读:
①url这里的占位符学到了,
这个f,就是格式化string啦:
https://www.cnblogs.com/c-x-a/p/9333826.html#%E7%AE%80%E5%8D%95%E4%BE%8B%E5%AD%90
同时要注意数据格式
比如我在这里lat,lon的经纬度就没有注意格式。
②这里注意,是为了防止出现两个机场间没有可行的规划路径,从而返回的数据里没有distance字段,否则出现以下报错:
③怎么写矩阵,学着点
④生成个这
应该是要把矩阵的左上角空格留出来吧
⑤生成这
⑥
⑦
⑧正常了
问题:为什么到这里格式问题就没有了呢???就变成矩阵了呢???
更新:Print的end默认是回车!!不要按照④-⑧那样来,逻辑关系都乱掉了,明白Print的end默认是回车就可以了