远程查询中的Mysql

时间:2011-07-04 17:46:49

标签: php mysql sql geospatial spatial

选项

$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列的数据库表:

  • 唯一ID
  • 城市名称
  • 纬度(纬度)
  • 经度(lng)

我在顶部使用查询返回指定坐标内指定英里数内的位置。它似乎工作,但我不确定它是多么准确。我很高兴知道查询是好还是你有更好的解决方案。

2 个答案:

答案 0 :(得分:3)

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

你对wrt准确性有什么关注?

答案 1 :(得分:0)

如果你想在mysql中计算距离到点或者找到一个点,你可以使用&#34; MySQL空间函数&#34;,但它在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