【问题标题】:How to reduce set of points?如何减少点集?
【发布时间】:2013-08-08 06:10:57
【问题描述】:

我在路线上有一个有序的点列表(纬度、经度)。我有一个有序的站点列表(纬度,经度)。假设我有 1000 个点和 20 个停止点。我想根据哪些点与路线更相关,将 1000 个点减少到 100 个左右。比如引发转弯的点。

我认为我可以做到这一点的一种方法是围绕停靠点聚集并随机选择点。但这对我来说似乎仍然无效。我已经在使用 Douglas Peucker 算法了。除了这些还有什么想法?

【问题讨论】:

    标签: python algorithm data-structures douglas-peucker


    【解决方案1】:

    您可以使用Ramer–Douglas–Peucker 算法来简化您的折线。

    给定一个初始的复杂折线,该算法获得一条新的折线,以指定的误差容限e 逼近原始折线。定义新折线的点是原始折线的子集。

    算法是增量的,从折线的端点开始,在每次迭代中添加离当前近似值最远的点。当所有剩余点都在当前近似值的垂直距离e 内时,算法收敛。

    该算法基于“分而治之”类型的方法,因此具有O(n*log(n)) 的预期复杂度(尽管最坏的情况是O(n^2))。

    由于它的“最坏优先”行为,生成的折线包括定义尖角的“重要”点,同时排除公差e 内平坦部分的伪冗余点。

    【讨论】:

    • 这是我目前的解决方案之一,您有其他选择吗?
    • @gizgok:RDP 方法有什么问题?也许你可以在你的问题中概述它们。
    • @gizgok:你不能选择更大的容差吗?如果您在问题中包含示例折线图像,则可以查看正在发生的事情并提出更多建议...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多