将文本数据转换为数值数据

视频

本教程也以视频方式提供。

计算新数值字段

您有一个包含加拿大马尼托巴省尼帕瓦镇税收评估值的图层。 您想使用它来显示每英亩的评估值。 该图层包含进行此计算所需的数据,但其存储为文本,而不是数字。

首先,您将重新格式化评估值。

  1. 下载 Neepawa 工程包

    名为 Neepawa.ppkx 的文件即会下载到您的计算机。 .ppkx 文件是一个 ArcGIS Pro 工程包,可能包含可以在 ArcGIS Pro 中打开的地图、数据和其他文件。

  2. 在计算机上找到已下载的文件。 双击 Neepawa.ppkx 以在 ArcGIS Pro 中将其打开。 如果出现提示,请使用 ArcGIS 账户登录。
    注:

    如果您没有 ArcGIS Pro 的访问权限或者 ArcGIS 组织帐户,请参阅软件访问权限选项

    随即出现一张地图,显示尼帕瓦的房产宗地。

    尼帕瓦房产地图

    注:

    此地图中的数据是曼尼托巴省政府提供的 Manitoba Property Assessment Information 图层的子集。

  3. 内容窗格中,右键单击 Neepawa Property Assessment 图层,然后单击属性表

    图层快捷菜单中的属性表

  4. 检查该属性表。

    Total Value 字段包含评估值。 但是,它看起来可能被格式化为文本而不是数字,因为每个像元均包含一个 $ 字符。

  5. 在属性表中,指向 Total Value 字段标题。

    Total Value 字段类型

    随即出现一个弹出窗口,将字段类型列为文本 (20)。 数字 20 表示允许的字符数。

    提示:

    字段格式还有助于确定其类型。 文本字段具有左对齐的值。 数值字段具有右对齐的值。

    您需要将此字段中的数据存储为数值格式而不是文本,但不能更改字段类型。 相反,您将创建一个新字段并使用 Total Value 字段中的数字进行填充。

  6. 在属性表工具栏中,单击计算

    计算按钮

    计算字段窗口随即显示。 此工具将计算现有字段或新字段的值。

  7. 对于字段名称(现有或新建),检入 Assessed Value,然后按 Tab 键。

    由于您命名了一个尚不存在的字段,因此还必须选择一个字段类型。 字段类型用于确定可以在字段中存储的数据种类。

  8. 指向字段类型参数并指向信息按钮。

    字段类型参数的信息按钮

    随即显示一个窗口,其中描述了字段类型选项。 提供了四种数值字段类型:浮点型双精度型短整型长整型

    数值字段类型

    要选择最佳类型,请考虑以下两个问题:

    • 您是否需要存储十进制值? 否。 Total Value 字段中的数值没有小数位,因此您可以使用其中一种整型数据类型:短整型长整型
    • 您的数据范围如何? 最昂贵宗地评估值为 3400 万美元。 此数值过大,短整型字段类型无法存储,因此必须选择长整型

      选择字段类型时,请尽量选择大小足以满足您需求的最小类型。

      注:

      ArcGIS 字段数据类型中阅读有关数值数据类型的详细信息。

  9. 对于字段类型,选择长整型(32 位整型)

    在这种情况下,您所选的表达式类型并不重要。

    计算字段工具参数

  10. 字段列表中滚动,同时双击 Total Value

    Assessed Value 框将填充文本 !Total_Value!

    使用 Total Value 字段填充的表达式框

    注:

    如果将表达式类型更改为 Arcade,则 Assessed Value 框将更改为 $feature.Total_Value。 两个选项均可运行。

    如果您的计算机使用美国英语以外的区域设置,则该表达式可能会由于不同的货币或千位分隔符而失败。 要避免此问题,请将表达式类型设置为 Arcade 并粘贴以下表达式:

    var numberOnly=Replace($feature.Total_Value, '$', '') // Remove dollar signs.
    Replace(numberOnly, ',', '') // Remove commas.

    将计算新 Assessed Value 字段以包含来自 Total Value 字段的值,但它们将被格式化为长整型字段类型,而不是文本。

  11. 单击确定

    消息窗口随即显示。 它包括一条警告,指示新字段已从 Assessed Value 重命名为 Assessed_Value。 该字段已重命名,因为字段名称不能包含空格。 该字段的别名仍然包含空格,即显示在属性表中的别名。

  12. 关闭消息窗口。
  13. 在属性表中,查看新 Assessed Value 字段以确认它包含您的期待值。

    属性表中的 Total Value 和 Assessed Value 字段

    Assessed Value 字段中的值应与 Total Value 字段中的值相同,但没有 $ 符号或逗号。

使用 Arcade 表达式计算新字段

接下来,您将重新格式化面积值。 您将创建另一个数值字段并使用 Frontage/Area 字段中的值对其进行填充。 这一次,您需要编写一个 Arcade 表达式来正确复制数据。

  1. 查看包含面积值的字段的属性表。

    Frontage/Area 字段包含所需信息。 但是,该字段同时包含单词和数字,这意味着其字段类型必须是文本。 您将创建一个数值字段来仅存储数字。

  2. 在属性表工具栏中,单击计算
  3. 计算字段窗口中,对于字段名称(现有或新建),键入 Area Acres,然后并按 Tab 键。

    接下来,您需要选择一个字段类型。

    • 您是否需要存储十进制值? 是。 Frontage/Area 字段值均包含两位小数,因此您需要选择支持小数值的字段类型之一:浮点型双精度型
    • 您的数据范围如何? 最大宗地的面积为 185 英亩,因此较小的数据类型浮点型的大小可以满足需求。
  4. 对于字段类型,选择浮点型(32 位浮点型)

    计算字段工具参数

  5. 对于表达式类型,选择 Arcade

    您可以使用表达式类型的任意选项来完成此字段计算。 对于本教程,您将使用 Arcade

  6. Area Acres = 框中,删除所有现有文本。

    您要从 Frontage/Area 字段复制数字信息并留下文本信息。 可以通过多种方法实现这一点,但在本教程中,您将使用分割函数。

  7. 单击助手类型按钮。 在显示的菜单中,单击文本

    助手类型菜单中的文本

    助手列表可以过滤与文本数据相关的函数。

  8. 助手列表中,双击 Split()

    助手列表中的 Split() 函数

  9. Area Acres = 框中,将光标放在括号内。 在字段列表中,双击 Frontage/Area

    字段列表中的 Frontage/Area 字段

    该表达式现在显示为 Split($feature.Frontage_or_Area)

    分割函数在指定字符处分割文本值并返回一个文本值数组。 Frontage/Area 字段中的值均包含一个数字,后跟一个空格,再跟一个单词(例如,0.15 ACRES)。 您可以在空格处分割这些值以将数字与单词分开。

  10. Area Acres = 框中,将光标放在右括号前并键入 ,' '

    确保在两个引号之间包含一个空格,因为此部分表达式表示分割位置。

    表达式

  11. 在表达式的末尾,输入 [0]

    最终表达式

    这部分表达式指示数组中需要返回的项目。 例如,如果要返回拆分后的文本,则可以改为 [1]

    最终的表达式为 Split($feature.Frontage_or_Area,' ')[0]。 只要有空间,即可转换为分割 Frontage/Area 字段。 返回第一次分割前的文本。

    注:

    分割函数还有其他可选参数。 有关这些参数的信息,您可以访问 ArcGIS Arcade 函数参考页面。

    要使用 Python 3 编写相同的表达式,请键入 !Frontage_or_Area!.split( )[0]

    如果您的计算机使用以逗号作为小数分隔符的区域设置,请改用以下表达式:

    var frontageArea=Replace($feature.Frontage_or_Area, '.', ',')
    Split(frontageArea,' ')[0]
  12. 单击确定

    随即显示一个消息窗口,其中显示了与以前相同的警告。

  13. 关闭消息窗口。
  14. 在属性表中,查看新 Area Acres 字段并确认它包含您的期待值。

    属性表中的 Area Acres 字段

    Area Acres 值应与 Frontage/Area 字段中的数字匹配。

计算几何

您可能已经注意到 Frontage/Area 字段存储了两种值。 带有单词 ACRES 的行存储面积,带有单词 FEET 的行存储临街线,即宗地沿街道的长度。

注:

您可以使用测量浏览工具在地图上确认临街线和面积值。

这意味着 Area Acres 字段中的许多值是错误的,因为它们不表示面积,且单位也不是英亩。 您无法将英尺值转换为英亩,因为两个单位分别测量距离和面积。 但是,您可以根据要素形状计算这些缺失值的面积。

首先,您将选择所有具有临街测量值的宗地。

  1. 在属性表中的工具条上,单击按属性选择

    “按属性选择”按钮

  2. 按属性选择窗口中,使用菜单构建子句 Where Frontage/Area contains the text FEET
    提示:

    在第三个菜单中,键入单词 FEET

    按属性选择子句

  3. 单击确定
  4. 查看属性表,确认已选择所有 FEET 值,且未选择任何 ACRES 值。

    在属性表中选择的 FEET 值

    接下来,您将对 Area Acres 字段执行计算。 由于选择处于活动状态,因此计算将仅应用于所选行。

  5. 右键单击 Area Acres 字段标题,然后单击计算几何

    计算字段快捷菜单中的几何

    计算几何窗口随即显示。 此工具能够测量要素形状的长度、面积、周长以及其他几何属性。

  6. 对于属性,选择面积(测地线)

    测地线测量值考虑了地球的曲率。

  7. 对于面积单位,选择国际英亩

    计算几何工具参数

    坐标系字段留空。 由于进行测地线测量,因此所选坐标系并不重要。

  8. 单击确定

    在属性表中,查看 Area Acres 字段以确认所选值已被编辑。

    属性表中已更新的 Area Acres 值

    已为所选行计算出新的面积值。 这些值是直接从地图上测量得出的,而不是通过其他属性计算而来的。 所有已选择的行均包含六位小数,而未选的行仅包含两位。

  9. 在属性表的工具栏上,单击清除按钮以清除选择。

    清除按钮

  10. 关闭属性表。

使用新字段对地图进行符号化

最后,您将使用创建的新字段对地图进行符号化。

  1. 内容窗格中,右键单击 Neepawa Property Assessment,然后单击符号系统

    随即显示符号系统窗格。

  2. 对于主符号系统,选择分级色彩

    使用分级色彩对数量进行符号化,它仅适用于数值字段。

  3. 对于字段,选择 Assessed Value。 对于归一化,选择 Area Acres

    这些字段选择使用其价值除以面积来符号化每个宗地。

    分级色彩设置

    在地图上,红色宗地的每英亩价值最高。

    符号化地图

  4. 快速访问工具栏上单击保存按钮。

    快速访问工具栏上的“保存”按钮

  5. 关闭符号系统窗格,然后关闭 ArcGIS Pro

ArcGIS Pro 中不能转换字段类型,但是可以从现有字段中创建和计算具有新类型的新字段。 在本教程中,您学习了如何识别和选择字段类型,如何计算字段和几何,以及如何构建 Arcade 表达式以隔离部分字段值。 您创建了两个数值字段来替换两个文本字段。

您可以在教程库中找到更多教程。