【发布时间】:2018-03-05 22:27:28
【问题描述】:
我有两条轨迹(即两个点列表),我正在尝试找到这两条轨迹的交点。但是,如果我将这些轨迹表示为线,我可能会错过现实世界的交叉点(只是错过)。
我想做的是将线表示为在点周围具有一定宽度的多边形,然后找到两个多边形彼此相交的位置。
我正在使用 python 空间库,但我想知道以前是否有人这样做过。这是一张不相交的线段的图片,因为它们只是彼此错过。下面是代表两个物体轨迹的示例数据代码。
object_trajectory=np.array([[-3370.00427248, 3701.46800775],
[-3363.69164715, 3702.21408203],
[-3356.31277271, 3703.06477984],
[-3347.25951787, 3704.10740164],
[-3336.739511 , 3705.3958357 ],
[-3326.29355823, 3706.78035903],
[-3313.4987339 , 3708.2076586 ],
[-3299.53433345, 3709.72507366],
[-3283.15486406, 3711.47077376],
[-3269.23487255, 3713.05635557]])
target_trajectory=np.array([[-3384.99966703, 3696.41922372],
[-3382.43687562, 3696.6739521 ],
[-3378.22995178, 3697.08802862],
[-3371.98983789, 3697.71490469],
[-3363.5900481 , 3698.62666805],
[-3354.28520354, 3699.67613798],
[-3342.18581931, 3701.04853915],
[-3328.51519511, 3702.57528111],
[-3312.09691577, 3704.41961271],
[-3297.85543763, 3706.00878621]])
plt.plot(object_trajectory[:,0],object_trajectory[:,1],'b',color='b')
plt.plot(vehicle_trajectory[:,0],vehicle_trajectory[:,1],'b',color='r')
【问题讨论】:
-
“将线表示为多边形”是什么意思?多边形由线组成。你的意思是你想找到点或点之间的线在另一个轨迹的某个阈值内的位置吗?
-
感谢@JeremyMcGibbon 的澄清。基本上我想在每一行周围都有一个信封。信封将被表示为一个多边形。然后我可以确定两个信封相互交叉的位置,然后对这些交叉点进行更多分析。考虑绘图图像。在这种情况下,两条线都不相交,但在实际情况下,它确实是因为它不是一条线并且有宽度。这有帮助吗?
-
点的采样率如何?仅检查点附近的重叠是否足够,或者您是否还需要查看这些点之间的轨迹?你的轨迹是多少个点,作为一个数量级?
-
听起来你想缓冲这些线,然后计算交点。大概可以用shapely:toblerity.org/shapely/manual.html
-
排序 - 你在你的线周围创建一个缓冲区 polygon (如香肠),缓冲区宽度是你的公差。如果您可以编辑您的 Q 以包含一些代码来生成示例数据,我可能会有机会处理它。
标签: python polygon geospatial spatial