我使用http://maps.googleapis.com/maps/api/geocode/json来获取经纬度并保存到数据库中。我正在尝试编写在两个位置之间进行计算的代码。有没有什么好的api可以计算两个距离之间的距离。我在亚洲和欧洲有一些地方。谷歌距离只返回我想要的实际距离。先感谢您。
问问题
1320 次
1 回答
2
您可以使用 Haversine 公式计算距离
在这里,origin
并且destination
是 lat,long 元组
import math
def haversine(origin, destination):
lat1, lon1 = origin
lat2, lon2 = destination
radius = 6371
dlat = math.radians(lat2-lat1)
dlon = math.radians(lon2-lon1)
a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) \
* math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
d = radius * c
return d
c1 = [43.47066971,-80.54305153]
c2 = [43.46745,-80.54319]
print haversine(c1, c2) # 0.358189763734
于 2013-06-03T23:45:14.793 回答