摘要
在某些情况下,有必要将属性表中的字符串(文本)值字段转换为数值字段,这通常是因为未设置或识别原始数据类型,因此可执行正确的数据分析。 为了保持数据的完整性(特别是从外部源共享或导入数据时),将字段转换为不同类型的方法是将数据复制到所需类型的新字段。
以下给出了三种解决方案;第一种解决方案面向 ArcGIS Pro 1.x 和 2.x 版本;第二种面向 ArcGIS Desktop 10.x;而第三种面向较旧的软件(如 ArcView GIS 3.x)。
过程
对于 ArcGIS Pro 1.x 和 2.x:
- 打开 ArcGIS Pro 工程,并将适用的数据或表添加到工程中。
- 在内容窗格中右键单击数据或表,然后选择属性表。
- 单击添加按钮以创建新字段。
- 在字段列表视图中,设置以下属性:
- 设置新字段的名称。
- 将数据类型设置为数值类型。 “长整型”或“双精度”字段类型是最常见的。
- 将数字格式设置为数值并根据需要调整设置。
- 可根据需要设置字段的属性域值、默认值和长度值。
- 在(字段选项卡的)顶部功能区,保存对表的编辑内容,并关闭字段视图。
- 右键单击新创建的数值字段的标题,并选择计算字段。 计算字段地理处理对话框随即打开。
- 输入表、字段名称和表达式类型会自动填写。 在表达式字段列表窗口中,找到并双击包含必须传输到新创建的数值字段的属性的字符串字段。 在表达式文本框中输入以下内容:
!<字符串字段名>!
- 单击运行以运行此工具。
注意: 如果字符串字段包含 Null(空)值,则该工具可能无法运行。 创建新的数值字段时,请确保该字段允许空值,以便能够从字符串字段导入空值。 有关详细信息,请参阅 ArcGIS Pro Web 帮助文档添加字段。
对于 ArcGIS Desktop 10.x
- 打开 ArcMap,然后打开图层或文件地理数据库属性表。
- 在 ArcMap 中,可右键单击字段标题并选择属性,以检查该字段的数据类型。
- 在表窗口的左上方,单击表选项下拉按钮 ,然后选择添加字段。
注意: 添加字段选项仅在用户具有对数据的写入权限,且其他用户或应用程序无法访问该数据时可用。 当地图处于编辑会话中时,该选项也会被禁用。
- 提供新字段的名称。
- 将字段类型设置为数值类型,例如长整型或双精度。
- 可根据需要设置精度和比例。
- 单击确定。
- 右键单击新创建字段的标题,然后选择字段计算器。
- 如果字符串字段仅包含数值,请使用以下步骤将属性复制到数值字段:
- 将解析程序设置为 VB 脚本。
- 在表达式窗口中输入 [字符串字段名],或从字段框中选择字符串字段,然后单击确定。
- 如果字符串字段包含混合的字母数字值和数值,请使用以下步骤复制属性:
- 将解析程序设置为 VB 脚本,并选中显示代码块的复选框。
- 将下面的代码复制粘贴到预逻辑脚本代码文本窗口中,然后将 String field name 替换为要转换的字段的名称。 请保留左右两侧的括号:
Dim String, Check String = [String field name] Check = IsNumeric(String) If Check = True then Output = CDbl(String) else Output = null End if
注: 在第五行中,根据步骤 3(b) 中选择的数值字段类型,将 'CDbl(String)’ 替换为以下函数: - 整数:CInt(String) - 长整型:CLng(String) - 双精度:CDbl(String)
- 在第二个表达式窗口中(在此示例中为 'DoubleV =')输入:
输出
下图显示了字段计算器对话框的外观。 在本例中,字符串字段将转换为双精度字段。
- 单击确定。 脚本完成后,数值字段将填充字符串字段中的值。
注: 如果字符串字段包含带有非数字字符或符号的值,那么当转换为数值字段时,该像元的值将默认保持为 <Null>。
对于 ArcView GIS 3.x
注: 自 2012 年 12 月起,ArcView GIS 已淘汰。 以下说明仅供参考。
要将字符串字段转换为数值字段,请创建一个新的数值字段,并将该值从原始字段复制到新字段。
向表中添加数值字段
- 打开表格,然后从表菜单中选择开始编辑。
- 从编辑菜单中选择添加字段。
- 在字段定义对话框中:
- 将名称设置为适当的名称,例如“区域”。
- 将类型设置为数值。
- 将宽度设置为适当的数值,例如“32”。
- 将小数位设置为所需的数值,例如“6”。
- 单击确定。
- 从表菜单中选择停止编辑,并保存编辑。
使用“字段计算器”将值复制到新字段,并将值转换为数值
- 可根据需要打开表并开始编辑。
- 选择数值字段。
- 选择从字段中计算菜单。
- 双击字段列表中的字符串字段。
- 将类型设置为字符串。
- 滚动至请求列表,然后双击 AsNumber。
- 最终表达式应与以下内容类似:
[Strng_fld].AsNumber
- 单击确定。
- 从表菜单中选择停止编辑,并保存编辑。