在 web 地图中探索 Arcade 表达式
探索 Arcade 标注
借助 Web GIS,您可以共享、借用和重新利用不同源的数据。 您不再局限于您的组织采集和维护的数据。 但是,来自其他源的数据的格式通常不适合您的特定需求。 借助 ArcGIS Arcade,您可以调整其他人的数据并使其适合您的可视化和故事讲述。 由此即可摆脱数据结构的限制。
您将通过探索一个 Arcade 示例来开始本教程,该示例用于格式化日期字段中的地图标注。
- 打开 Anti-Shipping Activity Messages 应用程序。
此地图上的符号代表针对船只和海员的敌对行为,也称为海盗行为。 此数据由美国国家地理空间情报局 (NGA) 和 Esri ArcGIS Living Atlas of the World 团队创建。
注:
有关该数据的详细信息,请单击地图上导航控件下方的信息按钮。
- 缩放并平移以浏览地图。
- 单击地图上的任意点。
随即出现一个弹出窗口,其中包含敌对活动的描述。
该地图是使用多个 Arcade 表达式创建的。 这些表达式不会显示在应用程序中,而是在后台运行以确保应用程序清晰地进行通信。 接下来,您将打开该 web 地图并探索其中一些 Arcade 表达式。
- 打开 Anti-Shipping Activity Messages web 地图。
- 放大地图,直到显示标注为止。
每个点均标注其年份。
- 如有必要,请在内容(深色)工具栏上,单击图层按钮以打开图层窗格。
- 在图层窗格中,单击 Anti-Shipping Activity Messages 旁的选项按钮。
- 单击显示表格。
图层的属性表随即出现。
- 滚动表格以查看字段。
没有列出年份的字段。 仅存在 Event Date 字段。 该字段包含年份,还包含每个事件的月份、日期和时间。
- 关闭表。
- 在设置(浅色)工具栏上,单击标注按钮以打开标注要素窗格。
- 在标注字段下方的 Year 旁,单击表达式按钮。
随即显示表达式构建器窗口。 Year 不是字段的名称,而是表达式的名称。
该表达式为 Year(ToUTC($feature.dateofocc))。 此简短表达式仅从 Event Date 字段中提取年份信息。 Year() 是用于提取相关数字的函数。 ToUTC() 是另一个用于转换日期格式的函数。 $feature.datofocc 是 Event Date 字段中的要素,也称为 dateofocc。
- 在表达式上方,单击运行按钮。
输出随即出现在表达式下方。 它将显示年份,而非较长的日期。
此表达式的结果是类似 1990 而非 1990-06-02T21:00:00-03:00 的标注。 较短的标注更易于理解,并且可使地图更加简洁。
- 关闭表达式构建器窗口。
注:
要查看另一个具有 Arcade 标注的应用程序示例,请参阅 USGS Global Earthquakes。 选择 Recent Earthquakes – Events by Magnitude 图层,然后打开标注窗格以查看仅标注最近地震的表达式。
探索 Arcade 弹出窗口
接下来,您将探索多个 Arcade 表达式如何参与此地图中的弹出窗口。 特别是,您将了解 Arcade 如何根据数据中的属性值设置弹出窗口中的文本颜色。
- 在地图上,单击任何粉色、红色或紫色符号以打开其弹出窗口。
注:
如果地图仅包含黄色符号,请单击黄色符号。 粉色、红色和紫色符号用于表示当年发生的事件。
弹出窗口将以与事件类型的符号颜色相匹配的粗体文本来显示事件类型和日期。 它还显示了事件的描述。
- 在设置工具栏中,单击弹出窗口按钮以打开弹出窗口窗格。
- 单击属性表达式。
此弹出窗口中使用了 3 个表达式。 Date Conversion 类似于用于标注的表达式。 Hostility Type Classification 和 Hostility Type Color 均用于确定事件的类别。
- 单击 Hostility Type Color。
此表达式将列出 hostilitytype_1 字段中的值,并为每个值分配一种由十六进制代码定义的颜色。
例如,第 3 行表示当类型(hostilitytype_1 字段中的值)等于 1 时,将颜色设置为 #e055a8(粉色)。 表达式中的灰色文本为注释,其中列出了每种类型的描述。
接下来,您将了解如何在弹出窗口中使用此表达式。
- 关闭表达式构建器窗口。
- 在属性表达式窗格中,单击返回箭头。
- 在弹出窗口窗格中,单击文本。 单击编辑文本。
弹出窗口中的大部分文本都来自 description 字段,但弹出窗口顶部的粗体文本来自两个表达式。
- 高亮显示两个表达式 {expression/expr1} 和 {expression/expr0},然后单击字体颜色按钮。
在数据驱动选项卡中,Hostility Type Color 表达式处于选中状态。
这两行文本的颜色将由所选表达式确定。
- 单击完成。
将以相同的方式设置描述文本末尾 here 链接的颜色。
- 单击取消。
- 在地图上,单击其他一些符号可查看文本颜色如何根据事件的敌对类型发生变化。
Arcade 表达式用于创建包含最相关信息的弹出窗口,并以最相关的方式进行格式化。
注:
要查看另一个具有 Arcade 弹出窗口的应用程序示例,请参阅 Coral Reef Bleaching Stations。 Coral Reef Station – Null 图层将使用 4 个表达式以创建其弹出窗口,其中一个用于创建要素图像的 URL。
探索 Arcade 符号
在本教程的最后一个示例中,您将探索一个更加复杂的 Arcade 表达式,该表达式将根据地图的当前比例来确定符号的大小。
- 在设置工具栏中,单击样式按钮以打开样式窗格。
在选择属性下,列出了 2 个项目。 这些项目并非属性表中的字段,而是 Arcade 表达式。 其中一个表达式 Current Year Incidents 用于确定地图符号的颜色。 另一个表达式 Set the Symbol Size by Map Scale 用于确定其大小。
- 单击 Set the Symbol Size by Map Scale。
随即显示表达式构建器窗口。 此表达式将使用您在标注表达式中看到的相同 Event Date (dateofocc) 字段。
- 阅读第 8 行到第 13 行:
When( vs > 72000000, Old, vs > 1700000, 1 + Old, vs > 8000000, 2 + Old, vs > 3000000, 3 + Old, vs > 1000000, 4 + Old, 5 + Old)
变量 vs 之前在表达式中定义为 $view.scale 并引用地图的当前比例。 变量 Old 之前也在表达式中定义,用于设置每个符号的大小。 对于当年的事件,Old 的值为 9。 对于较早的事件,Old 的值为 3.5。
随着比例减小,此部分表达式将向 Old 变量添加数字,由此导致符号随着地图放大而变大。
注:
Old 变量在第 6 行进行定义:var Old = Iif (dataYear != Year(Today()), 3.5, 9)。
此行表示,如果事件的年份 (dataYear) 与当前年份 (Year(Today())) 不同 (!=),则 Old 变量的值将设置为 3.5。 否则(如果该年份与当前年份相同),则该值将设置为 9。 此表达式将导致最近的事件为大符号,较早的事件为小符号。
- 关闭表达式构建器窗口。
- 放大和缩小该地图。
虽然效果不明显,但是进行缩小时,黄色圆圈将显得更小,而进行放大时,黄色圆圈将显得更大。
注:
要查看另一个具有 Arcade 符号系统的应用程序示例,请参阅 Live Stream Gauges。 此地图将使用类似表达式以根据地图的比例来控制符号的大小。 它还将使用表达式来确定每个要素的状态。
在本教程中,您了解了如何使用 ArcGIS Arcade 来自定义标注、弹出窗口和符号,以创建能够更加清晰地传达信息的地图。 借助静态数据集,可以创建和计算新字段以重新格式化日期、类别和颜色。 但是,此地图使用了动态数据集,该数据集每天都会接收新记录,并且由其他人所有和管理。 创建新字段不是一种选择,但也不是必需的,因为您可以使用 Arcade 表达式从现有字段中派生新值。
ArcGIS Arcade 是适用于交互式地图的重要工具,用于创建旨在与您需要讲述的故事相匹配的地图,而不仅仅是您可用的数据。 Arcade 可将数据转化为功能强大的信息表达式。 要了解如何在您自己的地图中编写表达式,请参阅教程 ArcGIS Arcade 入门。
您在本教程中探索的 Anti-Shipping Activity Messages 应用程序用于绘制海洋表面的活动地图。 要了解交互式地图和应用程序如何描绘海洋深度,请参阅本系列中的下一教程:探索 3D 应用程序。