Line# Lat. Lon.
1a 1573313.042320 6180142.720910
..
..
1z 1569171.442602 6184932.867930
3a 1569171.764930 6184934.045650
..
..
3z 1570412.815667 6190358.086690
5a 1570605.667770 6190253.392920
..
..
5z 1570373.562963 6190464.146120
4a 1573503.842910 6189595.286870
..
..
4z 1570690.065390 6190218.190575
上面的每对线(a..z)表示多个点的第一个和最后一个坐标对,它们一起定义一条线。 这些行没有按顺序列出,因为通过查看坐标我不知道正确的序列是什么(除非我查看地图中的行)。
因此我的问题是:如何以编程方式(在Python中)找到正确的序列是什么,因此我可以将这些行连接成一条长行,同时牢记以下问题: - 如果线被描述为在与其他线相反的方向上进行,则'z'点(线中的最后一点)可能是第一点。例如一行可以从左到右,另一行从右到左(或从上到下,反之亦然)。
提前谢谢你......
答案 0 :(得分:1)
创建一个字典,其键为(lat, long)
元组,用于任一端点,其值为具有此类端点的所有行的数组。在字典中搜索其元素只有一行的元组。这是一个终点。使用字典遍历路径。
如果线段没有连接,或者没有结束,或者某个地方有多个交叉点,这种方法会遇到问题。您可以自行决定对这些案例进行多少验证,以及如何处理这些潜在问题。