arcpy删除shp中的重叠点要素
在一些特殊的情况,我们需要对点要素文件进行“去重”处理。
这里提供arcpy代码,写一个简单的算法,删除shp点文件中,位置重叠的点。
import arcpy
def whether_close(pt1, pt2):
if pow((pt1[0]-pt2[0]),2)+pow((pt1[1]-pt2[1]),2)<10:
return True
return False
inFC = 'temp\New_Shapefile.shp'
theFields = arcpy.ListFields(inFC)
FieldsArray = []
pt_list = []
for Field in theFields:
FieldsArray.append(Field.aliasName)
upcur = arcpy.da.UpdateCursor(inFC, FieldsArray)
upcur2 = arcpy.da.UpdateCursor(inFC, FieldsArray)
for row in upcur:
upcur2 = arcpy.da.UpdateCursor(inFC, FieldsArray)
for row2 in upcur2:
if row[0] >= row2[0]:
continue
if whether_close(row[1], row2[1]):
upcur.deleteRow()
print True
break
del upcur2, row2
这个小功能的算法流程如下:
- 读取点文件中所有记录
- 二重遍历,判断点位是否重合
- 删去重合点
其中,arcpy的删除功能我找了很久才找到。删除记录,是用updateCursor功能的deleteRow功能。
这篇问答中也解决了这个问题。
写一段精简的代码,展示下这个功能怎么用哈。
inFC = 'temp\New_Shapefile.shp'
theFields = arcpy.ListFields(inFC)
upcur = arcpy.da.UpdateCursor(inFC, FieldsArray)
for row in upcur:
upcur.deleteRow()
转载自:https://blog.csdn.net/qyh666/article/details/78166496