我正在尝试存储 GPS 位置数据库并运行查询以查找给定半径内的点以及最近的点。我正在使用 mysql 并且一直在研究空间扩展。我不确定我是否了解如何实际使用空间扩展来执行我在位置半径查询中寻找的内容。
所以这就是我对我的选择的想法:
将 lat 和 long gps 坐标存储为 db 中的浮点索引变量。当我得到一个点 gps 坐标和一个范围时,计算要查询的最大和最小 lat 和 long 值,然后根据这些中的距离函数进行排序以进行排序。
使用空间扩展。我不太肯定这会奏效。未实现 Distance() 函数。使用空间索引需要找到一个边界框(可行)并调用 MBRContains 边界框函数来找到该边界框中的点。但是,点的边界为零,因此 MBRContains 函数不适用于点。
我不确定执行此操作的标准方法是什么(似乎没有),并且非常感谢任何经验/想法/对决定的帮助。我目前正在使用 mysql 5.13,我很确定即使是 5.5 也没有距离度量。
另外 - 即使 2. 有效,哪一个会更快?请让我知道您的想法是什么,尤其是如果您确定/已经看到某些东西可以用于快速和大型查找!
Mysql 空间索引:http ://dev.mysql.com/doc/refman/5.5/en/using-a-spatial-index.html