我有一个包含纬度和经度值的数据库。我想要做的是聚集这些数据,以便每次搜索数据库时获得较少的结果。任何想法如何实现这个?
这是一个类似的问题: Clustering Lat/Longs in a Database
答案 0 :(得分:2)
找到与给定经度/纬度最接近的记录并不太疯狂。假设您有一个包含location
和longitude
列的表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;
你可以用空间函数做类似的事。