繁体   English   中英

Mysql内距离查询

[英]Mysql within distance query

选项

$lat = '25.7742658';
$lng = '-80.1936589';
$miles = 30;

询问

SELECT *, 
   ( 3959 * acos( cos( radians($lat) ) 
   * cos( radians( lat ) ) 
   * cos( radians( lng ) - radians($lng) ) 
   + sin( radians($lat) ) 
   * sin( radians( lat ) ) ) ) AS distance 
FROM locations 
HAVING distance < $miles 
ORDER BY distance 
LIMIT 0, 20

我有一个包含 4 列的数据库表:

  • 唯一身份
  • 城市名
  • 纬度 (lat)
  • 经度 (lng)

我正在使用顶部的查询来返回距指定坐标指定英里数内的位置。 它似乎有效,但我不确定它有多准确。 我很想知道查询是否良好,或者您是否有更好的解决方案。

这看起来像正确的大圆距离查询。

您对 wrt 准确性有什么担心?

如果你想在 mysql 中计算点到点的距离或找到一个点的距离,你可以使用“MySQL 空间函数”,但它在 MySQL 5.6 中启用。 有关更多信息,您可以阅读这篇文章:

https://www.percona.com/blog/2013/10/21/using-the-new-mysql-spatial-functions-5-6-for-geo-enabled-applications/

或者这个 PDF:

http://www.arubin.org/files/geo_search.pdf

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM