嘿,有没有一种方法可以按距离顺序得到最近10个目的地的列表,我的MySQL数据库有用户和地点的经度和纬度。我不想指定用户和地点之间的距离,也就是没有最大或最小距离,只是我需要的最接近的10个地方。用户和地点都共享同一个表。距离他们的距离顺序最近的10个目的地
回答
可以使用半正矢公式:
SELECT t.*, (6371 * ACOS(COS(RADIANS(lat_user)) * COS(RADIANS(lat)) *
COS(RADIANS(lng) - RADIANS(lng_user)) + SIN(RADIANS(lat_user)) *
SIN(RADIANS(lat)))) AS distance -- distance in kilometers
FROM yourTable
ORDER BY distance ASC
LIMIT 10
在上述查询我假定lat_user
和lng_user
是用户的纬度和经度。并且lat
和lng
是给定地点(记录)的经度和纬度。
阅读this SO question了解更多信息。
除了这将通过每一个单进入数据库表....这将使它非常,非常慢... Haversine是一个昂贵的,缓慢的公式计算 –
我没有通过拉特和长的地方,我必须从数据库中获取位置 –
@MarkBaker是的,对于拥有频繁用户或许多用户的大型数据库来说,这不会很好地扩展。但是对于数百或数千条记录来说,它应该是可行的。长期来看,某种地理分区是更好的方式。 –
- 1. 最近距离(分离集)
- 2. 距离最近邻居的平均距离的近似值?
- 3. 距离google地方最近的地方
- 4. 距离点和线最近的曼哈顿距离
- 5. Toast名称和距离地图中心最近的城市的距离
- 6. 圆分离距离 - 最近邻问题
- 7. 按特定距离查找距离目标位置最近的位置
- 8. 找到距离地点最小总距离的点的算法
- 9. 到最近的回文的距离
- 10. 距离Cell塔的距离
- 11. 按最近距离排序列表
- 12. 有限行之间的最近距离
- 13. 寻找最近的驾车距离
- 14. 查找最接近的汉明距离
- 15. 获得距离点最近的坐标
- 16. 寻找距离最近的号码?
- 17. AS3距离今天最近的日期
- 18. 寻找距离最近的向量点
- 19. 查找距离MongoDB最近的偶数
- 20. 火花SQL距离最近的假期
- 21. 的最小距离
- 22. 转换(起源,目的地,距离)到距离矩阵
- 23. SQL地理按距离排序的快速最近邻居
- 24. 如何找到距离最近的非重叠元素的距离?
- 25. MariaDB距离公式最近的200个地方没有半径
- 26. 从距离阈值距离更近的云中移除点
- 27. 最小距离
- 28. 距离(最短)
- 29. 如何使用geodjango返回距离点最近距离的记录?
- 30. 游客和最近的商店之间的测地距离
yes - 这是可能的 – RamRaider
有,但它很慢....你可以通过指定一个边界框,并使用不断增加的边界框执行一系列查询来提高效率,直到你有10个条目 –
我写了10例如,实际上我至少需要100,所以它不是一个好主意我猜:( –