我有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]
此解决方案比我想要的要慢,是否有其他替代方法来计算投影点列表,或者有一种加快上述实现的方法?
查找最近的点是“平凡的”:确定穿过line_2
的每个点的与line_1
的垂直线。所有这些垂直线都具有相同的斜率。您可以进行代数运算来确定line_2
上的点的坐标作为line_1
上每个点的任一坐标的函数(因为另一个坐标是从中得出的)。
将其放入函数中。将line_1
点放入任何方便的Python序列中,然后将apply
函数放入该序列中。 numpy
将非常有效地为您执行此操作。