订购一组线,使它们跟随另一条线

时间:2011-02-11 07:22:50

标签: python

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'点(线中的最后一点)可能是第一点。例如一行可以从左到右,另一行从右到左(或从上到下,反之亦然)。

提前谢谢你......

1 个答案:

答案 0 :(得分:1)

创建一个字典,其键为(lat, long)元组,用于任一端点,其值为具有此类端点的所有行的数组。在字典中搜索其元素只有一行的元组。这是一个终点。使用字典遍历路径。

如果线段没有连接,或者没有结束,或者某个地方有多个交叉点,这种方法会遇到问题。您可以自行决定对这些案例进行多少验证,以及如何处理这些潜在问题。