使用ArcGIS for Desktop查找shapefile之间的差异?


12

每个月我都要对整个县的一些街道数据进行质量检查/质量控制(超过47,000条记录)。第一步是比较两个文件。目前,我使用的是大约5年前通过VBA在内部创建的工具。它可以比较两个文件,并根据一些因素(添加记录,删除记录,地址更改,城市更改,段长度/顶点更改)报告差异。然后,将它们导出到单独的shapefile。此外,该工具可以使用,ArcGIS 9.3但将不再使用ArcGIS 10.1

该工具效果很好,但大约需要一个小时才能完成。

我已经开始着手希望改进此工具以提高性能。我研究了各种方法,包括Compare Feature ToolSelect by Location

这两个工具的工作速度都显着提高,但是,它们似乎无法捕获我所需的一切。我的最大问题Compare Feature Tool是我无法选择要比较的字段。当我需要按Segment_ID进行比较时,它默认为ObjectID。没有选择的选项。

是否有人对如何实现我所描述的全面比较有一个好的解决方案或想法?


出于某种原因,ArcGIS无法识别我根据RyanDalton的回答正在尝试的联接。

采取联接的建议,我已经找到了如何通过以下方法在两个文件中查找添加的记录和删除的记录的区别:

  1. 通过Segment_ID字段将上个月的shapefile连接到本月的shapefile
  2. 执行定义查询,其中Segment_ID为NULL
  3. 将其导出到新的shapefile(添加的功能)

然后,我反向联接并找到“已删除的特征”

仍在寻找找到列出的其他差异,然后将它们全部组合到模型中的方法。


通过从与另一个数据集相同的一个数据集中执行按位置记录的选择,可以找到所有已更改的记录。然后,我切换选择,它给了我所有不相同的记录。

我将其全部放入模型中,并希望它也能正常工作。

Answers:


11

使用Compare Feature Tool,您只需要在对话框中选择Segment_ID字段作为排序字段即可

[sort]字段用于对输入基本表和输入测试表中的记录进行排序。记录按升序排序。在“输入基础要素”和“输入测试要素”中按公共字段排序可确保您比较每个输入数据集中的同一行。

如果你想要得到SEGMENT_ID场作为输出表的一部分,试着加入输出Compare Feature表到源Test Tablecf.Object_ID=tt.Object_ID,然后导出了连接表与SEGMENT_ID。

您可以轻松地将其放入模型中,以提高可重复性。


我已经做到了,但是,通过比较工具创建的表不包括Segment_ID字段(这是唯一标识符)。相反,它只是列出了objectID,对我没有任何帮助。
克雷格

更新了我的答案以反映Segment_ID进入输出表的情况。
RyanKDalton

添加联接会导致ArcMap每次崩溃。回到绘图板。
克雷格2013年

1

根据我的经验,即使将segment_id选择为“排序字段”,“功能比较”也始终使用FID或ObjectID作为比较的基础。Shapefile FID会被回收(重新排序),因此,在进行几次编辑后,许多(如果不是全部)FID对于其对应的地理位置是不同的。因此,它们将具有“ true”功能比较错误。如果您使用来自GeoDatabase或GISquirrel的ObjectID,则不会回收ID,您可以依靠此工具。您必须在一段时间内保持数据库状态不变,以便从未对ObjectId进行重新排序。

不管GP工具帮助中的“排序字段”描述是多么令人误解。如果比较的基础可以是segment_ID,则此工具将是巨大的。

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.