Visvalingam-Whyatt polyline simplification algorithm clarification

后端 未结 3 1824
广开言路
广开言路 2021-02-04 12:32

I\'m trying to implement a polyline simplification algorithm. The original article can be found here: http://archive.is/Tzq2. It seems straightforward in concept but I don\'t un

相关标签:
3条回答
  • 2021-02-04 13:12

    FWIW Mike Bostock, the creator of d3.js, wrote a tight javascript implementation of this algorithm (Visvalingam's Algorithm).

    • Source code
    • Demo
    • Discussion on Hacker News
    0 讨论(0)
  • 2021-02-04 13:18

    The essence of the algorithm is ranking of points by their significance. Significance of the point is approximated by its effective area.

    Suppose you have eliminated Point A and then recalculated the effective area of Point B. The new area can be larger or smaller than the old one. It can be smaller than the effective area of A. However, the algorithm still views B as more significant than A.

    The purpose of the if clause is to ensure that Point B is more significant than A in the final list, that's all.

    0 讨论(0)
  • 2021-02-04 13:30

    I was confused by this too, went back and read the article again, and afaict it's not needed if you're removing points as you go - aka if you're doing a one-off simplification with a fixed area threshold. afaict the javascript implementation works this way, so it actually doesn't need the 'if' statement (but it has it anyway, oh well).

    The 'if' statement is needed if you're keeping all the points around. In that case, you're storing the 'effective area' with each point so that later you can filter them, perhaps using an interactive slider that controls the # of output points. By storing that larger effective area, you preserve the proper ordering.

    0 讨论(0)
提交回复
热议问题