为了账号安全,请及时绑定邮箱和手机立即绑定

参考线与折线的连续点之间的正交距离

参考线与折线的连续点之间的正交距离

喵喔喔 2023-03-01 17:52:48
该图像显示 (1) 一条我称之为参考线的红线,以及 (2) 一条黄色多段线。每个线要素由数千个 x,y 坐标对点组成。我想沿着红色参考线逐步移动,并计算到黄色折线的每个坐标对点的正交距离(相对于红线)。我在 python 3中工作。以下是红色参考线的前 25 个坐标对:以下是黄色折线的前 25 个坐标对:我一直在尝试一些基于here、here和here的方法。我正在测试在最后一个超链接中讨论的答案以尝试构建工作流程:import numpy as npfrom shapely.geometry import LineString, Pointx1 = 457508.40746964136x2 = 457508.5456318401y1 = 8872649.617776532y2 = 8872649.773129418dist = np.sqrt((x2 - x1)**2 + (y2 - y1)**2)centerX = (x2 - x1) / 2 + x1centerY = (y2 - y1) / 2 + y1test_x = centerX - dist/4test_y = centerY + distline = LineString([(x1, y1), (x2, y2)])  print(list(line.coords))p = Point(test_x,test_y)  print(list(p.coords))print(p.distance(line))p.distance(line) 返回:0.17780 ...这是此特定测试的图像:黑点是红色参考线上的两个连续坐标对。红点是测试坐标对,用于计算黑点到淡蓝色线段的正交距离。在我看来,上面给出的 p.distance 结果对于正交距离来说太短了。如果能帮助我在这个问题上取得进展,我将不胜感激。提前致谢。
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

从点(test_x,test_y)到线的正交距离(x1,y1)-(x2,y2)可以用向量代数计算

orthodistance = abs((y2 - y1)*test_x - (x2 - x1)*test_y + x2*y1 - y2*x1) / dist)

这个表达式给出了0.176你的数据,所以结果看起来很接近。

请注意,您的图像比例并不完美 - 图在 X 方向上被拉伸,这就是您可能会怀疑的原因。


查看完整回答
反对 回复 2023-03-01
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号