【问题标题】:Get results from mysql based on latitude longitude根据经纬度从mysql获取结果
【发布时间】:2011-04-01 12:30:53
【问题描述】:

我有一个 mysql 数据库和 2 个表,比如说客户和学校。现在每个表都有纬度和经度列。而且我需要从第二张表中进行选择,例如,学校位于第一张表的一条记录的给定半径内。应根据纬度和经度进行计算。 PS:我用的是PHP。

【问题讨论】:

  • 除了 Piskvor 的回答之外,本教程还不错:Geo Distance Search with MySQL,虽然我发现页面加载得不是很好。作为替代方案,可以在here 找到 PowerPoint 演示文稿。

标签: php mysql select latitude-longitude


【解决方案1】:

您可以使用Spherical law of cosines 计算距离:

SELECT DEGREES(ACOS(SIN(RADIANS(clients.latitude)) * SIN(RADIANS(schools.latitude)) + 
                    COS(RADIANS(clients.latitude)) * COS(RADIANS(schools.latitude)) 
                                                   * COS(RADIANS(clients.longitude 
                                                               – schools.longitude)))) 
       * 60 * 1.1515 * 1.609344 AS distance
FROM clients, schools HAVING distance < $radius

RADIANS(X) - 度数转弧度
ACOS(X) - X 的反余弦值,即余弦为X 的值
DEGREES(X) - 弧度转度数

60 - 度数
1.1515 - nautical mile 中的英里
1.609344 - 一英里的公里

【讨论】:

  • 所以如果我的半径以公里为单位,查询会像你写的那样,还是我应该改变它?谢谢
  • Mysql报错:Unknown column 'clients.longitude–schools.longitude' in 'field list'...,这里的'-'符号是什么意思?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多