- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ArcMap中的VBA之fieldCalculate.
ArcMap中的VBA 之 field Calculate
Author:Tsonghua
- - - - - - 学习笔记 - - - - - -
更多讨论参见 /ESRI/thread-54301-1-1.html 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 Geodatabase中feature而言,可以通过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()上找到的代码,功能就是可以讲重复值做上记号,属于重复值的记录,[test]字段值计算结果为 1 ,否则为 0 。就是说,如果有三条记录[A]字段值分别为aa,aa,aa,那么有一条被标上 0 ,剩余2条被标上 1 。
对重复记录做了记号,如何处理,就可以随心所欲啦。这算是一个为了满足某种需求,而重新新建字段,并计算其值的例子
2.计算 [B].max + [B].min + [B]
这个问题,就是根据属性表里其他字段来重新提取所需要的信息进行组合。
这个例子,是在论坛上看到有人问的问题。同样,去ESRI的支持中心去搜了一下,找到了如下代码:
----------------------------------------
ESRI Support
Author Christian Degrassig
@ Tsonghua 090924
----------------------------------------
Dim pMxDoc As IMxDocument
Dim pFLayer As IFeatureLayer
Dim pData As
文档评论(0)