将所有点从一条线投影到另一条线

时间:2020-02-24 22:45:42

标签: python shapely

我有2个坐标元组数组(我的线),我试图将第1行的所有点投影到第2行。我想获得第2行到第1行的每个点的最近点的位置,以及沿线的总距离(或两个最近的点之间的部分距离)。我有一个使用Shapely的LineStrings的有效解决方案,如下所示:

import shapely.geometry as geom

# Import of tuples occurs here

line_1 = geom.LineString(line_1_tuples)
line_2 = geom.LineString(line_2_tuples)

line_3 = [line_2.interpolate(line_2.project(geom.Point(x))) for x in line_1.coords]

此解决方案比我想要的要慢,是否有其他替代方法可以计算投影点列表,或者可以通过哪种方法来加快实现?

1 个答案:

答案 0 :(得分:0)

找到最接近的点是“琐碎的”:确定与line_2垂直的,穿过line_1每个点的位置。所有这些垂直线都具有相同的斜率。您可以做代数来确定line_2上该点的坐标,作为line_1上每个点的任一坐标的函数(因为另一个坐标是从中得出的)。

将其放入函数中。将您的line_1点放入任何方便的Python序列中,并将函数apply放入该序列中。 numpy将为您高效地做到这一点。

相关问题