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

2024-04-25 05:33:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个坐标元组数组(我的线),我正在尝试将线1上的所有点投影到线2上。我想得到直线2上最近点到直线1中每个点的位置,以及沿着直线的总距离(或两个最近点之间的部分距离)。我有一个使用Shapely的线串的工作解决方案,如下所示:

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]

这个解决方案比我想要的要慢,有没有其他方法来计算投影点列表,或者有没有一种方法来加速上面的实现


Tags: 方法import距离line数组解决方案直线投影
1条回答
网友
1楼 · 发布于 2024-04-25 05:33:28

找到最近的点是“微不足道的”:确定穿过line_1每个点的垂直于line_2。所有这些垂线都有相同的坡度;您可以执行代数来确定line_2上点的坐标,作为line_1上每个点的坐标的函数(因为另一个坐标是从中导出的)

把它变成一个函数。将line_1点放入任何方便的Python序列中,然后apply将函数添加到该序列中numpy将非常有效地为您执行此操作

相关问题 更多 >