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

问题描述 投票:0回答:1

我有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]

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

python shapely
1个回答
0
投票

查找最近的点是“平凡的”:确定穿过line_2的每个点的与line_1的垂直线。所有这些垂直线都具有相同的斜率。您可以进行代数运算来确定line_2上的点的坐标作为line_1上每个点的任一坐标的函数(因为另一个坐标是从中得出的)。

将其放入函数中。将line_1点放入任何方便的Python序列中,然后将apply函数放入该序列中。 numpy将非常有效地为您执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.