【发布时间】:2011-03-13 15:39:42
【问题描述】:
我在 MySQL 数据库中有一个表,其中包含 POINT 类型的空间几何列。我希望能够在地图中心取一个点并找到它 X 英里(或任何距离)内的所有记录。我似乎找不到一个很好的例子或解释如何做到这一点,它不会深入到几何数学中。我很高兴走这条路,但首先想尝试使用真正的空间数据库来解决它。
【问题讨论】:
-
只是想指出,不,我正在尝试使用具有数据点的多边形的技术(不那么精确,但现在只是尝试)来解决这个问题。我的查询看起来像这样。 SELECT * from business WHERE MBRContains(GeomFromText('Polygon((30 -100, 30 -90, 25 -90, 25 -100, 30 -100))'), geolocation) 我在表格中有一条记录,纬度为39 和 -94 的多头。据我了解,这应该出现在结果集中,但没有。所以这是问题的另一个角度。
-
你做错了(或者只是复杂)。在 PHP 中使用github.com/anthonymartin/GeoLocation.php 计算边界框,然后像
WHERE lat BETWEEN minL AND maxL AND lon BETWEEN minO AND maxO一样查询。这是方形区域搜索而不是圆形,但您的网络地图无论如何都是矩形的,不是吗?
标签: mysql geospatial spatial-query