道格拉斯-普克算法是一种通过递归实现折线&多边形抽稀简化的算法,原理很简单,大多数文章都有讲解,这里不多赘述,直接上代码。
# -*- coding:utf-8 -*-
import arcpy
import sys
from arcpy import env
import numpy as np
import math
reload(sys)
sys.setdefaultencoding('utf-8')
env.overwriteOutput = True
# 读取一个shapefile, 用户自定义
# input a shapefile customized by user
shp = r'C:\Users\Lenovo\Desktop\11111\polyline.shp'
# 从.shp文件中获取多段线顶点坐标列表
# access the nodes' coordinate of each single feature
def getPolyXY(shape):
with arcpy.da.SearchCursor(shape, ["SHAPE@"]) as cursor:
Plines = []
for row in cursor:
coordXY = row[0].getPart()
record = []
for v in range(row[0].pointCount - 1):
pnt = coordXY.getObject(0).getObject(v)
record.append([pnt.X, pnt.Y])
Plines.append(record)
return Plines
class Douglas(object):
def