在MySQL数据库中聚类纬度经度数据

时间:2014-08-20 15:32:04

标签: mysql database cluster-analysis latitude-longitude

我有一个包含纬度和经度值的数据库。我想要做的是聚集这些数据,以便每次搜索数据库时获得较少的结果。任何想法如何实现这个?

这是一个类似的问题: Clustering Lat/Longs in a Database

1 个答案:

答案 0 :(得分:2)

找到与给定经度/纬度最接近的记录并不太疯狂。假设您有一个包含locationlongitude列的表latitude,您可以执行以下操作(将您的点中的值替换为和。

   SELECT id, latitude, longitude,  
               ROUND(6353 * 2 * ASIN(SQRT(POWER(SIN((<point_latitude> - 
                      abs(latitude)) * pi()/180 / 2),2) + COS( <point_latitude>  * pi()/180 ) 
                      * COS( abs(latitude) *  pi()/180) 
                      * POWER(SIN(( <point_longitude> - longitude) 
                      *  pi()/180 / 2), 2) )), 2) AS distance
     FROM location
     ORDER BY distance ASC 
     LIMIT 30;

你可以用空间函数做类似的事。