mysql 5.7 geospatial for geolocation距离查询

mysql 5.7 geospatial for geolocation distance query

我正试图了解 mysql 中的地理空间索引,但我无法让简单的查询正常工作,我认为这是因为我缺乏理解。我基本上是想在我经过的 lat/lon 的 10 英里半径范围内获取一些位置。

table结构非常简单

积分: 名称(可变字符) 位置(点)

目前只有一排 姓名 - "point1" location:POINT(31.5 42.2)

现在我正在尝试以下 sql 我从这里 https://www.percona.com/blog/2013/10/21/using-the-new-mysql-spatial-functions-5-6-for-geo-enabled-applications/

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;

但它 returns 是一个空结果集。有人有任何想法或指示吗? 谢谢

我设法让它工作

我假设 'Point' 对象是经纬度,但据我所知它不是经纬度。所以理论上问题是我在 table 中以错误的方式存储了我的初始 'Point' 坐标值,尽管我认为标准方式是 lat/lon