在ArcMap中删除具有相同几何形状的重复要素?


15

是否可以唯一标识要素图层中的每个几何?

本质上,我有一个多边形要素图层,其中许多行由相同的几何图形表示。我希望每个独特的几何图形有1行。因此,我正在寻找一些开箱即用的方法来根据几何形状组合属性。

我来自Postgres世界,可以在那里解决此问题,但我不知道如何(或是否有可能)使用ESRI工具以非编程方式完成此任务。


因此,您是说有多个具有相同几何形状的记录,并且您想要合并那些相同的记录?如果是这样的话...您可以根据面积或类似因素溶解吗?也许我在这里想念您的问题。
Clickinaway

没错,它们是相同的几何,其中唯一共享的自然属性是几何本身。区域可能有效,但不能保证两个不同的几何区域不具有相同的区域。
Dylan Hettinger

看我的帖子。您可以在多个字段上运行溶解。
Paul

@Paul...。我看到您编辑了您的回复以反映我的意见。希望对您有所帮助。
Clickinaway

Answers:


22

如果您拥有高级许可证,则可以使用“ 查找相同”或“ 删除相同”

两者都可以用于查找/删除具有相同属性的要素,或者,如果指定了“形状”字段,则可以使用相同的几何形状。

如果您没有高级许可证,则此帖子将非常有用。

简而言之,您在属性表中为X,Y添加了两个字段,并对所述字段运行Dissolve

如果具有共享相同质心但几何形状不相同的多边形,则可以添加其他两个字段(周长和面积)。对于几乎所有正常情况,这足以识别相同的几何形状。请参阅下面的@whuber评论。


那是假定点数据正确吗?我曾考虑过建议先创建质心。他仍在说有许多行具有相同的几何形状...听起来几乎像是根据面积类别/范围进行分类吗?但这也说明了几何形状的形状...这就是为什么我倾向于根据面积或周长(或将两者结合以获得比率)进行溶解。
Clickinaway 2013年

1
实际上,我链接的那个帖子是关于多边形的。您可以在面积和质心上进行溶解,而不会出现两个具有相同质心的不同多边形。
保罗

+1这是正确的答案。原则上,质心,周长和区域可能仍不能唯一地标识多边形,但是反例有些许人为。对于将不规则或自然或手动数字化的对象散列为唯一的ID,这四个值应该可靠。如果需要一些更容易获得的值,请使用要素边界框的坐标及其顶点数。
ub

@whuber比较所有顶点的坐标是否是确定相同几何图形的唯一保证?我的几何背景很薄弱,所以我发现所有这些都很吸引人。
Paul

问题的答案取决于“完全相同”的含义:例如,如果要沿着多边形的边缘插入新的顶点,是不是“完全相同”的多边形?可以说,即使顶点不同,也可以表示世界上相同的特征。从这个角度来看,唯一确定的检验是两个多边形的(理论上的)差异是否为空。但是,如果从更严格的角度来看,同一性意味着顶点到顶点的匹配,那么它仍然很棘手,因为一个多边形可以在另一点开始其顶点列表。
ub

1

我有一个基于调查数据的数据集。我的问题是,导入新的测量快照之前,旧功能不一定总是被删除。因此,我们有不同几何形状的“重复项”:即,测量镜头之间可能相距1/4英尺。在12000个要素数据集上,很难放大每个要素数据集并进行识别。使用ArcMap Basic 10.2:这是我想到的一个hacky模型。

  1. 原始图层中每个要素的缓冲区(带输入半径)(选中或不选中)
  2. 遍历缓冲层中的每个要素
  3. 根据关系从原始图层中选择(Centroid w / in功能)
  4. “行数”选择功能
  5. 字段计算到缓冲层的行计数值=原始要素的半径内有多少要素

我重新发明了轮子。另外,我对模型构建器感到沮丧,并且基本上对整个过程都dog之以鼻。必须有一个更优雅的解决方案。我会很乐意接受批评和建议。

另外,这似乎只能在Model Builder中正常运行,而我是从工具箱中运行,并且它不保存缓冲层。

查找重复的人物


1

我一直在寻找相同问题的答案,以克服扁平化的重叠缓冲区多边形问题,并认为找到了一个可靠的解决方案。实际上@Whuber的评论,

原则上,质心,周长和区域可能仍不能唯一地标识多边形,但是反例有些许人为。

@Paul的回答是我继续努力的主要动力。它使用空间连接工具的ARE_IDENTICAL_TO运算符,因为这是其他相同检测器中效率最高的。步骤如下:

  • 自合并您的输入以使所有形状彼此不同;
  • 创建一个虚拟字段来保留/复制行的原始OBJECTID(即OID字段类型),例如EX_OID
    • 在希望同时作为目标要素和连接要素参数处理的要素类上运行空间连接。确保先前创建的虚拟字段(出现两次)的字段映射具有FIRST合并规则(这是默认规则或选择LAST,其他规则可能不会提供所需的输出,因为它们使用了重叠摘要)。此步骤选择位于所有重叠(即FIRST)顶部的通用形状OBJECTID;

以下步骤可以通过两种方式来完成,WITH Python或WITHOUT:

与PYTHON

  • 使用以下代码提取我们要查找的唯一ID:

print tuple(set([row.getValue("EX_OID_1") for row in arcpy.SearchCursor("Output_of_the_Spatial_Join_Operation")]))

请注意,我正在使用虚拟OID字段的第二个副本,在我的情况下为EX_OID_1。

  • 复制此代码的输出,并将其粘贴到处理为的原始要素类的“ 定义 查询”OBJECTID IN (<PASTE_COPIED_VALUES_HERE>)。结果将向您显示重叠部分的统一特征。但是这里有大小限制,不能超过30,000个字符。要解决此问题,您需要执行“不使用python”步骤。

没有PYTHON

  • 使用频率工具在虚拟OID字段的第二个副本中列出唯一值,在我的情况下为EX_OID_1;

  • 最后,通过选择“仅保留匹配的记录”选项,将原始要素类的OBJECTID字段与频率工具的EX_OID_1的输出连接起来。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.