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

Algorithm 算法:从地图上的点创建线段,algorithm,geospatial,Algorithm,Geospatial,我想知道是否有一种现有的算法或方法可以做到这一点: 我在2D中有很多点(比如x,y),它们代表道路的位置。每条路可以走不同的方向和“分割”。我只需要生成分割之前的线段。用图像更好地解释: 这是我的观点 这是生成的3个片段 我曾想过使用插值样条线,但这不适用于此,可能也不会有多大帮助,因为它们可能会走捷径。 有没有办法做到这一点?如果有,你会怎么做 我可以想出两种方法来解决这个问题,都是一对一对地找到壁橱 第一种方法包括沿任一轴对点列表进行排序,然后从第一个点开始,向前搜索各点,测量各点之间的

我想知道是否有一种现有的算法或方法可以做到这一点: 我在2D中有很多点(比如x,y),它们代表道路的位置。每条路可以走不同的方向和“分割”。我只需要生成分割之前的线段。用图像更好地解释:

这是我的观点

这是生成的3个片段

我曾想过使用插值样条线,但这不适用于此,可能也不会有多大帮助,因为它们可能会走捷径。
有没有办法做到这一点?如果有,你会怎么做

我可以想出两种方法来解决这个问题,都是一对一对地找到壁橱

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


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

听起来像是一个分类问题!你也试过吗