我阅读了这个问题并在 Python 中实现了公认的答案(见下文)。它原则上有效,但结果始终比预期高出约 30%(捷克共和国)——这是该算法的预期准确性吗?
为了验证算法,我使用BoundingBox得到一个对角距离已知的边界框(建筑物,两个城市),并使用输出坐标作为“我的”算法的输入。
问题出在哪里?
- 我的实施?
- 算法本身?
- Python?
- 测试?
我的实现:
R= 6371 #km
dLat = math.radians(lat2-lat1)
dLon = math.radians(lon2-lon1)
lat1 = math.radians(lat1)
lat2 = math.radians(lat2)
a= math.sin(dLat/2)*math.sin(dLat/2) + math.sin(dLon/2) * math.sin(dLon/2) * math.cos(lat1) * math.cos(lat2)
c= 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
d = R * c;
return d