Python调用高德地图API计算两地距离的实现步骤
本文介绍如何利用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计算两个地址之间距离的完整方法,希望能为读者提供有效的参考,欢迎继续支持本站获取更多技术内容。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













