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

查看: 11674|回复: 16
收起左侧

[求助] arcgis字段计算器如何写代码?

[复制链接]

22

主题

2837

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
383
发表于 2018-7-25 01:18 | 显示全部楼层 |阅读模式
20铜板
各位大神,属性表中有A,B,C三个字段,用字段计算器计算
C字段等于A字段除以B字段的最小值,怎么写代码啊?

头像被屏蔽

141

主题

980万

铜板

3万

好友

管理员

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
627184
发表于 2018-7-25 10:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

0

主题

243

铜板

1

好友

技术员

Rank: 3Rank: 3

积分
11
发表于 2018-7-25 11:25 | 显示全部楼层
你的B字段有很多个数字?
回复

使用道具 举报

1

主题

1164

铜板

1

好友

技术员

Rank: 3Rank: 3

积分
72
发表于 2018-7-25 12:23 | 显示全部楼层
A字段除以B字段的最小值 ?最小值怎么理解? 给个截图的例子
回复

使用道具 举报

22

主题

2837

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
383
 楼主| 发表于 2018-7-25 12:30 | 显示全部楼层
a5431990 发表于 2018-7-25 12:23
A字段除以B字段的最小值 ?最小值怎么理解? 给个截图的例子

就是B字段里面的最小值。
QQ截图20180725122932.jpg
回复

使用道具 举报

0

主题

2271

铜板

0

好友

助理工程师

Rank: 5Rank: 5

积分
233
发表于 2018-7-26 10:11 | 显示全部楼层
新建个double字段,利用字段计算器  A/B    之后排序选出最小值
回复

使用道具 举报

22

主题

2837

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
383
 楼主| 发表于 2018-7-26 23:26 | 显示全部楼层
雨打风铃 发表于 2018-7-26 10:11
新建个double字段,利用字段计算器  A/B    之后排序选出最小值

排序是可以,就是不用排序,直接用代码选出最小值
回复

使用道具 举报

22

主题

2837

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
383
 楼主| 发表于 2018-7-26 23:33 | 显示全部楼层
雨打风铃 发表于 2018-7-26 10:11
新建个double字段,利用字段计算器  A/B    之后排序选出最小值

用排序是可以,就是不用排序,直接用代码选出最小值
回复

使用道具 举报

6

主题

4341

铜板

4

好友

工程师

Rank: 7Rank: 7Rank: 7

积分
451
QQ
发表于 2018-7-27 08:19 手机频道 | 显示全部楼层
意思是只计算b里的最小值吗?其他值不计算吗?还是说计算使这个等式成立啊?
回复

使用道具 举报

0

主题

1623

铜板

0

好友

助理工程师

Rank: 5Rank: 5

积分
169
QQ
发表于 2018-7-27 08:45 | 显示全部楼层
Sub test()
Dim pMxDoc As IMxDocument
Dim pFLayer As IFeatureLayer
Dim pData As IDataStatistics
Dim pCursor As ICursor
Dim pStatResults As IStatisticsResults

Dim LayerIndex As Long
Dim strFieldName As String


Dim varZMin
'1.注:这里填你需要取最大最小值的字段名
strFieldName = "B"
Set pMxDoc = ThisDocument
'2.这里设置你需要计算字段值的图层所在图层索引号
'TOC 中,从上至下,第一层 LayerIndex=0,第二层 为 1,以此类推..
LayerIndex = 0
Set pFLayer = pMxDoc.FocusMap.Layer(LayerIndex)
Set pCursor = pFLayer.Search(Nothing, False)
Set pData = New DataStatistics
pData.Field = strFieldName
Set pData.Cursor = pCursor
Set pStatResults = pData.Statistics
varZMin = pStatResults.Minimum

Dim pFeature                As IFeature
Dim pFeatureCursor          As IFeatureCursor
Dim pFeatureClass As IFeatureClass
Dim FieldNum As Integer
Dim FieldY As Integer
'更新字段qq
Set pFeatureClass = pFLayer.FeatureClass
'字段索引
FieldNum = pFeatureClass.Fields.FindField("C")
FieldNum2 = pFeatureClass.Fields.FindField("A")

Set pFeatureCursor = pFeatureClass.Update(Nothing, False)
Set pFeature = pFeatureCursor.NextFeature
Do While (Not pFeature Is Nothing)
    pFeature.Value(FieldNum) = pFeature.Value(FieldNum2) / varZMin
    pFeatureCursor.UpdateFeature pFeature
    Set pFeature = pFeatureCursor.NextFeature
Loop
End Sub
为什么要用代码?

回复

使用道具 举报

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

本版积分规则

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