Python 如何减少点集?
我在一条路线上有一个有序的点列表(lat,long)。我有一个有序的站点列表(lat,long)。假设我有1000分和20站。我想将1000点减少到100点左右,这取决于哪些点与路线更相关。例如,像引起转弯的点 我认为我能做到这一点的一种方法是聚集在站点周围,随机选择点。但在我看来,它仍然不起作用。我已经在用道格拉斯·佩克算法了。除了这些,还有什么想法吗?您可以利用该算法简化多段线 给定一条初始复杂多段线,该算法将获得一条新的多段线,该多段线近似于原始多段线,并具有指定的误差容差Python 如何减少点集?,python,algorithm,data-structures,douglas-peucker,Python,Algorithm,Data Structures,Douglas Peucker,我在一条路线上有一个有序的点列表(lat,long)。我有一个有序的站点列表(lat,long)。假设我有1000分和20站。我想将1000点减少到100点左右,这取决于哪些点与路线更相关。例如,像引起转弯的点 我认为我能做到这一点的一种方法是聚集在站点周围,随机选择点。但在我看来,它仍然不起作用。我已经在用道格拉斯·佩克算法了。除了这些,还有什么想法吗?您可以利用该算法简化多段线 给定一条初始复杂多段线,该算法将获得一条新的多段线,该多段线近似于原始多段线,并具有指定的误差容差e。定义新多段线
e
。定义新多段线的点是原始多段线的子集
该算法是增量的,从多段线的端点开始,在每次迭代时添加距离当前近似值最远的点。当所有剩余点位于当前近似值的垂直距离e
内时,该算法收敛
该算法基于“分而治之”类型的方法,因此预期复杂度为O(n*log(n))
(尽管最坏的情况是O(n^2)
)
由于其“最差优先”行为,生成的多段线包括定义锐角的“重要”点,同时排除公差
e
范围内沿平截面的伪冗余点 这是我目前的解决方案之一,你有其他选择吗?@gizgok:RDP的RDP
方法有什么问题?也许你可以在你的问题中列出它们。@gizgok:你不能只选择一个更大的公差?如果您在问题中包含一个示例多段线图像,则可以看到发生了什么,并可能提出更多建议…skimage中有一个实现: