代码之家  ›  专栏  ›  技术社区  ›  Mandroid

多段线简化

  •  1
  • Mandroid  · 技术社区  · 6 年前

    我在努力理解 this 密码

    我的理解是,代码试图根据公差优化几何体。基本上,它检查两点之间的距离是否小于公差,并相应地保留/删除点。

    不过我有个疑问。点采用lat long格式。代码只计算欧几里德距离的平方(我们都知道的简单平方公式)。这是不是一种错误的方法,因为lat长基距离不同于欧几里德距离?

    第二,什么是公差单位?在这个 test ,使用公差值5。这个值如何适应这里?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Thomas    6 年前

    我的理解是,代码试图根据公差优化几何体。基本上,它检查两点之间的距离是否小于公差,并根据需要保留/删除点。

    是的,这是第一步,在第二步中,它尝试查找(基本上)成一行的连续行并合并它们。

    不过我有个疑问。点采用lat long格式。代码只计算欧氏距离的平方(我们都知道的简单平方公式)。这不是一种错误的方法吗?因为lat长基距离与欧几里德距离不同?

    (c) 2017, Vladimir Agafonkin
    Simplify.js, a high-performance JS polyline simplification library
    

    该规范不适用于lat lng坐标。虽然它们看起来像二维坐标,但它们表示三维空间中的点;我看不出代码是为这个设计的。

    另一方面,重写到3d空间应该不会太复杂。然后你要做的就是把你的纬度点转换成3d坐标

    第二,什么是公差单位?在试验中,使用公差值5。这个值如何适应这里?

    像素、英里都无关紧要。与通过的点相同的单位。