【算法笔记】道格拉斯-普克算法(经纬度或坐标点抽稀)

 道格拉斯-普克算法 (Douglas–Peucker algorithm,亦称为拉默-道格拉斯-普克算法、迭代适应点算法、分裂与合并算法)是将曲线近似表示为一系列点,并减少点的数量的一种算法。它的优点是具有平移和旋转不变性,给定曲线与阈值后,抽样结果一定。—摘自百度百科

【算法笔记】道格拉斯-普克算法(经纬度或坐标点抽稀)

 

如果有8个点,如上图(1),抽稀步骤如下:

  1. 在曲线首尾两点间虚连一条直线,求出其余各点到该直线的距离,如右图(1)。
  2. 选到点到直线距离的最大者与阈值相比较,若大于阈值,则记录该点,否则将直线两端点间各点全部舍去,如右图(2),记录第4个点,然后根据地4个点,将点分成两段1-4,4-8
  3. 然后分别对1-4,4-8重复第1、2步操作,迭代操作,即仍选距离最大者与阈值比较,依次取舍,直到无点可舍去,最后得到满足给定精度限差的曲线点坐标,如图(3)、(4)依次保留第6点、第7点,舍去其他点,即完成线的化简。

结合步骤,这里有两点数学知识,一是两点确定一条直线方程,二是求点到直线的距离。

点到直线的距离公式如下

【算法笔记】道格拉斯-普克算法(经纬度或坐标点抽稀)