【发布时间】:2010-07-08 02:43:25
【问题描述】:
我正在尝试存储 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
【问题讨论】:
-
你不需要空间来进行纬度/经度搜索,只需要一些基本的三角。 code.google.com/apis/maps/articles/phpsqlsearch.html 对解决这个问题很有帮助。
-
这是否足够快以处理几百万?
-
你可以用 WHERE MyLon BBoxLonMin AND MyLat BBoxLatMin 过滤掉大部分点 在你只剩下一小部分记录之后,看看得到一个实际的距离。
-
希望对您有所帮助...stackoverflow.com/questions/11586708/…
标签: mysql database geospatial spatial-query