ArcMap中的VBA之field Calculate

ArcMap中,无论是在属性框中右击字段打开的field Calculate还是在Arctoolbox\Data Management Tools\Field\ 工具箱中的Calculate field ,都支持vba表达式。

字段计算器,用以计算字段值。这些字段值,可以是属性表里相关字段的综合,比如百分比,分解字段等;可以是和图形有关的值,比如点的xy坐标,面的中心点坐标,线的长度等等;也可以是为了满足某种特定需求而创造出来的值。

比如如下问题:
1.要找出图层某字段[A]里的重复值,并标上记号;
2.图层某字段[B],现在要将字段[B]中的 { 最大值 + 最小值 + 该行值 } 写入一个新字段[C]中;
3.字段[D]需要进行编号,号码格式为"000001","000002","000003","000004"...,"000202"..

4 .将点层的xy坐标按 x , y 的格式输出到 [E] 字段

1.重复记录标上记号
要找出图层某字段的重复记录,对于存储在Personal Geodatabasefeature而言,可以通过select by attribute找出重复值的记录:
              Sql: select * from layer where:
[A] in (select [A] from 层名 group by [A] having count([A]) >1)
这样执行下来的结果,就是该图层中,[A]字段值重复数大于等于2的所有记录,而对于不支持子查询的比如shapefile格式文件,可以怎么办呢?在属性表中新建一个字段,取名"test',类型设置为 long integer,然后右击该字段,选择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
Pre_Logic VBA Script Code下方的 A= 窗口中填iDup
这是一段在ESRI Support(www.support.esri.com)上找到的代码,功能就是可以讲重复值做上记号,属于重复值的记录,[test]字段值计算结果为 1 ,否则为 0 。就是说,如果有三条记录[A]字段值分别为"aa","aa","aa",那么有一条被标上 0 ,剩余2
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值