我知道什么可能对您有用。它将基于一些假设,但这将有助于缩小可能的相同功能的列表。这不是一个自动化的过程,但需要手动查看重复项。根据注释,自动化工具似乎无法比较属性,因此这将帮助您避免意外删除功能。
使用ArcMap
(1)制作shapefile的副本,以防出现问题。
(2)将一列添加为您的shapefile。
(3)使用最描述(最精确)的格式计算每个特征的面积。四舍五入可能不是问题。
(4)在该列上运行摘要(汇总)。确保在摘要中选择一个唯一的标识符,并标记第一和最后。
(5)在输出表中,查找计数字段大于1的那些记录。
(6a)手动检查功能并重复该过程,直到不再有重复为止。
(6b)您可以仅创建这些唯一ID的列表,然后通过arcpy删除要素,但是您可能会在同一区域拥有两个不相同的要素。
使用ArcPy的另一种技术
当我构造以上答案时,我想到了这样一种可能性,即该数据的多个作者实际上可能对重复的特征使用了相同的唯一标识符。 如果是这种情况,则可以通过在arcpy中循环来找到重复项。
我考虑使用ArcPy进行此操作的方式可能会加重您的系统负担,并且会花费一些时间。
(1)复制您的shapefile(以防万一)
(2)添加新列以表示重复项。诸如“ y”或“ n”或0或1之类的东西会起作用。
(3)在python中创建一个列表以存储唯一标识符。
(4)运行更新光标(arcpy.UpdateCursor('LAYERNAME')
)。对于每条记录,请检查您的列表以查看其是否包含该标识符,并在该列中将其标记为重复项。
myList = []
rows = arcpy.UpdateCursor("layername")
for row in rows:
if str(row.UniqueIdentifier) in myList:
#value duplicated
row.DuplicateColumnName = "y"
else:
#not there, add it
myList.append(row.UniqueIdentifier)
rows.updateRow(row)
(5)然后,您可以对标记的列进行比较或执行任何所需的操作。
进行这些比较可能有更好的方法,但是我认为这应该是可行的,或者至少可以帮助您入门。
编辑
根据elrobis的注释,您可以利用最小边界矩形进一步减少删除不正确特征的机会。
使用ArcMap,可以运行“ 数据管理”中的“ 最小边界几何”工具。在检查了选项之后,我认为使用CONVEX_HULL选项可能是最好的。
如果将MBG_APodX / Y1,MBG_APod_X / Y2字段与MBG_Orientation进行重复比较,则应该能够很好地了解重复功能。我建议使用上面介绍的“ 汇总”方法进行比较。从边界矩形中选择一个顶点(坐标)以查找重复项。您可能会得到一些偶然的“匹配”,但是一旦添加了其他顶点加方向,就可以肯定地确信结果要素是重复的。
尽管我还没有使用过它,也不太确定该工具的结果,但是如果使用ArcMap中的“ 摘要统计”工具,您可能会发现检查生成的shapefile更容易。看起来您可以用这种方式汇总多个列,而不是我的单个列选项。
我认为不会有一种完全自动化的方法来执行此操作,而不必担心会删除不重复的功能。这些方法应有助于限制您需要手动查看的功能数量。