计算字段 VBScript 示例
如果您具备使用 VBA 或 VBScript 的经验并且擅长脚本语法,可以在计算字段或计算字段(多个)工具的表达式类型参数中使用 VBScript 选项。 此选项还支持 ArcGIS Desktop 中使用计算字段工具和 VBScript 计算的旧版模型或脚本。
注意:
在 Windows 11 版本 24H2 中,VBScript 将成为一项按需特性,并且需要 VBScript 功能。
要继续使用 VBScript 选项,请执行以下操作之一:
将表达式类型转换为 Python、Arcade 或 SQL。
在 Windows 系统设置中启用 VBScript 可选功能。
有关详细信息,请参阅移除和弃用通知。
本主题着重于基于 VBScript 的计算字段示例。 要了解有关 Python 示例的详细信息,请参阅计算字段 Python 示例。 要了解有关 ArcGIS Arcade 表达式的详细信息,请参阅 ArcGIS Arcade 指南。 要了解有关 SQL 表达式的详细信息,请参阅计算字段值。
注:
VBScript 不允许显式声明任何数据类型,所有变量均属于隐式 Variant。 应移除与 Dim x as String 类似的语句或将其简化为 Dim x。
简单计算
仅通过一个短表达式就可以计算出多种计算结果。
VBScript 字符串函数
一系列 VBScript 字符串函数均支持使用字符串,包括 Left、InStr 和 Chr。 以下是“字段计算器”中常用的字符串函数的 VBScript 示例:
使用 Left 函数从字符串的左侧返回指定数量的字符。
Expression:
Left([MyField], 1)
使用 Right 函数从字符串的右侧返回指定数量的字符。
Expression:
Right([MyField], 1)
使用 Mid 函数使用起始位置和可选的字符数从字符串中返回指定数量的字符。
Expression:
Mid([MyField], 14, 4)
使用 InStr 函数返回一个字符串在另一个字符串中第一次出现的位置。
Expression:
InStr([MyField], " ")
使用 Replace 函数返回一个将指定子字符串替换为另一个子字符串的字符串。
Expression:
Replace([MyField], "#", "!")
使用 Chr 函数返回与指定字符代码关联的字符。
以下示例将换行符字符替换为感叹号。
Expression:
Replace([MyField], Chr(13), "!")
使用 & 运算符将两个字段值连接起来。
Expression:
[MyField1] & " " & [MyField2]
简单数学示例
VBScript 提供了以下用于处理数字的工具:
|
运算符 |
说明 |
示例 |
结果 |
|---|---|---|---|
|
x + y |
x 加上 y |
1.5 + 2.5 |
4.0 |
|
x - y |
x 减去 y |
3.3 - 2.2 |
1.1 |
|
x * y |
x 乘以 y |
2.0 * 2.2 |
4.4 |
|
x / y |
x 除以 y |
3 / 2 |
1.5 |
|
x \ y |
x 除以 y(整除) |
3 \ 2 |
1 |
|
x MOD y |
x 模 y |
8 MOD 3 |
2 |
|
x ^ y |
以 x 为底,以 y 为指数的幂 |
2 ^ 3 |
8 |
将一个字段的值乘以 2。
[Rank] * 2
通过 VBScript 逻辑计算字段
可以使用 If、ElseIf 和 Else 语句将逻辑模式包含在代码块中。
按照字段值进行分类。
Expression:
density
Code Block:
Dim density
If [POP90_SQMI] < 100 Then
density = "low"
ElseIf [POP90_SQMI] < 300 Then
density = "medium"
Else
density = "high"
End If