我正在寻找使用ArcPy构建脚本/ GP工具,该工具允许用户提交要加载到现有要素类中的表(实质上是追加/插入操作类型。但是,我希望有表'首先检查'重复项:在这种情况下,重复项由多个字段的串联定义,以创建唯一的ID。
在这里进行初步搜索时,这非常接近: Removing duplicates before inserting into database
目标可以是SQL表,但建议的解决方案都是指SQL中的查询。我的解决方案需要基于网络,我对Python最熟悉。有没有办法通过ArcPy / Python公开上面链接中建议的底层数据库查询/约束/索引?
答案 0 :(得分:0)
这个问题有点模糊。您需要确保向要素类添加表格数据是有意义的,但有很多方法可以解决这个问题。我假设您正在使用10.x ArcGIS(即arcpy,而不是gp)。
您可以使用
arcpy.Frequency_analysis(in_table, out_table, frequency_fields;frequency_fields..., {summary_fields;summary_fields...})
然后查看是否有任何频率超过1的记录,可能使用类似:
arcpy.MakeTableView_management(out_table, 'out_tableTV', '"FREQUENCY" > 1')
numEvents=int(arcpy.GetCount_management('out_tableTV'))
if numEvents > 0:
print 'duplicates'
或者,您可以将值提取到python列表对象,从中创建一个集合(消除重复),并比较列表和设置对象。
>>> x=[1,2,1]
>>> type(x)
<type 'list'>
>>> y=set(x)
>>> type(y)
<type 'set'>
>>> y
set([1, 2])
>>> if x!=y:
... print 'duplicates exist'
...
duplicates exist