算法:从地图上的点创建分段

时间:2017-09-26 06:46:05

标签: algorithm geospatial

我想知道是否存在现有的算法或方法: 我在2D中有很多点(比方说x,y)代表道路位置。每条道路都可以采取不同的方向并“分裂”。我只需要生成直到拆分的段。用图片更好地解释:

Points 2D

这些是我的观点

Segments

这些是生成的3个片段

我认为使用插值样条线,但这对此不起作用,而Ant Colony在这里可能不会有太大帮助,因为它们可能会采用快捷方式。 有没有办法做到这一点,如果是的话,你会怎么做?

1 个答案:

答案 0 :(得分:1)

我可以通过两种方式来解决这个问题,包括逐个找到壁橱对。

第一种方法涉及沿任一轴对点列表进行排序,然后从第一点开始,向前搜索点,测量之间的距离。以Pn为第n点,我们可以说最接近P1的点最多是从P1到P2的距离。那么我们最多搜索已排序的数组,如果我们遇到更接近的另一个点,比如说P4,我们会将搜索距离进一步缩小。找到最近的点后,在两者之间绘制一段,然后移到P2点。您可以优化一些存储有关P1和P2的相对位置的信息,然后自动跳过您比较P1的一些元素,因为您已经知道它们不是P2的最佳解决方案。

我能想到的另一种方法是使用四叉树。将整个网格划分为4个正方形,如果这些正方形中的任何一个包含多于1个元素,则将它们分成4个正方形,并重复直到每个正方形包含0或1个元素。然后查看包含这些单个方块(仅包含1个元素)的方块,并比较最近的邻居。现在,这意味着您必须手动检查与被搜索者相邻的方块,因为它可能位于边界上(想想一个刚好在网格的1/2上方,而一个刚好在1/2以下) )并且在你扩展'之前你不会找到另一个点。回到最初的网格原始广场。我认为这个解决方案编程起来会有点困难,但在密集地图中肯定会更快。