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

这个小功能的算法流程如下:

  1. 读取点文件中所有记录
  2. 二重遍历,判断点位是否重合
  3. 删去重合点

其中,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

You may also like...