我有一个包含纬度和经度值的数据库。我想要对这些数据进行聚类,以便在每次搜索数据库时获得更少的结果。有什么实现方法吗?
这是一个类似的问题: 在数据库中聚类Lat/Longs
这是一个类似的问题: 在数据库中聚类Lat/Longs
找到最接近给定经纬度的记录不是太难。假设你有一个名为location
的表,其中包含longitude
和latitude
两列,你可以执行以下操作(将代码中的<your_longitude>
和<your_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;