当研究如何解决经典的“获取范围内POI”问题时,我发现最常用的算法是Haversine和Vincenty公式(如果需要真正的精度)。由于高精度不是问题,我选择了前者。然而,这让我想到了一个奇怪的问题:为什么我没有找到将笛卡尔坐标缓存到数据库中而不是使用经纬度的Haversine公式的参考文献?
当然,问题在于性能。Haversine公式需要大量的cos/sin函数调用,但是将经纬度点的投影X、Y和Z存储在数据库中并直接应用点积是否更简单呢?除非我错了,这只需要进行一次arccos调用。
当然,问题在于性能。Haversine公式需要大量的cos/sin函数调用,但是将经纬度点的投影X、Y和Z存储在数据库中并直接应用点积是否更简单呢?除非我错了,这只需要进行一次arccos调用。