使用 ArcGIS Arcade 将文本转换为数值
视频
本教程也以视频方式提供。
尝试使用 Total Value 字段设置地图样式
首先,您将在地图上查看资产评估数据并查看 Total Value 字段。 您将尝试使用此字段来符号化地图。
- 在 Map Viewer 中打开 Portage la Prairie property assessment 图层。
随即显示该镇资产边界的地图。
- 如有必要,请在功能区中单击登录,然后使用您的 ArcGIS 组织账户进行登录。
注:
如果您没有组织帐户,请参阅软件访问权限选项。
- 在图层窗格中的图层名称上,单击选项按钮,然后单击显示表格。
图层的属性表随即显示在地图下方。
- 水平滚动表格以找到 Total Value 字段。
您将在地图上可视化此字段,以便查看哪些资产的值高于其他资产的值。
- 关闭表。
- 在屏幕右侧的设置工具栏上,单击样式按钮。
注:
如果设置工具栏不可用,请单击图层窗格中的 Portage la Prairie property assessment。 仅当选择某个图层时,设置工具栏才可用。
- 在样式窗格中,单击字段按钮。
- 在选择字段窗口中,单击 Total Value,然后单击添加。
样式窗格随即进行更新,以显示适用于 Total Value 字段的样式。 仅存在两个样式:类型(唯一符号)和位置(单一符号)。 您希望使用定量样式,例如计数和数量(大小),但是不存在可用样式。
在样式窗格顶部附近的 Total Value 旁边,该字段的类型列为 abc,指示其为字符串或文本字段。
使用计数和数量样式需要数值。 该样式不适用于文本值。
构建 Arcade 表达式
您仍然可以使用 Total Value 字段以及计数和数量样式来符号化地图。 您将使用 Arcade 表达式将文本值转换为数值。
- 在样式窗格的总值旁,单击移除按钮。
- 单击表达式按钮。
随即显示表达式构建器窗口。
- 清除“表达式构建器”窗口中的所有示例代码。
- 在窗口底部附近,单击展开按钮。
- 在已展开的工具栏中,单击函数。
函数窗格随即出现,其中列出了所有可用的 Arcade 函数。
- 在搜索栏中,键入 number。
该列表随即过滤到一个函数 Number(value, pattern?) -> Number。
- Number 是该函数的名称。
- Value 和 pattern 是该函数的两个参数。 问号指示 pattern 为可选参数。
- 结尾处的 -> Number 文本指示此函数的输出将为数值。
您将使用此函数将存储在 Total Value 字段中的文本值转换为数值。
- 单击 Number(value, pattern?) -> Number。
该函数随即显示在表达式构建器中。 value_ 参数处于高亮显示状态。 接下来,您需要将其替换为 Total Value 字段,因此,请保持该参数处于高亮显示状态。
- 在工具栏上,单击配置文件变量。
配置文件变量是来自地图的数据变量,您可以将其用作 Arcade 表达式中的输入。 其中包含该图层中的所有字段。
在配置文件变量窗格中,$feature 指该图层中的要素。 在此情况下,这些要素是 Portage la Prairie property assessment 图层中的属性。
- 在 $feature 旁边,单击箭头按钮。
随即显示 Portage la Prairie property assessment 图层中的所有字段列表。
- 滚动到该列表底部,然后单击 $feature.Total_Value。
该表达式随即更新为 Number ($feature.Total_Value)。
第一个参数 value 现在定义为 $feature.Total_Value。 该表达式将访问图层中每个要素的 Total Value 属性。 下一个参数 pattern 为可选项,因此您将运行该表达式以测试其是否在未定义模式的情况下正常运行。
- 在表达式构建器上方,单击运行。
在输出窗口中,将报告输出 Number: NaN。 NaN 代表非数值。 在本例中,该表达式不适用于未定义的模式。
- 将该表达式编辑为 Number($feature.Total_Value, '#.##')。
# 字符表示 Number 函数中的可选数字。 #.## 模式将转换小数点前任意数量的数字以及小数点后最多两位数字。 Total Value 字段中的值为货币值,因此可能最多使用两位小数来表示一些值。 此模式将确保能够转换带小数位的值。
- 再次单击运行。
输出窗口仍将报告 Number: NaN。 接下来,您将查阅该函数的文档以寻找解决方案。
修复表达式
您想起在属性表中,Total Value 字段中的每个数值均以 $ 字符开头。 这是一个文本字符。 该表达式失败,因为它无法将 $ 字符转换为数值。 您将查阅 Number 函数的文档以查看是否存在移除 $ 字符的方法。
- 在工具栏中,单击函数。
- 在搜索栏中,键入 number。
- 在 Number(value, pattern?) -> Number 旁边,单击箭头按钮。
该函数的文档随即出现。
- 向下滚动至示例部分。
第二个示例显示了在将文本转换为数值时,如何忽略某些字符。
Number('abc10def', 'abc##def') // return 10。
在示例表达式中,abc 和 def 定义为应忽略的文本。 您可以使用此模式以忽略 $ 字符。
- 在表达式构建器中,将光标放置在 #.## 前面并键入 $。
最终表达式应为 Number($feature.Total_Value, '$#.##')。
- 单击运行。
输出窗口将报告 Number: 85200。 该表达式成功地将诸如 $85,200 等值转换为诸如 85200 等数值。
注:
如果您的 web 浏览器设置为美国英语以外的语言,则该表达式可能会由于使用逗号作为千位分隔符而失败。 如果输出窗口仍报告 Number: NaN,请清除现有表达式并将其替换为以下内容:
var numberOnly = Replace($feature.Total_Value, '$', '') // Remove dollar signs. var digitsOnly = Replace(numberOnly, ',', '') // Remove commas. Number(digitsOnly)
注:
单击运行时,将针对图层中的第一个要素测试该表达式。
表达式完成后,您需要更改其名称以更好地描述其用途。
- 在窗口顶部,单击新建表达式。 清除现有文本并键入 Total Value (numeric)。
- 单击完成。
随即重新显示地图。 样式窗格会将 Total Value (numeric) 表达式列为所选属性。 已选择计数和数量(颜色)作为表达式返回的数值的默认样式。
该地图将可视化 Total Value 字段中的值,其中较大的圆圈表示较大的已评估资产值。
注:
Total Value 字段和 Portage la Prairie property assessment 图层保持不变。 Total Value (numeric) 表达式将保存在 web 地图中,而非该图层中,但是如果保存图层的副本,则其将适用于其他地图。
在本教程中,您学习了如何使用 Arcade Number 函数将地图中图层的文本值转换为数值,以便应用计数和数量样式。 您编写的表达式 Number($feature.Total_Value, '$#.##') 也可用于格式化弹出窗口和标注。
您可以在教程库中找到更多教程。