首页 > 解决方案 > 将一条线上的所有点投影到另一条线上

问题描述

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

这个解决方案比我想要的要慢,是否有任何替代方法来计算投影点列表,或者加快上述实现的方法?

标签: pythonshapely

解决方案


找到最近的点是“微不足道的”:确定line_2通过 的每个点的垂线line_1。所有这些垂线都有相同的斜率;你可以做代数来确定点的坐标,作为每个点的line_2一坐标的函数(因为另一个坐标是从那里得出的)。line_1

把它放到一个函数中。将您的line_1观点放入任何方便的 Python 序列和apply该序列的函数中。 numpy会很有效地为你做到这一点。


推荐阅读