如何在地图上找到最接近任意点的位置?

时间:2015-03-12 00:39:57

标签: c++

注意:对于这个问题的其余部分,我将这个任意点称为" myPoint"避免混淆。

问题:地图上有几个点(计算每个点和myPoint之间的距离不切实际。)

尝试解决方案:我尝试进行半径搜索但是为了知道这些点在圆圈内的位置,我必须通过所有点并确保它们之间的距离它们小于搜索圈的半径。

问题:如何以有效的方式找到最接近myPoint的点?如果需要澄清,请提出问题。

2 个答案:

答案 0 :(得分:1)

计算点之间的距离是不可避免的。我建议你可以做的是将地图切成较小的块(不一定是常规的),然后只计算位于同一切片中的点之间的距离。

答案 1 :(得分:1)

您可以使用一种技术来分配"搜索空间(即地图)。

您可以考虑定义一个覆盖地图的常规网格,并在网格的每个单元格中存储所有地图位置。

使用此功能可以轻松计算/确定哪个单元格包含 myPoint 。然后,只需要考虑同一单元格内的点。

注意:如果包含 myPoint 的单元格没有任何地图位置或者相邻单元格中某个点的距离小于相邻单元格的距离,则可能必须考虑相邻单元格。到相同单元格内的点的距离(例如, myPoint 靠近单元格边框)。