Python调用高德地图API计算两地距离的实现步骤

Ryan
Ryan
发布时间:2026-10-13 | 3人浏览过
原创

本文介绍如何利用Python调用高德地图API获取指定地址的经纬度,并结合haversine公式计算两点间的直线距离。通过具体代码示例,展示从地址解析到距离计算的完整流程,适用于需要地理信息处理的应用场景。

首先,我们需要利用高德地图提供的API接口来获取地址对应的经纬度信息。

#计算地址经纬度
import requests
def geocode(address):
 parameters = {'address': address, 'key': 'cb649a25c1f81c1451adbeca73623251'}
 base = 'http://restapi.amap.com/v3/geocode/geo'
 response = requests.get(base, parameters)
 answer = response.json()
 print(address + "的经纬度:", answer['geocodes'][0]['location'])
 lon = float(answer['geocodes'][0]['location'].split(',')[0])
 lat = float(answer['geocodes'][0]['location'].split(',')[1])
geocode(address) 

接着,输入两个具体的地址字符串,程序将返回它们各自的经纬度坐标。

设定第一个地址变量为:address1 ='上海市徐汇区桂箐路靠近华鑫天地'

设定第二个地址变量为:address2 ='上海市徐汇区田林路200号华鑫天地C座3楼'

上海市徐汇区桂箐路靠近华鑫天地的经纬度: 121.407124,31.169677
上海市浦东新区张江高科技园的经纬度: 121.593357,31.214343
lon1 = 121.407124
lat1 = 31.169677
lon2 = 121.593357
lat2 =31.214343
#计算距离 
from math import radians, cos, sin, asin, sqrt 
# 将十进制度数转化为弧度 
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) 
# haversine公式 
dlon = lon2 - lon1 
dlat = lat2 - lat1 
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 
c = 2 * asin(sqrt(a)) 
r = 6371 # 地球平均半径,单位为公里 
return c * r * 1000 

经过计算,最终得出两地之间的距离约为18公里。

c * r * 1000 
Out[58]: 18397.59615786144

以上就是利用Python计算两个地址之间距离的完整方法,希望能为读者提供有效的参考,欢迎继续支持本站获取更多技术内容。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表