ArcGIS中字段计算器(高级计算VBScript、Python) 您所在的位置:网站首页 gis的中文含义是什么呢 ArcGIS中字段计算器(高级计算VBScript、Python)

ArcGIS中字段计算器(高级计算VBScript、Python)

2024-07-02 20:29| 来源: 网络整理| 查看: 265

在ArcGIS中可以使用Python或VBScript来对属性表进行高级计算。 Python是ArcGIS推荐的脚本语言,例如如果要访问地理处理功能(包括要素几何)。 而VBA或VBScript从早期版本的ArcGIS 保存的 .cal文件可能会起作用,或者需要进行最少的修改。

注意几个小细节部分: Python强制将缩进作为语法的一部分。使用两个或四个空格来定义每个逻辑级别。对齐语句块的开头和结尾,并保持一致。

Python计算表达式字段包含在感叹号(!!)中。

在命名变量时,需要注意Python区分大小写,因此yeah与Yeah不同。

VBScript不允许显式声明任何数据类型。所有变量都是隐式Variant。像Dim x as String这样的语句应删除或简化为Dim x。

输入语句后,如果要将语句写入文件,则可以单击“ 保存”。在加载按钮将提示您查找和选择一个现有计算文件。

以下将举例几个简单的计算示例: Python简单的字符串示例: 一系列Python字符串函数支持字符串,包括大写,rstrip和replace。 在字段PERSON_NAME中大写字符串的第一个字符: !PERSON_NAME!.capitalize();

在字段PERSON_NAME的字符串末尾删除所有空格: !PERSON_NAME!.rstrip();

将在“ CITY_NAME ”字段中找到的“上海市”替换为“上海” : !CITY_NAME !.replace(“上海市”, “上海”);

可以通过在Python中建立索引和切片来访问字符串字段中的字符。索引提取在索引位置的字符;切片将获取一组字符。 !fieldname![0]。含义:第一个字符。输出:“a” !fieldname![-2]。含义:倒数第二个字符。输出:“ e” !fieldname![1:4]。含义:第二,第三,第四和第五个字符。输出:“ bcd”

Python还支持使用%运算符进行字符串格式化。 合并用冒号分隔的FieldA和FieldB: “%s:%s” % (!FieldA!, !FieldB!)

Python提供了用于处理给定半径字段,计算球体的体积: 4 / 3 * math.pi * !Radius! ** 3

使用Python表达式执行字段计算时,Python数学规则有效。例如,将两个整数值相除将始终产生整数输出(3/2 = 1)。要获得十进制输出: 该操作中的数字之一必须为十进制值:3.0 / 2 = 1.5 使用float函数将值显式转换为float: float(3)/2 = 1.5 float(!Population!) / !Area!

VBScript字符串函数 一系列VBScript字符串函数支持字符串,包括Left,InStr和Chr。下面是字段计算器中常用字符串函数的一些VBScript示例。

左函数:从字符串的左侧返回包含指定数目的字符的Variant(字符串): MyStr = Left([MyField], 1)

右侧函数:从字符串的右侧返回包含指定数量的字符的Variant(字符串): MyStr = Right([MyField], 1)

中间函数:从字符串返回包含指定数量字符的Variant(字符串): MyString = “Mid Function Demo” 'Create text string FirstWord = Mid(MyString, 1, 3) ’ Returns “Mid” LastWord = Mid(MyString, 14, 4) 'Returns “Demo” MidWords = Mid(MyString, 5) 'Returns “Function Demo”

InStr函数:返回一个变量(长整数),该变量指定一个字符串在另一个字符串中首次出现的位置: MyPosition = InStr([address], " ")

替换函数:返回一个字符串,其中指定的子字符串已被另一个子字符串替换了指定的次数: NewString = Replace([comments], “#”, “!”)

Chr函数:返回一个字符串,其中包含与指定字符代码关联的字符: NewString = Replace([comments], chr(13), “!”)

&运算符:用于强制两个表达式的字符串连接: MyStr = [MyField1] & " " & [MyField2]

Python内置函数 Python具有许多可用的内置函数,包括max,min,round和sum。

从字段列表中计算每个记录的最大值: max([!field1!, !field2!, !field3!])

从字段列表中计算每个记录的总和: sum([!field1!, !field2!, !field3!])

使用代码块 Python代码样本-数学 将字段的值四舍五入到小数点后两位: round(!area!, 2)

使用数学模块可帮助将米转换为英尺。转换被提高到2的幂并乘以面积: MetersToFeet((float(!shape.area!)))

Code Block: import math def MetersToFeet(area): return math.pow(3.2808, 2) * area

使用Python逻辑计算字段,根据字段值进行分类: Reclass(!WELL_YIELD!)

Code Block: def Reclass(WellYield): if (WellYield >= 0 and WellYield 10 and WellYield 20 and WellYield 30): return 4 注意,如果是汉字编码可能会出现问题,添加前缀u即可,如u"中国", 在python2里面,u表示unicode string,类型是unicode, 没有u表示byte string,类型是 str。 在python3里面,所有字符串都是unicode string, u前缀没有特殊含义了

使用VBScript逻辑计算字段 根据表达式的值,有条件地执行一组语句: Code Block: Dim density If [POP90_SQMI] < 100 Then density = “low”

elseif [POP90_SQMI] < 300 Then density = “medium”

else density = “high” end if

Python代码样本-几何 计算特征的面积: !shape.area!

计算wkt文本值: !shape.wkt!

计算特征的最大X坐标: !shape.extent.XMax!

计算特征的长度(以码为单位): !shape.length@yards!

计算特征的面积(以英亩为单位): !shape.area@acres!

计算当前日期: time.strftime("%d/%m/%Y")

计算当前日期和时间: time.strftime("%d/%m/%Y %H:%M")

返回最右边的三个字符: !SUB_REGION![-3:]

用小写“ p”替换大写“ P”的所有情况: !STATE_NAME!.replace(“P”,“p”)

用空格分隔符连接两个字段: !SUB_REGION! + " " + !STATE_ABBR!

Python随机值 使用numpy网站包可计算0.0到1.0之间的随机浮点值: getRandomValue()

Code Block: import numpy.random as R

def getRandomValue(): return R.random()

计算空值: 使用Python表达式,可以使用Python None来计算空值(仅当字段可为空时,以下计算才有效),使用Python None来计算空值: “None”

详情请见ArcGIS帮助文档



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有