设计并部署自定义符号

USA Current Wildfires 图层将使用内含简单火焰形状的圆形符号。 在开始本教程之前,您将了解导致设计此符号的考虑因素。

考虑符号的设计需求

任何地图符号的目标都是快速、清晰和直观地进行交流。 要设计此类符号,您必须考虑其设计需求。 您应该提出诸如“此数据的目的是什么?”以及“受众是谁?”之类的问题。

已使用图形软件创建了您将在本教程中使用的符号。

内含白色火焰形状的红色圆形符号

在开始使用此符号进行制图之前,您将观看一个视频以了解导致其设计的功能考虑因素。 了解符号的此用途和需求示例将有助于您为自己的地图设计和选择更加有效的符号。

仔细考虑地图符号的颜色、清晰度和交流方式将便于各种用户查看和理解。

ArcGIS Online 中创建您自己的符号将使您的地图独一无二并且满足您的需求。 您已经了解自定义符号的可能设计考虑因素以及解决这些问题的一些方法。 接下来,您需要将自定义火焰符号下载并应用于 USA Current Wildfires 数据集。


按类型和比例映射实时源火灾数据

您不会使用相同的符号映射每个火灾事件。 您将使用符号的多种不同颜色和大小变体来为地图读者提供详细信息。 您将向他们展示火灾的位置、火灾的类型、哪些是新火灾,以及对于已确定的火灾,这些火灾的规模。

图例的 8 个符号类用于不同类型和规模的火灾

随着地图的缩放,您还可以控制每个符号的大小,以便针对每个比例相应调整符号的大小。

下载火灾符号并保存一份火灾地图副本

您将下载火灾符号的副本以备日后使用,然后保存为本教程准备的可编辑的 USA Current Wildfires 地图版本。

  1. 下载火灾符号

    这是过去 24 小时内发生的美国火灾事件的符号。

    内含红色火焰形状的黄色圆形符号

  2. 打开 USA Current Wildfires web 地图。

    USA Current Wildfires web 地图随即显示在 Map Viewer 中。 地图将显示红色标记,大部分位于美国西部。

    USA Current Wildfires 地图随即在 Map Viewer 中打开,其中包含表示火灾位置的红色圆形标记

    接下来,您需要保存自己的此地图副本。

  3. 登录到您的 ArcGIS 组织帐户
    注:

    如果您没有组织账户,请参阅软件访问权限选项

  4. 内容(深色)工具栏上,单击保存并打开按钮,然后选择另存为

    “保存并打开”菜单中的“另存为”选项

  5. 保存地图窗口中,对于标题,键入 USA Current Wildfires 以及您的姓名或姓名缩写。 接受标签摘要的现有文本。

    保存地图窗口

  6. 单击保存

按火灾类型进行分类

USA Current Wildfires 图层不含生成所需符号类所需的特定字段。 您将使用 ArcGIS Arcade 来定义所需符号类别。 借助 Arcade,您可以动态创建自定义类别,而无需添加字段。

您将编写一个 Arcade 表达式,该表达式将使用属性表中的 3 个字段来定义 8 个基于火灾类型、时长和规模的自定义符号类。

  1. 内容工具栏上,单击图层

    “内容”选项卡

    地图中存在 3 个主题图层,但目前仅其中一个可见:Sept 1, 2021。 此图层是实时源图层的存档版本。 它捕获于 2021 年 9 月 1 日,处于一个特别可怕的西部野火季节期间,其中包含构建完整符号系统集所需的完整范围数据值。

    Sept 1, 2021 图层处于活动状态的图层列表

    稍后您将使用实时数据图层,但要创建符号类,您将使用存档图层。

    存档图层将所有野火点显示为红点。 您将分配可以传达详细信息的符号系统,而不仅仅是位置。

  2. 图层窗格中,单击 Sept 1, 2021 图层将其选中。
    注:

    所选图层的名称左侧存在一个蓝色垂直条。

  3. 设置(浅色)工具栏中,单击样式

    Sept 1, 2021 图层的“更改样式”按钮

  4. 样式窗格中,对于选择属性,单击表达式

    “选择要显示的属性”菜单中的“新建表达式”选项

    Arcade 表达式编辑器随即出现。 表达式窗口用于构建表达式。

  5. 表达式窗口中,删除不需要的前三行内容。 键入(或复制粘贴)var Acres =并在末尾添加一个空格。

    表达式设置为 var Acres =

    var 表达式代表变量。 变量是对象的简化名称,以便稍后在表达式中引用。

    接下来,您将指定变量值。

  6. 单击展开图标以查看侧选项卡。

    展开侧面板

    配置文件变量函数选项卡用于查找您将在表达式中使用的元素。 帮助选项卡将打开 Arcade 帮助网页

  7. 单击配置文件变量。 在配置文件变量窗格中,单击 $feature 旁的箭头。

    添加配置文件变量

  8. 下,找到并单击 $feature.DailyAcres

    全局列表中的 $feature.DailyAcres

    该字符串随即添加到表达式窗口中,由此完成您的第一行代码。

    Daily Acres 要素变量已添加到表达式窗口

    对变量 Acres 的任何进一步引用都将访问图层中各要素的 Daily Acres 属性值(在本例中,即各个火灾事件)。

    您将定义另外两个变量以表示另外两个字段。

  9. 在表达式窗口中,按 Enter 键转到表达式的下一行。 复制粘贴以下两行代码:
    var Age = $feature.FireDiscoveryAge
    var Type = $feature.IncidentTypeCategory

    您现在已定义 3 个变量。 Acres 是有关火灾报告的燃烧英亩数。 Age 是自首次报告火灾以来的天数,Type 将每次火灾事件定义为野火、计划烧除或复合野火。

    您将测试变量是否有效。

  10. 表达式窗口中的新行上,键入 return Type
  11. 单击运行

    “表达式”窗口中的“测试”按钮

    随即显示输出窗口。 报告的结果为 RX

    结果表中的 RX

    这是数据集中第一个火灾事件的事件类型类别字段中的值。 RX 是计划烧除的代码。

    计划烧除是控制焚烧,通常计划用于帮助防止以后发生更加极端的野火。 您希望以计划烧除自己的符号类来显示所有计划烧除,因为它们与数据集的其余部分非常不同。 您还需要确保符号类具有比 RX 更有意义的名称,以便人们在地图图例中理解符号类。

  12. 在表达式窗口中,删除文本 return Type。 复制粘贴以下代码:
    
    if (Type == 'RX') {
    return "Prescribed Fire"
    }

    每次事件类型类别字段的值为 RX 时,此 if 语句都会返回字符串 Prescribed Fire

  13. 单击运行

    返回的结果为 Prescribed Fire

    结果表中的 Prescribed Fire

  14. 在下一行中,复制粘贴以下代码:
    
    if (Type == 'CX') {
    return "Incident Complex"
    }
    if (Age == 0) {
    return "New (Past 24-hour)"
    }

    此代码将创建另外两个符号类别。 第一个类别用于复合野火,即同一区域内由一个事件管理团队管理的两起或多起火灾。 第二个类别用于过去 24 小时内报告的火灾。 新火灾事件没有 Type 代码。 该表达式将通过查看 Age 变量(Fire Discovery Age 字段)来查找新记录。

    目前,您已定义的三个类别均用于火灾事件的特殊情况。 接下来,您将根据规模将所有剩余的火灾放置到不同的符号类中。

  15. 在表达式窗口的下一行中,复制粘贴以下代码:
    
    When (
    Acres < 1000, "0-999",
    
    )

    If 语句之一未捕获的任何事件都将传递到此 When 语句。

    此语句转换为 When Acres 值小于 1000 时,返回字符串 0-999。 对于更大的火灾,您将添加更多符号类。

  16. 将指针放置在空行(第 15 行)上并粘贴以下代码:
    
    Acres < 10000, "1,000-9,999",
    Acres < 50000, "10,000-49,999",
    Acres < 300000,"50,000-299,999",

    不同 Acres 值的 When 语句

    现在,您拥有 4 个基于英亩数的符号类。 您将再添加一个类以捕获不属于任何其他类别的任何事件。

  17. 将指针放置在右括号前面并粘贴 "300,000 or more"(包含引号)。 按 Enter 键。

    完整的表达式

    完成的表达式应符合以下几点:

    
    var Acres = $feature.DailyAcres
    var Age = $feature.FireDiscoveryAge
    var Type = $feature.IncidentTypeCategory
    if (Type == 'RX') {
    return "Prescribed Fire"
    }
    if (Type == 'CX') {
    return "Incident Complex"
    }
    if (Age == 0) {
    return "New (Past 24-hour)"
    }
    When (
    Acres < 1000, "0-999",
    Acres < 10000, "1,000-9,999",
    Acres < 50000, "10,000-49,999",
    Acres < 300000,"50,000-299,999",
    "300,000 or more"
    )

    您在 When 语句之前编写了 If 语句,以便表达式更加有效地执行。 表达式的顺序非常重要:If 语句将首先过滤掉无需按规模进行排序的火灾,因此 When 语句仅需处理一些火灾,而非所有火灾。 此表达式遵循在更加具体的排序(在本例中,按火灾规模)之前执行更加常规的排序(在本例中,按火灾类型)的最佳做法,以便您的图层在地图上更快地响应。

  18. 单击运行

    输出Prescribed Fire

    属性表中的第一条记录为计划烧除,并由表达式中的第一个 If 语句捕获。

  19. Arcade 表达式编辑器的顶部,删除现有文本。
  20. 键入 USA Wildfire Incidents (Acres),然后按 Tab 键。

    表达式名称的编辑按钮

  21. 单击完成

    地图随即进行更新以显示您在 Arcade 表达式中定义的符号类。 您将进一步自定义符号系统,以显示每个符号类的不同符号颜色。

    基于地图上显示的自定义表达式的样式

应用自定义符号

随即在地图上显示图例卡片,其中显示了您已创建的符号类。 接下来,您将对符号类进行重新排序,并将自定义符号应用于其中一个类别。

  1. 样式窗格的选取样式下,对于类型(唯一符号),单击样式选项

    “类型(唯一符号)”卡片上的“样式选项”按钮

  2. 样式选项窗格的 300,000 或更多旁边,单击并拖动重新排序按钮以将该图层移至列表顶部。

    将图层从图层列表的底部拖动到顶部

  3. 对符号类进行重新排序,直到其按以下顺序排列:
    • 300,000 or more
    • 50,000-299,999
    • 10,000-49,999
    • 1,000-9,999
    • 0-999
    • New (Past 24-hour)
    • Incident Complex
    • Prescribed Fire

    将重新排列符号类。

    已重新排列符号类顺序

    接下来,您需要将自定义火焰符号应用于其中一个符号类。

  4. 单击 New (Past 24-hour) 旁的符号。

    New (Past 24-hour) 符号类的符号

  5. 符号样式窗格中,对于当前符号,单击基本点

    基本点

  6. 对于类别,在已添加的样式下,单击已上传的符号

    “已上传的符号”选项

  7. 单击浏览,选择之前在教程中下载的图像。
  8. 单击完成

    选择符号图像窗口

    黄色和红色火焰符号随即出现在符号样式窗口中。

  9. 对于大小,键入 19.5 像素。

    新火灾现在具有自定义符号。

    带有彩色符号和新火灾符号的地图

    接下来,您可以为其他 7 个符号类应用更多自定义符号。 现在,您将跳过它,并使用已定义符号类的实时数据集。

  10. 样式选项窗格中,双击完成
  11. 内容窗格中,对于 Sep 1, 2021 图层,单击可见性按钮使其不再可见。
  12. 对于 USA Current Wildfires – Current Incidents 图层,单击可见性按钮使其可见。

    USA Current Wildfires - Current Incidents 图层在地图上可见

    注:

    USA Current Wildfires – Current Incidents 图层经常变化,因此您看到的地图将与包含该图层的教程中的图像不匹配。

  13. 内容工具栏上,单击图例

    USA Current Wildfires - Current Incidents 图层的“显示图例”按钮

    随即显示 8 个符号类,每个符号类都具有不同的符号。 前 5 个类都会使用设置为不同大小的相同图像文件。

  14. 内容工具栏上,单击保存并打开,然后选择保存

按地图比例控制符号大小

在设计打印地图时,您只需考虑一次符号的大小。 但在交互式地图上,查看者可以进行放大和缩小。 地图比例始终在变化,在某个比例下看起来不错的符号在另一个比例下可能会看起来过大或过小。

接下来,您将编写第二个 Arcade 表达式,以使野火符号随着查看者在地图上进行放大和缩小而略微更改大小。 更改非常细微,但将确保符号始终具有适合比例的大小。

  1. 图层窗格中,确保选择 USA Current Wildfires – Current Incidents 图层。 在设置工具栏上,单击样式按钮。

    选择属性下,所选属性将列为 USA Wildfire Incidents (Acres)。 这与您在之前的步骤中创建的表达式相同。

  2. 选择属性下,单击表达式

    样式窗格上的表达式

    您将从创建变量开始。

  3. 表达式窗口中,删除现有文本。 复制粘贴以下代码:
    
    var Acres = $feature.DailyAcres
    var Age = $feature.FireDiscoveryAge
    var Type = $feature.IncidentTypeCategory

    这些变量与上一表达式中的相同。 它们都会访问属性表中的字段。 接下来,您将添加第 4 个变量,该变量将查询地图,而非属性表。

  4. 在下一行中,键入 var vs = 并在末尾添加一个空格。
  5. 配置文件变量选项卡中,单击 $view 的箭头,然后单击 $view.scale

    变量 vs 将返回计算表达式时的当前地图比例。

    包含 $view.scale 的表达式

    您将使用该变量为不同的地图比例定义不同的符号大小。

  6. Enter 键。 键入 return vs。单击运行

    结果是一个较大的数字。

    结果表中较大的数字

    该数字表示地图的当前比例。 它将会有所不同,具体取决于您打开 Arcade 表达式编辑器之前的地图比例。 在以上显示的示例中,地图的当前比例约为 1:18,500,000。

  7. 删除 return vs。 按 Enter 键以跳过一行。
  8. 复制粘贴以下代码:
    
    var ValueSize = When (
    Type == 'RX', 17,
    
    )

    与其他变量不同,变量 ValueSize 不会引用属性表或地图中的单个值。 相反,该变量包含一个表达式。 此表达式表示 When Type 等于 RX 时,符号大小为 17 磅。 您将向此表达式添加注释以使其更易于理解。

  9. 将指针放置在 Type == 'RX', 17, 之后。 键入一个空格,后跟 //Prescribed Fire

    添加至表达式的注释。

    Arcade 中,任何以 // 开头的文本都是注释。 注释不会影响代码。

    您将向 ValueSize 表达式再添加 7 行,以定义其他符号类的大小。

  10. 将指针放置在空行(第 8 行)上并粘贴以下代码:
    
    Type == 'CX', 18, //Incident Complex
    Age == 0, 19.5, //Past 24-hour
    Acres < 1000, 18, //0-999
    Acres < 10000, 25, //1,000-9,999
    Acres < 50000, 33, //10,000-49,999
    Acres < 300000, 41, //50,000-299,999

    这些符号类与您之前定义的符号类相同,但这次您要为每个符号类指定大小,而非名称。 将使用较大的符号来显示较大的火灾。 新火灾为 19.5 像素,也略大于其他火灾,以突出显示这些新火灾,因为新火灾符号的黄色在浅色背景上更难看到。

    接下来,您将测试 ValueSize 表达式。

  11. 将指针放置在右括号之后,然后按 Enter 键两次以跳过一行。
  12. 键入 return ValueSize,然后单击运行

    输出窗口将显示错误。

    执行错误:必须具有默认值结果

    When 语句中需要默认值,以捕获不属于您定义的类的任何数据。

    您将向表达式的末尾添加一个默认值,以便为任何大于 300,000 英亩的火灾分配符号大小。

  13. 将指针放置在右括号之前,然后键入 47。 将指针放置在右括号之后,然后键入 //300,000 or more
  14. 再次单击运行

    这次,将返回一个数字。 该数字会有所不同,因为您使用的是每天更新的实时数据集,但其应该为 17、18、19.5、25、33、41 或 47。

    结果表中的 47

    在以上示例中,将返回数字 47,指示测试要素是一场燃烧超过 300,000 英亩的野火。

    目前,您的表达式将与当前符号系统执行相同的操作:为每个符号类分配不同的大小。 到目前为止,代码将为每个符号类提供基线大小。 接下来,您将使用 Arcade,根据地图比例来更改每个大小。

  15. 清除 return ValueSize 并按下 Enter 键。 复制粘贴以下代码:
    
    When(
    vs > 9000000, ValueSize,
    vs > 4000000, 1 + ValueSize,
    
    )

    用于更改比例的 When 语句

    此语句的含义如下:

    • 当地图比例大于 1:9,000,000时,返回 ValueSize 表达式定义的值。
    • 当地图比例大于 1:4,000,000 时,返回 ValueSize 表达式定义的值加 1。

    此表达式对地图的影响如下:

    • 当地图一直缩小时,将使用基线符号大小。
    • 当地图稍微放大时,符号大小都将增大 1 磅。
  16. 将指针放置在空行(第 20 行)上并粘贴以下内容:
    
    vs > 2000000, 2 + ValueSize,
    vs > 1000000, 3 + ValueSize,
    vs > 500000, 4 + ValueSize,
    5 + ValueSize

    用于更改比例的完整 When 语句

    当比例增大时,此 When 语句将逐渐向基线符号大小添加更大的数字。 当缩小到整个美国时,计划烧除符号的大小将为 17 磅。 当放大到城镇时,它将增大为 22 磅 (17 + 5),因此它仍然很显眼。

    注:

    在地图中,较小比例是指地球看起来较小的地图。 比较 1:9,000,000 小于 1:500,000。

    完成的表达式应符合以下几点:

    
    var Acres = $feature.DailyAcres
    var Age = $feature.FireDiscoveryAge
    var Type = $feature.IncidentTypeCategory
    var vs = $view.scale
    
    var ValueSize = When (
    Type == 'RX', 17, //Prescribed Fire
    Type == 'CX', 18, //Incident Complex
    Age == 0, 19.5, //Past 24-hour
    Acres < 1000, 18, //0-999
    Acres < 10000, 25, //1,000-9,999
    Acres < 50000, 33, //10,000-49,999
    Acres < 300000, 41, //50,000-299,999
    47 //300,000 or more
    )
    
    When(
    vs > 9000000, ValueSize,
    vs > 4000000, 1 + ValueSize,
    vs > 2000000, 2 + ValueSize,
    vs > 1000000, 3 + ValueSize,
    vs > 500000, 4 + ValueSize,
    5 + ValueSize
    )

    最小符号大小为 17,最大符号大小为 52 (47 + 5)。 稍后,您将需要这些数字来设置符号系统。

  17. 单击运行按钮。

    结果应该为 17 到 52 之间的数字。

  18. 将表达式命名为符号大小。 按 Tab 键。
  19. 单击完成

    样式窗格的选择属性下,列出了两个表达式:USA Wildfire Incidents (Acres)Symbol Size。 将由符号系统表示这两个值。

    包含两个表达式的“更改样式”窗格

按“类型和大小”设置符号样式

样式窗格中,可以使用类型和大小样式。 当一个字段(或表达式)返回文本值,另一个字段(或表达式)返回数值时,将显示此选项。

  1. 样式窗格中,对于类型和大小,单击样式选项

    该窗格将显示两张卡片。 您需要分别将符号系统属性应用于每个表达式。

  2. 对于类型(唯一符号)样式,单击样式选项

    “类型(唯一符号)”卡片上的“样式选项”按钮

    之前根据 USA Wildfire Incidents (Acres) 表达式应用的所有符号仍然存在。 您无需在此处进行任何更改。

    8 个具有不同自定义符号的野火符号类

  3. 单击取消
  4. 计数和数量(大小)卡片上,单击样式选项

    此样式可将 Symbol size 表达式中的值转换为实际符号大小。 您将配置样式,以便使用 17 像素符号绘制返回值 17(可能的最小值),并使用 52 像素符号绘制返回值 52(可能的最大值)。

  5. 单击直方图顶部的数字。 输入 52,然后按 Enter 键。
    注:

    由于您使用的是经常变化的实时数据,直方图中的默认数字和数据可能与示例图像中显示的不同。

    直方图上方的最大值设置为 52。

    您还将移动直方图的顶部控点。 将使用最大符号大小来绘制任何大于或等于控点值的值。

  6. 拖动顶部控点,直到其标注显示为 52 为止。

    正确设置了数据范围后,您还需要确保大小范围匹配 17 到 52。

  7. 大小下方,将最小值更改为 17 像素,将最大值更改为 52 像素。

    最小大小设置为 17,最大大小设置为 52。

  8. 关闭包含在图例中
  9. 单击完成三次。
  10. 在地图上进行缩放并观察符号大小。

    当您进行放大时,符号将稍微变大。 但是,更改不明显。 您不希望此更改引人注目,因为它可能会分散或混淆地图读者的注意力。 但在较大比例下,大小的略微增大有助于使地图更易于阅读。

    下图对未修改的符号大小与修改后的符号大小进行比较,放大后的符号大小略大。

    按比例修改大小(右)和未修改大小(左)的符号

  11. 保存地图。

现在,您已经使用了三种自定义方式来符号化当前野火事件。 首先,您编写了一个 Arcade 表达式,为不同类型和大小的火灾创建自定义符号类。 然后,您将自定义 .png 符号应用于符号类。 最后,您编写了另一个 Arcade 表达式,以在不同比例下略微更改符号的大小。


自定义标注、火线和弹出窗口

现在,将使用自定义标记符号对地图的火灾数据进行符号化,这些符号可告知地图阅读者每次火灾的类型和大小。 您还希望传达另外两条信息:每次火灾的名称和燃烧区域的火线。

创建标注

火灾图层已配置弹出窗口,用户可以单击弹出窗口以了解每个事件。 但是,在较大的比例下,系统将提供足够的空间以同时包含标注。 标注可以帮助用户更快地找到他们感兴趣的火灾。 您将为火灾图层创建与符号系统相匹配并且仅在放大时显示的标注。

  1. 如有必要,重新打开您的 USA Current Wildfires web 地图。
  2. 图层窗格中,确保选择 USA Current Wildfires – Current Incidents 图层。 在设置工具栏上,单击标注

    “设置”工具栏上的“标注”

  3. 标注窗格中,启用启用标注

    在标注要素窗格上启用标注

    地图中随即显示标注。

    已标注火灾的地图

    您将改进这些标注,使其在不同的比例下和不同的地图上看起来美观并保持清晰。

    一些标注采用句子大小写格式,而其他标注则采用大写格式。 您将使用 Arcade 以确保针对所有标注使用一致的格式。

  4. 标注要素窗格中,对于标注字段,单击表达式按钮。

    “文本”字段旁的“编辑表达式”按钮

  5. Arcade 表达式编辑器中,删除现有文本,然后键入或者复制粘贴 var Name = Upper($feature.IncidentName)

    变量 Name 将返回属性表中的 IncidentName 值,但它会将其修改为大写形式。

    您还将使用此表达式以确保未标注计划烧除。 为此,您将创建一个变量和一个 When 语句。

  6. 在下一行上,键入或者复制粘贴以下代码:
    
    var Type = $feature.IncidentTypeCategory
    
    When (
    Type == 'WF', Name,
    Type == 'CX', Name,
    ""
    )

    标注的 When 语句

    此表达式指示 When 火灾为野火或复合火灾时,将以大写字母返回名称。 否则,不返回任何内容。

  7. 单击运行

    输出将有所不同,具体取决于当前数据集,但它应该为大写字母的火灾名称,或者没有任何内容。

  8. 将表达式的名称编辑为 Uppercase Name。 按 Tab 键并单击完成

    地图上的所有标注将更新为大写字母。 将不再标注计划烧除。

    带有大写火灾标注的地图

    接下来,您将更改标注的样式以确保其适用于不同的地图。 在深色底图上,当前的黑色标注可能难以阅读。 此外,在具有多个其他图层的地图上,可能不清楚这些标注指的是火灾,而非地图上的一些其他要素。

    您将通过设置标注样式以匹配白色和红色符号来解决这些问题。

  9. 标注要素窗格中,单击编辑标注样式
  10. 标注样式窗口中,对于颜色,选择白色。
  11. 打开晕圈。 对于颜色,选择红色。 对于大小,将其设置为 2

    标注样式窗口中的光环设置

    晕圈用于控制文本的背景,以使文本保持清晰,而不考虑地图的背景。 所选颜色有助于将标注链接到火灾符号。 接下来,您将调整对齐方式,以确保清楚哪个标注与哪个符号相关联。

  12. 对于放置,选择中心下方

    现在,标注位于每个符号的正下方。

    带有红色和白色火灾标注的地图

    某些标注会隐藏一些地图符号。 您需要将标注变小,并确保其仅在较大比例下出现,在较大比例下,系统将为标注提供足够的空间。

  13. 关闭标注样式窗口。
  14. 标注要素窗格中,对于可见范围,单击世界,然后选择多个县

    标注的“大小”和“可见范围”设置

  15. 放大并缩小地图以测试标注。

    标注在进行放大时出现,在进行缩小时消失。

    带有略小的火灾标注的地图

    这些标注将提供快速参考信息,而不会压制火灾符号。

  16. 保存地图。

符号化火线

目前为止,您已映射了点数据以表示火灾。 接下来,您将对代表燃烧后土地的面图层进行符号化。 该图层对于地图阅读者确定火灾距离他们的家或者他们关心的其他地点的远近程度非常重要。 您将选择符合行业标准的符号系统。

  1. 图层窗格中,关闭 USA Current Wildfires – Current Incidents 图层。
  2. 打开 USA Current Wildfires – Current Perimeters 图层并将其选中。
  3. 内容工具栏上,单击图例。 放大到有许多火灾的区域,直到出现火线。

    图例窗格随即出现。 此图层具有 2 个符号类:一个用于火线,另一个用于计划烧除的火线。

    USA Current Wildfires - Current Perimeters 图层的 2 个符号类

    您需要将此默认符号系统更改为燃烧区域的标准符号。 遵循符号标准或约定有助于使您的地图更容易解读,因为它与人们从其他地图体验中所期望的视觉效果相匹配。

  4. 设置工具栏中,单击样式。 在样式窗格中,对于类型(唯一符号)样式,单击样式选项
  5. 单击 Wildfire Daily Fire Perimeter 的红色符号。

    Wildfire Daily Fire Perimeter symbol 类的符号

  6. 符号样式窗口中,单击填充颜色。 在选择颜色窗口中,输入 #F7ADA4 并单击完成
  7. 符号样式窗口中,对于填充透明度,输入 50

    符号填充颜色由十六进制代码定义,透明度设置为 50%。

  8. 单击轮廓颜色。 在选择颜色窗口中,输入 E60C0C 并单击完成
  9. 符号样式窗口中,对于轮廓透明度,输入 0

    符号轮廓颜色由十六进制代码定义,透明度设置为 0%。

  10. 样式选项窗格中,单击 Prescribed Fire 符号。 在符号样式窗格中,设置以下参数:
    • 对于填充颜色,键入 #E8BD71
    • 对于填充透明度,将滑块移至 50%。
    • 对于轮廓颜色,键入 #E5A53E
    • 对于轮廓透明度,将滑块移至 0%。

    USA Current Wildfires - Current Perimeters 图层中的类别样式已配置。

    两个符号类的新符号

  11. 样式选项窗格中,双击完成

    现在,已符号化周长以符合行业标准。

    地图上样式的 Perimeters 图层

  12. 保存地图。

自定义弹出窗口

弹出窗口是 web 绘图的重要组成部分。 将对有效的弹出窗口进行自定义,以清楚地传达特定地图目标所需的信息。 Current IncidentsCurrent Perimeters 图层都已经配置了弹出窗口,但是,您需要改进 Current Perimeters 弹出窗口,以便它们可以更好地处理空值。

  1. 在地图上,单击火线面之一以查看其弹出窗口。

    Crazy Creek Incident 的弹出窗口,包含文本“Acres Burned: 86,963.12”

    弹出窗口包含燃烧的英亩数。 但是,有时火灾的大小未知。 这对于新火灾尤其常见。 在这些情况下,对于燃烧区域,弹出窗口将不会显示数量。

    您不希望弹出窗口暗示燃烧的英亩数为零。 您将编写一个最终 Arcade 表达式,该表达式将返回大部分时间燃烧的英亩数,但当没有可用数值时,它将返回文本 Not Available

  2. 关闭弹出窗口。
  3. 图层窗格中,确保 USA Current Wildfires – Current Perimeters 图层处于活动状态。 在设置工具栏中,单击弹出窗口
  4. 弹出窗口窗格中,单击属性表达式

    弹出窗口窗格中选项下的属性表达式

  5. 属性表达式窗格中,单击添加表达式

    “添加”按钮

  6. 表达式窗口中,擦除现有文本并复制粘贴 var GISAcres = ! IsEmpty($feature.GISAcres)

    此变量用于检查字段 GISAcres 是否不为空。 ! 表示 Not。

  7. Enter 键两次,然后键入 return GISAcres。 单击运行

    如果结果为 true,则意味着对于测试要素,GISAcres 字段不为空:它具有燃烧的英亩数值。

  8. 擦除 return GISAcres 并复制粘贴以下内容:

    If (GISAcres) Return text($feature["GISAcres"],'#,###.##')

    GISAcres 的表达式

    此行表示如果 GISArcres 变量为 true,则返回 GISAcres 字段中的文本,格式为带有千位分隔符和两位小数的数值。 大多数情况下,将返回一个数值。 但是,当 GISAcres 变量返回 false,而非 true 时,您仍然需要完成该 If 语句以涵盖这些情况。

  9. 在下一行中,键入 Return "Not Available"
  10. 单击运行

    结果应为数值或文本 Not Available

  11. 将表达式的名称更改为 Acreage

    完整的表达式

    完成的表达式应符合以下几点:

    
    var GISAcres = ! IsEmpty($feature.GISAcres)
    
    If (GISAcres) Return text($feature["GISAcres"],'#,###.##')
    return "Not Available"
  12. 单击完成

    接下来,您将在弹出窗口中使用您的新表达式。

  13. 属性表达式窗格中,单击返回箭头。
  14. 弹出窗口窗格中,单击文本,然后单击编辑文本

    “配置”按钮

  15. 在编辑文本窗口中的第三行中,删除 {GISAcres}
  16. 将指针放在 Acres Burned: 之后,然后单击添加字段名称按钮。

    “添加字段名称”按钮

  17. 单击 Acreage{expression/exp1}

    该表达式将添加至弹出内容文本。

  18. 单击确定

    在地图上,单击一些火线要素。 对于大多数要素,Acres Burned 线看起来与以前相同。

    但是对于没有燃烧英亩值的火,弹出窗口现在澄清了燃烧的英亩数不可用。

  19. 关闭弹出窗口和弹出窗口窗格。
  20. 图层窗格中,打开 USA Current Wildfires – Current Incidents 图层并探索完成的地图。

    已完成地图的详细信息

  21. 保存地图。

在本教程中,您学习了自定义 web 地图符号。 您已将自定义图形用作地图符号。 您使用了 Arcade 对数据进行分类,以便显示来自多个字段的信息。 您控制了符号的大小,以确保它们在任何比例下都看起来不错。 您设置了火灾标注和火线面的样式,并通过配置弹出窗口以显示更加精确的信息来完成。

由于每个数据集和每个地图都具有一些需要传达的略有不同的内容,因此精细绘图总是需要进行一定程度的自定义。 您已应用于 USA Current Wildfires 图层的设计注意事项和技术与许多地图相关。

可以在制图简介页面中查找更多制图教程。

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