操作方法
属性表通常包含具有公共值和唯一值的字段。 因此,有时需要对重复值进行标识以在图层之间创建组,或标识唯一值以隔离要素。
要标识重复值有以下四种不同的方法:
使用“查找相同项”工具
查找相同项工具将创建一个新的独立表。 该工具标识要素的 ObjectID 并创建两列,一列包含所选要素的 ObjectID 值,另一列包含数字用以标记相同或唯一要素的数字。 相同的记录具有相同的 FEAT_SEQ 值,而不同的记录具有顺序值。 FEAT_SEQ 值与输入记录的 ID 没有关系。 有关详细信息,请参阅 ArcGIS Pro:查找相同项(数据管理)。
使用“计算字段”函数
isDuplicate() Python 解析器函数可以通过分配特定值来填充新字段,从而将值标识为重复或者唯一。 例如,唯一值和首次出现的多个值均填充为 0,所有重复值都标记为 1。 以下步骤介绍了为此目的如何应用函数:
isDuplicate(!Field_Name_To_Verify!)
uniqueList = [] def isDuplicate(inValue): if inValue in uniqueList: return 1 else: uniqueList.append(inValue) return 0
使用独立的 Python 脚本
该脚本将创建一个新字段,并使用重复值的数字填充该字段。
import arcpy
arcpy.env.workspace=r"D:\test.gdb" infeature="sample_feature" field_in="sample_field" field_out="COUNT_"+field_in arcpy.AddField_management(infeature,field_out,"SHORT")
lista=[] cursor1=arcpy.SearchCursor(infeature) for row in cursor1: i=row.getValue(field_in) lista.append(i) del cursor1, row
cursor2=arcpy.UpdateCursor(infeature) for row in cursor2: i=row.getValue(field_in) occ=lista.count(i) row.setValue(field_out,occ) cursor2.updateRow(row) del cursor2, row print ("Done.")
以下为完整代码:
import arcpy arcpy.env.workspace=r"D:\test.gdb" infeature="sample_feature" field_in="sample_field" field_out="COUNT_"+field_in arcpy.AddField_management(infeature,field_out,"SHORT") lista=[] cursor1=arcpy.SearchCursor(infeature) for row in cursor1: i=row.getValue(field_in) lista.append(i) del cursor1, row cursor2=arcpy.UpdateCursor(infeature) for row in cursor2: i=row.getValue(field_in) occ=lista.count(i) row.setValue(field_out,occ) cursor2.updateRow(row) del cursor2, row print ("Done.")
使用汇总统计数据工具,并连接表
获取来自 ArcGIS 专家的帮助
下载 Esri 支持应用程序