免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 14296|回复: 9
收起左侧

[经验共享] ArcGIS中检查属性表有无重复的方法

[复制链接]

88

主题

3345

铜板

3

好友

高级工程师

Rank: 9Rank: 9Rank: 9

积分
735
发表于 2017-7-27 16:41 | 显示全部楼层 |阅读模式
在ArcGIS中我们常常需要检查属性表中有无重复的问题,比如图斑面积有无重复、线长度有无重复等。现在来说一下方法O(∩_∩)O
1、新建一个字段,字段类型选integer,命名为检查重复(随自己意愿啦)
2、右键field calculate,勾选advanced,将下文代码贴入
' ----------------------------------------
' ESRI Support Home > Knowledge Base > Technical Articles > Article Detail
' 代码参见 HowTo:  Identify duplicate field values
' @ Tsonghua 090924
' ----------------------------------------

Static d As Object
Static i As Long
Dim iDup As Integer
Dim sField
' ----------------------------------------
'这里填写需要检查的字段名
sField = [A]
' ----------------------------------------
If (i = 0) Then
Set d = CreateObject("Scripting.Dictionary")
End If
If (d.Exists(CStr(sField))) Then
iDup = 1
Else
d.Add CStr(sField), 1
iDup = 0
End If
i = i + 1
注意这里:'这里填写需要检查的字段名sField = [A]
3、在= 下面,填  iDup,确定,OK~


12

主题

1208

铜板

7

好友

助理工程师

Rank: 5Rank: 5

积分
349
发表于 2017-7-27 18:06 | 显示全部楼层
本帖最后由 qq47381141 于 2017-7-27 18:08 编辑

骚年,建议使用代码块啊,看着清晰舒爽。-----下面是复制楼主的内容------
  1. Static d As Object
  2. Static i As Long
  3. Dim iDup As Integer
  4. Dim sField
  5. ' ----------------------------------------
  6. '这里填写需要检查的字段名
  7. sField = [A]
  8. ' ----------------------------------------
  9. If (i = 0) Then
  10. Set d = CreateObject("Scripting.Dictionary")
  11. End If
  12. If (d.Exists(CStr(sField))) Then
  13. iDup = 1
  14. Else
  15. d.Add CStr(sField), 1
  16. iDup = 0
  17. End If
  18. i = i + 1
复制代码


回复 支持 反对

使用道具 举报

21

主题

7878

铜板

12

好友

地信名人堂

Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19

积分
748

爱心勋章组织勋章地信元老灌水勋章荣誉会员勋章活跃勋章地信专家组VIP勋章贡献勋章名人堂勋章成就学员勋章

发表于 2017-7-27 19:58 | 显示全部楼层
:zt支持分享,这个查重toolbox里有工具的
回复 支持 反对

使用道具 举报

13

主题

2万

铜板

37

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2717

爱心勋章地信元老灌水勋章荣誉会员勋章活跃勋章贡献勋章成就学员勋章

QQ
发表于 2017-7-28 17:08 | 显示全部楼层
感谢楼主的分享!!!!
回复 支持 反对

使用道具 举报

0

主题

293

铜板

1

好友

实习生

Rank: 1

积分
8
发表于 2017-9-26 10:25 | 显示全部楼层
楼主,我复制你的代码计算的时候显示有错误,麻烦你帮我看下是哪里出错了
Static d As Object
Static i As Long
Dim iDup As Integer
Dim sField
' ----------------------------------------
sField = [BSM]
' ----------------------------------------
If (i = 0) Then
Set d = CreateObject("Scripting.Dictionary")
End If
If (d.Exists(CStr(sField))) Then
iDup = 1
Else
d.Add CStr(sField), 1
iDup = 0
End If
i = i + 1
回复 支持 反对

使用道具 举报

0

主题

935

铜板

1

好友

技术员

Rank: 3Rank: 3

积分
65
发表于 2017-10-31 13:22 | 显示全部楼层
:ai:ai
回复

使用道具 举报

10

主题

1万

铜板

19

好友

资深会员

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

积分
3720
发表于 2021-11-13 21:40 | 显示全部楼层
感谢分享!
回复

使用道具 举报

地信网友  发表于 2022-1-6 17:32
谢谢大佬分享,看来arcgis必须得回点代码了

30

主题

2万

铜板

59

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
6290
QQ
发表于 2022-1-17 11:22 | 显示全部楼层
谢谢分享
回复

使用道具 举报

1

主题

1万

铜板

2

好友

黄金会员

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
4804
发表于 2022-12-9 17:03 | 显示全部楼层
感谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表