mysql 5.7地理空间用于地理定位距离查询

时间:2016-05-12 19:51:29

标签: mysql geospatial

我试图了解mysql中的地理空间索引,并且我无法获得简单的查询工作,我认为这归结于我缺乏理解。我基本上试图在我传入的纬度/经度半径10英里范围内获得一些位置。

表结构非常简单

点数: 名称(varchar) 位置(点)

目前只有一排 名称 - " 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;

但它返回一个空结果集。任何人有任何想法或指点? 感谢

1 个答案:

答案 0 :(得分:0)

我设法让这个工作

我假设一个'Point'对象是lat,lon但是它并不是我能告诉它的lon,lat。所以在理论上问题是我在表格中以错误的方式存储了我的初始'Point'坐标值,即使我认为标准方式是lat / lon