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

查看: 7366|回复: 11
收起左侧

[技术交流] ARCGIS属性表中增加需要的字段,并自动赋值

[复制链接]
发表于 2013-2-24 22:28 | 显示全部楼层 |阅读模式
在ARCGIS属性表中,一般不会包含实体几何信息,可以采取VBA进行计算。下面是几个简单的代码
特点:
1推荐给不会使用AO的朋友
2可以保存为CAL文件以备下次方便使用
使用方法
1打开属性表,选择计算的字段,右点选择Calculate Values;
2.选择“是”,进入Field Calculator;
2选择Advance选项;
3 在Pre-Logic VBA Script Code编辑框中输入VBA代码;
4在下面编辑框中输入赋值部分.

1--点坐标X
VBA部分:
Dim pGeo As IGeometry
Set pGeo = [Shape]
Dim pPoint As IPoint
Set pPoint = pGeo
赋值部分:
pPoint.X
2--点坐标Y
VBA部分:
同上
赋值部分:
pPoint.Y
坐标值为文件存储的固有值,和是否使用On the Fly坐标表示无关。返回当前显示的坐标值参看8,9
3--多边形周长
VBA部分:
Dim pGeo As IGeometry
Set pGeo = [Shape]
Dim pPolygon As IPolygon
Set pPolygon = pGeo
赋值部分:
pPolygon.Length
4--多边形面积
VBA部分:
Dim pGeo As IGeometry
Set pGeo = [Shape]
Dim pPolygon As IPolygon
Set pPolygon = pGeo
Dim pArea As IArea
Set pArea = pPolygon
赋值部分:
pArea.Area
5--多边形重心X
VBA部分:
Dim pGeo As IGeometry
Set pGeo = [Shape]
Dim pPolygon As IPolygon
Set pPolygon = pGeo
Dim pArea As IArea
Set pArea = pPolygon
Dim pPoint As IPoint
Set pPoint = pArea.Centroid
赋值部分:
pPoint.X
6--多边形重心Y
VBA部分:
同上
赋值部分:
pPoint.Y
7--Polyline长度
VBA部分:
Dim pGeo As IGeometry
Set pGeo = [Shape]
Dim pPolyline As IPolyline
Set pPolyline = pGeo
Dim pCurve As IPolycurve
Set pCurve = pPolyline
赋值部分:
pCurve.Length
8--表示点坐标X
VBA部分:
Dim pDoc As IMxDocument
Set pDoc = ThisDocument
Dim pSpRef As ISpatialReference
Set pSpRef = pDoc.FocusMap.SpatialReference
Dim pClone As IClone
Set pClone = [Shape]
Dim pGeo As IGeometry
Set pGeo = pClone.Clone
Dim pPoint as IPoint
Set pPoint = pGeo
pGeo.Project pSpRef
赋值部分:
pPoint.X
9--表示点坐标Y
VBA部分:
同上
赋值部分:
pPoint.Y
坐标值为On the Fly显示的坐标,不是文件存储的固有坐标
10--连续编号
VBA部分:
Static lCount as long
lCount=lCount+1
赋值部分:
lCount (从1开始)
lCount-1 (从0开始)

5

主题

97

铜板

0

好友

技术员

Rank: 3Rank: 3

积分
87
发表于 2013-2-24 22:40 | 显示全部楼层
想问问如何给多个SHP文件添加属性字段并赋值啊

评分

参与人数 1铜板 +1 收起 理由
admin + 1 亲,你好快哦~~~

查看全部评分

回复 支持 反对

使用道具 举报

7711

主题

31万

铜板

892

好友

超级版主

地信网论坛贵宾

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

积分
128763

宣传勋章优秀斑主灌水勋章活跃勋章贡献勋章童话节勋章

QQ
发表于 2013-2-25 07:58 | 显示全部楼层
能不能给看个介绍呀
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

2

主题

2208

铜板

1

好友

助理工程师

Rank: 5Rank: 5

积分
301
发表于 2013-2-25 12:40 | 显示全部楼层
平时经常遇到这种情况,确实有用。
回复 支持 反对

使用道具 举报

11

主题

175

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
125
发表于 2013-5-3 10:57 | 显示全部楼层
请问第10句,连续编号,具体怎么操作,我是10.0版,能做个教程就好了
回复 支持 反对

使用道具 举报

0

主题

57

铜板

0

好友

实习生

Rank: 1

积分
2
发表于 2013-5-4 20:02 | 显示全部楼层
好东西要顶起
回复 支持 反对

使用道具 举报

48

主题

9468

铜板

66

好友

资深会员

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

积分
3121
发表于 2013-7-21 23:41 | 显示全部楼层
意思是初始赋值 默认值吗
回复 支持 反对

使用道具 举报

17

主题

3万

铜板

51

好友

黄金会员

wigi

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

积分
4875
发表于 2013-8-30 23:13 | 显示全部楼层
希望有用,但不知操作。。。
开开心心
回复 支持 反对

使用道具 举报

48

主题

9468

铜板

66

好友

资深会员

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

积分
3121
发表于 2013-8-31 08:58 | 显示全部楼层
不懂vba感觉好多都不懂啊
回复 支持 反对

使用道具 举报

0

主题

948

铜板

2

好友

助理工程师

Rank: 5Rank: 5

积分
145
发表于 2014-2-5 10:34 | 显示全部楼层
这个实用!!!
回复

使用道具 举报

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

本版积分规则

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