您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    两种曲线点抽稀算法-Python完成 附代码(2)
    时间:2017-08-21 21:56 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

                for index, point in enumerate(point_list): 

                    if index in [0, len(point_list) - 1]: 

                        continue 

                    distance = point2LineDistance(point, point_list[0], point_list[-1]) 

                    if distance > max_distance: 

                        max_distance_index = index 

                        max_distance = distance 

     

                # 若最大距离小于阈值,则去掉一切中间点。 反之,则将曲线按最大距离点联系 

                if max_distance < self.threshold: 

                    self.qualify_list.append(point_list[-1]) 

                    self.qualify_list.append(point_list[0]) 

                else

                    # 将曲线按最大距离的点联系成两段 

                    sequence_a = point_list[:max_distance_index] 

                    sequence_b = point_list[max_distance_index:] 

     

                    for sequence in [sequence_a, sequence_b]: 

                        if len(sequence) < 3 and sequence == sequence_b: 

                            self.qualify_list.extend(sequence[::-1]) 

                        else

                            self.disqualify_list.append(sequence

     

        def main(self, point_list): 

            self.diluting(point_list) 

            while len(self.disqualify_list) > 0: 

                self.diluting(self.disqualify_list.pop()) 

            print self.qualify_list 

            print len(self.qualify_list) 

     

     

    if __name__ == '__main__'

        d = DouglasPeuker() 

        d.main([[104.066228, 30.644527], [104.066279, 30.643528], [104.066296, 30.642528], [104.066314, 30.641529], 

    (责任编辑:admin)