我试图了解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;
但它返回一个空结果集。任何人有任何想法或指点? 感谢
答案 0 :(得分:0)
我设法让这个工作
我假设一个'Point'对象是lat,lon但是它并不是我能告诉它的lon,lat。所以在理论上问题是我在表格中以错误的方式存储了我的初始'Point'坐标值,即使我认为标准方式是lat / lon