The nautical mile (symbol M, NM or nmi) is a unit of length that is about one minute of arc of latitude measured along any meridian (at sea level), or about one minute of arc of longitude at the equator. By international agreement it has been set at 1,852 metres exactly (about 6,076 feet).
这可能不是一个直接的解决方案,但更多的是一个参考。我以前试过使用haversine公式,但用它来计算最近的n个邻居的集合时,使用数千个点的时间变得长得令人无法忍受。
所以我创建了一个散列类(或者映射?)它可以放在二叉树中,以便快速搜索。它不工作的距离,但角度(纬度,长)。
find函数的工作原理是找到树中最近的点,然后沿着树向上走,直到找到n个节点。
地理代码.py:
来自here的经典计算:
距离
它使用“haversine”公式计算两点之间的大圆距离,即地球表面上的最短距离,给出两点之间的“如乌鸦飞翔”距离(当然,忽略任何山丘!)。
哈弗辛 公式:
其中φ为纬度,λ为经度,R为地球半径(平均半径=6371km) 注意,角度必须是弧度才能传递给trig函数!
当然,你可以根据海里和公里的定义做一个非常粗略的近似:
相关问题 更多 >
编程相关推荐