网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月12日漏签0天
python吧 关注:476,293贴子:1,971,872
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1回复贴,共1页
<<返回python吧
>0< 加载中...

代码求助,Python批量调用高德API计算距离失败

  • 只看楼主
  • 收藏

  • 回复
  • Vikingqian
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
写了一段代码,用Python读取源文件信息,调用高德API计算起点和终点的距离,批量做的时候失败了,有懂的人忙吧看一下吗?源文件很简单,就是四列数据(起点经度,起点纬度,终点经度,终点纬度)
import json
import csv
import os
from pypac import PACSession
session=PACSession()
#根据经纬度计算距离
def get_distance(origin, destination):
parameters={'key':'8d9f5e55a2080b2d6fc9b61d67cb817d',
'origin': 'origin',
'destination':'destination',
'type': 1 }
base_url='https://restapi.amap.com/v3/direction/driving?'
response=session.get(url=base_url, params=parameters)
JD=response.json()
return JD['route']['paths'][0]['distance']
if __name__ == "__main__":
print('======================================================')
print('从高德API解析最优距离中')
print('======================================================')
with open('address.csv','r', encoding='utf-8') as f:
reader = csv.reader(f)
# for row in reader:
# # 行号从1开始
# print(reader.line_num, row)
start_longi_list=[]
start_lati_list=[]
end_longi_list=[]
end_lati_list=[]
distance_from_origin_list=[]
next(f)
for row in reader:
start_longi= row[0]
start_lati=row[1]
origin=str(start_longi)+','+str(start_lati)
end_longi=row[2]
end_lati=row[3]
destination=str(end_longi)+','+str(end_lati)
distance_from_origin=get_distance(origin, destination)['route']['paths'][0]['distance']
print('起点坐标:',origin,'终点坐标:',destination,'距离:',distance_from_origin)
start_longi_list.append(start_longi)
start_lati_list.append(start_lati)
end_longi_list.append(end_longi)
end_lati_list.append(end_lati)
distance_from_origin_list.append(distance_from_oringin)
# 插入表头
start_longi_list.insert(0,'起点经度')
start_lati_list.insert(0,'起点纬度')
end_longi_list.insert(0,'终点经度')
end_lati_list.insert(0,'终点纬度')
distance_from_origins_list.insert(0,'距离')
result_combine=zip(start_longi_list,start_lati_list,end_longi_list,end_lati_list,distance_from_origins_list)
result_list=list(result_combine)
print('======================================================')
print('输出结果:\n',result_list)
print('======================================================')
with open('dis.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(result_list)
print('结果已经保存到dis.csv,按任意键退出')
print('======================================================')
os.system('pause')


  • Vikingqian
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
附上数据源,就是四列(起点经度,起点纬度,终点经度,终点纬度)
起点经度 起点纬度 终点经度 终点纬度
113.541066 23.108341 121.015157 31.361678
113.874411 22.497703 119.053252 33.652971
113.541066 23.108341 113.202047 22.996062
113.874411 22.497703 119.025967 33.605299
113.541066 23.108341 120.230375 30.429316
113.874411 22.497703 120.165992 30.13293
113.541066 23.108341 113.665826 34.795246
113.874411 22.497703 120.79088 30.313715
113.541066 23.108341 108.838703 34.333715
113.874411 22.497703 120.135806 30.286256
113.541066 23.108341 121.530008 31.082571
113.874411 22.497703 120.916747 31.502377
113.541066 23.108341 120.329744 31.531936
当前得到的报错如下: (奇怪的是,单个调取经纬度算距离是没有问题的)
---------------------------------------------------------------------------KeyError Traceback (most recent call last)<ipython-input-3-ec75f25d0928> in <module> 22 end_lati=row[3] 23 destination=str(end_longi)+','+str(end_lati)---> 24 distance_from_origin=get_distance(origin, destination)['route']['paths'][0]['distance'] 25 26 print('起点坐标:',origin,'终点坐标:',destination,'距离:',distance_from_origin)<ipython-input-2-bcd0b603aebf> in get_distance(origin, destination) 10 response=session.get(url=base_url, params=parameters) 11 JD=response.json()---> 12 return JD['route']['paths'][0]['distance']KeyError: 'route'


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回python吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示