python - 将一条线上的所有点投影到另一条线上
问题描述
我有 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
会很有效地为你做到这一点。
推荐阅读
- r - 在 ggplot2 中使用 `coord_trans(y = "log10")` 时出错
- python - .ipynb 文件在 Jupyter 中可见,但在 Windows 文件资源管理器中不可见
- s3cmd - 为什么 s3cmd 无法创建小写存储桶?
- java - 封装和类
- asp.net-mvc - 通知未在 ASP.NET MVC 上发送
- php - PDO fetchAll(); 绑定参数时选择语句
- java - 当您将类型作为字符串时,是否可以创建一个对象?
- liquibase - 如何在配置 liquibase.properties 以与 SAP IQ 实例一起使用时解决“SQL Anywhere 错误 -265:找不到过程 'current_schema'”?
- reactjs - 为作用域包添加类型定义
- button - 通过 Angular 10 中的按钮单击导航