用代码实现根据表格给出的经纬度算出两个地点的驾车时间以及距离,注意一个表格一行只有一个地址的经纬度,需要算出每两个地址之间的距离以及驾车时间(使用高德地图),给的表格(excel表)数据只有两列,一列叫地址,一列叫经纬度,经纬度在同一列并用“,”隔开,最后将得到的数据绘制成excel表
时间: 2023-12-18 14:04:00 浏览: 119
利用经纬度计算两点之间的距离
5星 · 资源好评率100%
以下是Python实现代码,使用了pandas库读取Excel表格中的数据,并使用高德地图API计算两个地址之间的距离和驾车时间,最终将结果写入Excel表格中并绘制成表格:
```python
import pandas as pd
import requests
import json
import openpyxl
# 读取Excel表格中的数据
df = pd.read_excel('data.xlsx')
# 定义高德地图API的请求URL和参数
url = 'https://restapi.amap.com/v3/distance'
key = 'your_key' # 替换为你的高德地图API Key
# 定义函数,用于计算两个地址之间的距离和驾车时间
def get_distance(origin, destination):
params = {
'key': key,
'origins': origin,
'destination': destination,
'type': 1
}
response = requests.get(url, params=params)
result = json.loads(response.text)
distance = result['results'][0]['distance']
duration = result['results'][0]['duration']
return distance, duration
# 遍历Excel表格中的每一行数据,计算每两个地址之间的距离和驾车时间,并将结果写入Excel表格中
for i in range(len(df)):
origin = df.iloc[i]['经纬度']
destination = df.iloc[i+1]['经纬度'] if i < len(df)-1 else df.iloc[0]['经纬度']
distance, duration = get_distance(origin, destination)
df.at[i, '距离'] = distance
df.at[i, '驾车时间'] = duration
# 将结果写入Excel表格中,并绘制成表格
writer = pd.ExcelWriter('result.xlsx', engine='openpyxl')
df.to_excel(writer, index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
table = openpyxl.worksheet.table.Table(displayName='Table1', ref=worksheet.dimensions)
style = openpyxl.worksheet.table.TableStyleInfo(name='TableStyleMedium2', showFirstColumn=False,
showLastColumn=False, showRowStripes=True, showColumnStripes=False)
table.tableStyleInfo = style
worksheet.add_table(table)
workbook.save('result.xlsx')
```
其中,需要替换代码中的 `key` 为你的高德地图API Key,代码执行后会生成一个名为 `result.xlsx` 的Excel文件,其中包含每两个地址之间的距离和驾车时间,并将结果绘制成表格。
阅读全文