【发布时间】:2016-05-12 19:51:28
【问题描述】:
我正在尝试了解 mysql 中的地理空间索引,但我无法让简单的查询正常工作,我认为这归因于我缺乏理解。我基本上是想在我经过的纬度/经度半径 10 英里范围内找到一些位置。
表结构很简单
要点: 名称(varchar) 位置(点)
目前只有一排 名称 - “point1”位置:POINT(31.5 42.2)
现在我正在尝试从https://www.percona.com/blog/2013/10/21/using-the-new-mysql-spatial-functions-5-6-for-geo-enabled-applications/这里提取的以下 sql
set @lat= 31.5;
set @lon = 42.2;
set @dist = 10;
set @rlon1 = @lon-@dist/abs(cos(radians(@lat))*69);
set @rlon2 = @lon+@dist/abs(cos(radians(@lat))*69);
set @rlat1 = @lat-(@dist/69);
set @rlat2 = @lat+(@dist/69);
select astext(location), name from Points
where st_contains(location, envelope(linestring(point(@rlon1, @rlat1), point(@rlon2, @rlat2))))
order by st_distance(point(@lon, @lat), location) limit 10;
但它返回一个空的结果集。有人有任何想法或指示吗? 谢谢
【问题讨论】:
标签: mysql geospatial