按纬度和经度查找最近的地方

时间:2011-01-07 15:07:37

标签: geolocation latitude-longitude

我有这个网站存储一些地方的纬度和经度,我想显示特定地方最近的地方(比方说,半径10公里)。

如何在MySQL桌面上搜索这些地方?

1 个答案:

答案 0 :(得分:4)

几年前我在 Google Answers和最近的 Uclue回答了这个问题。

我应该注意到,首选的技术惯例是将西方的经度表示为负值,但有时并未观察到这一点。除非你在Prime Meridian(经度环绕的地方)对面的子午线上进行计算,否则它不会有太大的区别,但是要了解你的数据库以及与其他地理资源库的一致性。

已添加:如上面链接的Uclue问题所述,目的是计算两对值,MINLATITUDE / MAXLATITUDE和MINLONGITUDE / MAXLONGITUDE,以便给定给定距离内的所有点位置包含在SQL查询的结果中:

SELECT * FROM Locations  
    WHERE (latitude  between MINLATITUDE  and MAXLATITUDE )  
    and   (longitude between MINLONGITUDE and MAXLONGITUDE)  

从MySQL 5.0开始,我们可以在一个方便的存储过程中将MIN / MAX对的计算与SELECT捆绑在一起。我们甚至可以用光标运行这种查询的结果,如果需要这样的精度,检查确切的“大圆”距离。但是我猜想,从Python或C ++等调用框架动态构造上述查询的简化方法对大多数应用程序都有意义(为了最大限度地减少数据库服务器所做的工作)。

如果我应该详细说明这些可能性,请告诉我。