我想在 python 中构建一个算法来翻转线串集合中的线串(坐标数组),这些线串表示沿道路的线段,以便我可以将所有坐标合并到一个坐标单调上升的数组中。
所以我的 Segmentcollection 看起来像这样:
segmentCollection = [['1,1', '1,3', '2,3'],
['4,3', '2,3'],
['4,3', '7,10', '5,5']]
编辑:所以结构是二维笛卡尔坐标元组列表的列表(例如,'1,1' 是 x=1 和 y=1 处的点,'7,10' 是 x=7 和 y= 处的点10,以此类推)。整个问题是将所有这些列表合并到一个坐标元组列表中,这些坐标元组在沿着一个方向沿着道路的意义上是有序的……事实上,这些是我从道路网络路由服务中获得的段,但我只得到细分市场,每个细分市场都按照它在数据库中的数字化方式进行定向,而不是按照您必须驾驶的方向。我想从中获得一条用于导航路线的折线。
所以:-我可以假设所有段的顺序都正确-我不能假设每个段的坐标顺序正确-因此我也不能假设第一个段的第一个坐标是开始-我也不能假设最后一段的最后一个坐标是结束 - (编辑)即使我知道,我的导航请求的起点和终点位于哪里,这些不必与其中一个坐标元组相同这些列表,因为它们只需要在路由图元素附近的某个地方。
该算法应遍历每个段,如有必要,将其翻转,然后将其附加到结果数组中。对于第一段,挑战是找到起点(不连接到下一段的点)。然后,所有其他线段都通过一个点连接到顺序中的最后一个线段(有向图)。
我想知道是否没有某种排序数据结构(排序树或任何东西)可以做到这一点。你能给出一些想法吗?在用循环和数组比较搞砸了一段时间后,我的大脑被击倒了,我只需要真正意义上的朝着正确的方向前进。