【问题标题】:mysql 5.7 geospatial for geolocation distance querymysql 5.7 geospatial 用于地理定位距离查询
【发布时间】: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


    【解决方案1】:

    我设法让它工作

    我假设一个“点”对象是纬度,经度,但据我所知,它不是经度,纬度。所以理论上问题是我在表格中以错误的方式存储了我的初始“点”坐标值,即使我认为标准方式是纬度/经度

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多