【发布时间】:2015-07-08 10:46:30
【问题描述】:
我有 2 个类似于下面示例的表,towns 和 things,并且需要获取附近的城镇列表,这些城镇的附近事物在距离该城镇记录的 x 范围内。经纬度将用于计算距离。
我查看了其他一些问题,并设法从 things 获取单个指定城镇的记录,但想不出如何获取附近有 things 的所有城镇的列表。 x与他们的距离。
能够按x 距离内的附近事物数量对生成的城镇进行排序将是一个奖励。
TOWNS
+--------+----------+---------+---------+
| townId | townName | townLat | townLng |
+--------+----------+---------+---------+
| 1 | town a | 1.5 | 1.9 |
| 2 | town b | 1.4 | 3.8 |
| 3 | town c | 2.3 | 2.7 |
| 4 | town d | 3.2 | 1.6 |
| ... | ... | ... | ... |
+--------+----------+---------+---------+
THINGS
+---------+-----------+----------+----------+
| thingId | thingName | thingLat | thingLng |
+---------+-----------+----------+----------+
| 1 | thing a | 2.1 | 3.1 |
| 2 | thing b | 1.1 | 2.3 |
| 3 | thing c | 3.2 | 0.2 |
| 4 | thing d | 1.3 | 1.1 |
| ... | ... | ... | ... |
+---------+-----------+----------+----------+
提前致谢
【问题讨论】:
-
这里最大的问题是使用Haversine公式来确定两组纬度/经度对之间的距离。你有没有做过这方面的工作?
-
使用该模式,任何解决方案对于超过几千行都会变得非常缓慢。您基本上必须计算从每个城镇到每个事物的距离。
-
还没有 - 我不知道从哪里开始。我似乎无法理解如何将公式应用于单个查询中两个表的坐标。
-
@Vatev - 对替代品有什么建议吗?
-
关于mysql中距离计算的话题已经很少了stackoverflow.com/questions/1006654/…stackoverflow.com/questions/24370975/…