我最近参与了一个关于基于位置的服务的小型项目,我的目的是在请求乘客(支持 GPS 的 Android 手机)的给定半径内找到最近的出租车(安装了 GPS)。我想使用 MongoDB 的地理空间索引,但事实证明,地理空间索引适用于经纬度,它们计算两点之间的位移,而不是距离。在我的情况下,搜索仅限于一个城市,我不得不去谷歌地图方向服务,因为它会告诉你在路上的距离、估计的时间等。
这是否意味着地理空间索引仅在位移足够大时才有意义,因此距离和位移基本上相同?
我最近参与了一个关于基于位置的服务的小型项目,我的目的是在请求乘客(支持 GPS 的 Android 手机)的给定半径内找到最近的出租车(安装了 GPS)。我想使用 MongoDB 的地理空间索引,但事实证明,地理空间索引适用于经纬度,它们计算两点之间的位移,而不是距离。在我的情况下,搜索仅限于一个城市,我不得不去谷歌地图方向服务,因为它会告诉你在路上的距离、估计的时间等。
这是否意味着地理空间索引仅在位移足够大时才有意义,因此距离和位移基本上相同?
地理空间索引的目标是基于多维空间上的位置进行快速数据检索。如果您在 MongoDB 数据库中有出租车位置数据,您可以使用地理空间索引快速选择一组更可能是最近的出租车,但您仍然必须计算道路上的距离(和最终是行驶时间)在道路网络上使用算法。
例如,您知道如果最近的(直线)出租车距离您 20 公里(通过道路测量),您知道半径 20 公里以外的任何出租车肯定会比您的第一个出租车更远(在路上)找到了,所以你对它们不感兴趣。然后,您可以使用 MongoDB 空间索引获取 20 公里半径内的所有出租车,然后您可以找到其中哪一辆距离最短。