计算地理邻近度的公式
我需要在我的应用程序中实现地理邻近搜索,但是对于要使用的正确公式我非常困惑。在Web和StackOverflow中进行一些搜索后,我发现解决方案是: 使用Haversine公式 使用大圆距离公式 在数据库中使用空间搜索引擎 选项#3真的不是我的ATM选项。现在,我有点困惑了,因为我总是说大圆距离公式和Haversine公式是同义词,但显然我错了吗? 上面的屏幕截图来自MySQL出色的Geo(邻近)搜索文件,并使用以下功能: ASIN, SQRT, POWER, SIN, PI, COS 我还看到了同一个公式(余弦的球形定律)的不同形式,例如: (3956 * ACOS(COS(RADIANS(o_lat)) * COS(RADIANS(d_lat)) * COS(RADIANS(d_lon) - RADIANS(o_lon)) + SIN(RADIANS(o_lat)) * SIN(RADIANS(d_lat)))) 它使用以下功能: ACOS, COS, RADIANS, SIN 我不是数学专家,但是这些公式相同吗?我遇到了更多的变化和公式(例如余弦的球形定律和Vincenty的 公式-似乎是最准确的),这让我更加困惑... 我需要选择一个良好的通用公式以在PHP / MySQL中实现。谁能解释我上面提到的公式之间的区别? 哪一个计算最快? 哪一个提供最准确的结果? 就结果的速度/准确性而言,哪一个最好? 感谢您对这些问题的见解。 基于唯一的理论答案,我测试了以下大圆距离公式: 文森特公式 Haversine公式 余弦球定律 该Vincenty公式是死的慢,但是它是相当准确的(下降到0.5mm) 。 该haversine公式是远远比Vincenty公式更快,我能够在大约6秒,这是我的需要非常接受试验1次亿次运算。 该余弦公式的球面法发现是几乎快一倍的haversine公式和精度差是neglectfulness对于大多数使用情况。 以下是一些测试位置: Google总部(37.422045,-122.084347) …