在数据收集期间加强质量
将创建的前两个属性规则将在收集数据时强制执行数据完整性。 将创建一个约束规则以确保不存在空值测试字段;将创建一个实时计算规则以自动生成检查测试结果。 这将消除移动工作人员手动计算测试结果的需求。 通过这两个属性规则,可以节省时间并防止错误。
为属性规则准备路灯数据
首先,您将查看路灯数据及其属性。 您将确保要素类已启用全局 ID(这是对所有属性规则的要求),以及已启用编辑者追踪(这是对某些属性规则的要求)。
- 下载 WhiteRockCity 工程包。
名为 WhiteRockCity.ppkx 的文件即会下载到您的计算机。
注:
.ppkx 文件是一个 ArcGIS Pro 工程包,可能包含可以在 ArcGIS Pro 中打开的地图、数据和其他文件。 通过本指南了解有关管理 .ppkx 文件的详细信息。
- 在计算机上找到所下载的文件,然后双击 WhiteRockCity.ppkx 以在 ArcGIS Pro 中将其打开。 如果出现提示,请使用 ArcGIS 帐户登录。
注:
如果您没有 ArcGIS Pro 的访问权限或者 ArcGIS 组织帐户,请参阅软件访问权限选项。
工程随即打开,其中 White Rock City 地图处于活动状态。 该地图包含您将使用的路灯数据。
注:
可通过白石开放数据门户下载路灯数据。
- 在内容窗格中,右键单击 Street Lights 图层,然后单击属性表。
属性表随即出现。
- 水平滚动表格并查看Hammer Test、Pole Condition、Wiring Condition、Panel Condition 和 Inspection Test Results 字段。
您将使用这些字段来创建和应用属性规则。 每次测试的取值范围在 0 到 5 之间,其中 0 表示路灯杆未通过测试,5 表示路灯杆状况良好。 Inspection Test Results 字段记录了四个测试结果的平均值。
- 关闭属性表。
在创建任何属性规则之前,均需要确保要素类配置正确。 必须先在要素类上启用全局 ID,然后才能创建属性规则。
- 在目录窗格中,展开数据库和 whiterockcity.gdb。
- 右键单击 Street_Lights 要素类,然后单击管理。
要素类属性窗口随即打开至管理选项卡。 全局 ID 复选框已被选中。
全局 ID 是所有类型的属性规则的要求。 但是,验证和批处理计算属性规则还需要启用编辑者追踪功能。 在此教程中,稍后需要创建一个验证规则,因此您将启用此功能。
- 选中编辑者追踪复选框。
- 单击确定。
Street_Lights 要素类现在已准备好接收属性规则。
创建约束规则
接下来,您将确保所有新创建的要素均已填充 Hammer Test、Panel Condition、Wiring Condition 和 Pole Condition 字段。 这些值用于确定路灯杆的整体状况,因此确保其不存在空值非常重要。 您将创建一个约束属性规则并在数据编辑期间强制执行该规则。
约束属性规则用于确保满足属性条件。 当条件不满足时,规则将返回错误消息。 在编辑过程中、添加新要素或更新或删除现有要素时将实时进行规则评估。
- 在内容窗格中,右键单击 Street Lights,指向数据设计,然后单击属性规则。
属性规则视图随即显示。 视图顶部列出了三种规则类型:计算、约束和验证。
- 单击约束选项卡,然后单击添加规则。
将出现一个表和新建规则窗格。
- 在新建规则窗格中,对于规则名称,键入 Check for null values。
- 对于描述,键入 Returns features where the Hammer Test, Pole Condition, Wiring Condition, or Panel Condition fields are null.
接下来,您将编写一个表达式来定义规则。
- 单击表达式按钮。
随即显示表达式构建器窗口。 将语言设置为 Arcade。 您将使用 IsEmpty() 函数和 if 语句来构建一个 Arcade 表达式,用于检查感兴趣字段中的值是否为空。
- 在表达式框中,复制并粘贴以下内容:
// Check if the values in the Hammer Test, Pole Condition, Wiring Condition, or Panel Condition fields are null (empty). if (IsEmpty($feature.HammerTest) || isEmpty($feature.PoleCond) || isEmpty($feature.WiringCond) || isEmpty($feature.PanelCond)) // If any of the fields above are null, return false. return false // Otherwise, return true. return true
此表达式将转换为:如果 Hammer Test 字段为 null,或者 Pole Condition 字段为 null,或者 Wiring Condition 字段为 null,或者 Panel Condition 字段为 null,则返回 false。 否则(如果所有字段均正确填充),则返回 true。
注:
有关 Arcade 函数的详细信息,请参阅 Arcade 函数参考页面。
- 单击确定。
该表达式随即显示在空值校验窗格中。 接下来,您将选择触发器,确定何时评估规则。 然后,您将定义违反规则时将出现的错误编号和消息。
- 对于触发器,选中插入和更新。
- 对于错误编号,输入 101。
- 对于错误消息,键入 Empty fields: Fill in the Hammer Test, Pole Condition, Wiring Condition, or Panel Condition fields with the test results。
当创建新要素或更新现有要素时,将自动评估该规则。
- 在功能区属性规则选项卡的属性规则组中,单击保存。
已创建第一个属性规则,并将在下次在 Street Lights 图层中创建或编辑要素时生效。
创建实时计算规则
接下来,您将创建一个实时计算规则以自动生成 Inspection Test Results 字段。 计算属性规则用于自动填充属性值。 您的新规则将计算四个测试字段的平均值以填充 Inspection Test Results 字段。
- 在属性规则视图的顶部,单击计算选项卡。
提供了两种计算规则。 对于实时计算规则,在编辑过程中将实时进行评估。 对于批处理计算规则,将在指定时间进行评估。 对于此工程,将记录新创建的路灯杆的质量,为此您将创建一个实时计算规则,以在创建每个新要素时进行评估。
- 单击添加规则按钮上的箭头,然后单击添加实时计算规则。
- 在新建规则窗格中,对于规则名称,键入 Calculate final inspection test results。
- 对于描述,键入 Calculates the mean of the Hammer Test, Pole Condition, Wiring Condition, and Panel Condition values to determine the overall inspection test results.
接下来,您将指定应接收计算的字段。
- 对于字段,选择 Inspection_Results。
接下来,您将编写一个 Arcade 表达式来定义规则。 您将使用 Mean() 函数计算所有测试结果的平均值。
- 单击表达式按钮。
- 在表达式构建器窗口的表达式框中,复制并粘贴以下内容:
// Return the mean of four test values Mean($feature.HammerTest,$feature.WiringCond,$feature.PanelCond,$feature.PoleCond)
- 单击确定。
- 对于触发器,选中插入和更新。
- 在功能区属性规则选项卡的属性规则组中,单击保存。
到目前为止,您已经创建了两个属性规则。 您创建了一个约束规则以确保四个测试字段不为空;您还创建了一个实时计算规则以自动填充 Inspection Test 字段。 在下一部分中,您将使用两个新的属性规则来测试编辑体验。
创建一个要素来测试属性规则
创建约束并实时计算属性规则后,即可测试编辑体验。 如需其他人与您共同收集数据,必须确保规则按预期运行。 您将创建一个路灯杆要素来测试编辑体验。
- 在 White Rock City 地图选项卡中,单击属性规则视图以返回到地图视图。
- 单击功能区上的编辑选项卡。 在要素组中,单击创建。
将创建的路灯杆要素基于移动工作人员之前收集的信息。 它具有以下属性:
- Bulb type - LED Rope
- Location - Intersection of Columbia Ave and Centre St.
- Hammer Test - 3
- Pole Condition - 2
- Wiring Condition - 5
- Panel Condition - 5
- 在创建要素窗格中,单击 LED Rope 模板。
- 在地图上,放大至 Intersection of Columbia Ave and Centre St 附近,然后单击。
注:
如果无法找到正确位置,可以选择其他路口。
地图上不会出现新要素。 相反,创建要素窗格中会显示一条错误消息,告知您未创建要素,因为它违反了约束属性规则。 该消息是您在创建规则时编写的消息。
该消息要求您在测试字段中填写测试结果。 必须遵守规则才能创建要素。
- 在 LED Rope 模板上,单击箭头按钮。
- 对于 Hammer Test,键入 3。 对于 Pole Condition,键入 2。 对于 Wiring Condition,键入 5。 对于 Panel Condition,键入 5。
- 再次单击地图以放置要素。
新路灯要素已成功创建。 在创建要素窗格中,错误消息将替换为已完成的消息。
在地图上,点要素显示为蓝色,而不是预期的紫色,因为它已被选中。 请勿清除选择内容。
- 在功能区编辑选项卡的管理编辑内容组中,单击保存。
- 在保存编辑内容窗口中,单击是。
约束属性规则成功阻止了包含无效测试值的新路灯要素的创建过程。
- 关闭创建要素窗格。
接下来,您将测试计算规则。 如果其运行正常,将自动使用四个测试值的平均值填充 Inspection Test Results 字段。
- 在功能区的编辑选项卡的选择组中,单击属性。
随即出现属性窗格。
注:
确保已选择位于 Columbia Ave 和 Centre St 的路灯要素。
- 在属性窗格中,找到 Inspection Test Results 字段。
该字段将设置为 3.75。 这是 Hammer Test、Pole Condition、Wiring Condition 和 Panel Condition 字段中值的平均值。
实时计算属性规则已成功填充 Inspection Test Results 字段。
- 在功能区的编辑选项卡的选择组中,单击清除。
约束规则可以停止创建过程直到正确填充重要字段,从而提高新数据的质量。 实时计算规则通过自动填充 Inspection Test Results 字段来提高性能和准确性,否则将手动计算该字段。 接下来,您将把重点从数据输入转移到评估现有数据的质量。
查找未通过检查测试的要素
您将创建一个验证规则来确定未通过检查测试的路灯杆要素。 验证属性规则用于确保现有要素满足属性条件。 验证规则不会自动运行,而是由用户通过错误检查器视图进行评估。 当违反规则时,会创建错误要素以供审查。
创建验证规则
您将创建一个验证属性规则来识别未通过检查的路灯杆。 根据您的工程要求,当检查测试结果值小于 2 时,检查测试被视为失败。 了解未通过检查测试的电线杆非常重要,这样可以便于城市分配适当的资源来重新测试、维修或更换它们。
- 在地图上方,单击属性规则:路灯选项卡以打开属性规则视图。
- 单击验证,然后单击添加规则。
- 在新建规则窗格中,对于规则名称,键入 Check for light pole features that failed inspection。
- 对于描述,键入 Returns features with inspection test values less than 2.
- 单击表达式按钮。 在表达式构建器窗口的表达式框中,复制并粘贴以下内容:
if ($feature.Inspection_Results < 2) return false return true
- 单击确定。
- 对于错误编号,键入 102。
- 对于错误消息,键入 Inspection test failed: This feature did not pass inspection.
- 对于严重性,选择 3。
严重性属性指示修复错误的重要性。 值 1 被认为是高严重性,5 被认为是低严重性。
- 在功能区属性规则选项卡的属性规则组中,单击保存。
- 关闭属性规则视图。
- 在快速访问工具栏上,单击保存。
评估验证规则
接下来,您将测试验证规则。 您在数据编辑期间评估了约束和实时计算规则。 但是,验证规则会根据现有要素按需运行,因此您将使用错误检查器视图来评估任何未通过检查的路灯要素。
- 单击功能区上的编辑选项卡。 在管理编辑组中,单击检查器。
错误检查器视图随即出现。 消息(请选择包含错误图层的地图)表示您必须先创建错误图层,然后才能开始。 错误检查过程将评估验证和批处理计算属性规则,并将发现的任何错误存储在错误图层中。 您将为 Street Lights 图层添加错误图层。
- 在内容窗格中,右键单击 Street Lights,然后单击添加错误图层。
注:
如果添加错误图层选项不可用,请关闭并重新打开 ArcGIS Pro。
名为 Error Layers 的新图层组随即出现在内容窗格中。 错误检查器视图中将出现一个空表。 将源设置为您刚刚创建的 Error Layers 图层组。
在评估验证属性规则是否存在错误之前,需要确保已评估正确的规则和所有要素。
- 在内容窗格中,右键单击 Street Lights,然后单击缩放到图层。
- 在错误检查器视图的工具栏上,单击评估规则旁边的箭头。
- 对于规则类型,确保已选中验证。
您在此工程中没有任何批处理计算属性规则,因此是否选中批处理计算均不会产生影响。
- 单击评估规则。
表中将显示两个错误要素。
错误要素为得分低于 2 且未通过检查的路灯杆。 在地图上,它们显示为红色方块。
接下来,您将解决这两个错误。
检查并解决错误
您将查看并解决验证规则揭示的两个错误。 您将为其中一个提供新的测试结果,并将另一个标记为异常,以便稍后进行后续审查。
- 在错误检查器视图中,单击第一个错误要素的行标题以将其选中。
- 如有必要,请重新打开属性窗格。
在属性窗格中,Error Layers: Point Errors 图层中的一个要素显示为选中状态。 您之前编写的错误编号和消息显示在属性表中。
稍后,您办公室中的其他人员将检查错误,因此提供有关导致错误的原因及其修复方法的信息非常重要。
- 在错误检查器视图工具栏中,单击要素。
在属性窗格中,将在 Street Lights 图层中显示要素 161 的新选择。 这是导致错误的功要素。
- 在属性窗格中,单击 161。 滚动属性表以找到 Inspection Test Results 字段。
Inspection Test Results 值为 1.75,小于通过得分 2。 根据这些测试结果,路灯 161 未通过检查。 Comments 字段不包含有关路灯杆何状况不佳的原因的信息。
为解决此问题,需要派移动工作人员重新检查路灯杆。 他们将返回更准确的新接线和面板测试结果。
- 在属性窗格中,对于 Wiring Condition,键入 3。 对于 Panel Condition,键入 3。
您在本教程中先前创建的实时计算属性规则将在要素更新期间生效,因此检查测试结果字段更新为 2.75。
- 在属性窗格中,单击应用。
您将选择切换到第二个错误要素及其关联的路灯要素。
- 在错误检查器视图中,选择第二行。 在视图的工具栏上,单击要素。
- 在属性窗格中,单击 774。
Inspection Test Results 值为 1.5,不足以通过检查。
没有可以检查此路灯杆的移动工作人员,因此会将错误标记为异常,直到您获得有关它的更多信息。
- 在错误检查器视图中,右键单击第二行的行标题,然后单击标记为异常。
- 在视图的工具栏上,单击评估规则。
第一个错误要素将消失,因为它不再处于未通过验证规则状态。 第二个错误要素特征仍然存在。 它在异常列中有一个绿色符号,表示它被标记为异常。
由于此错误要素被标记为异常,因此它将在多个评估会话中持续存在。 这样,您可以追踪该要素,直到重新评估或修复路灯杆。
- 关闭错误检查器视图和属性窗格。
- 在功能区的编辑选项卡的选择组中,单击清除。
- 在管理编辑内容组中,单击保存。 在保存编辑内容窗口中,单击是。
- 在快速访问工具栏上,单击保存。
您创建并应用了验证规则来识别两个未通过检查的灯杆要素。 您更正了一项要素的测试结果并将另一项标记为异常。 验证规则允许您评估数据的质量并纠正任何数据问题。
在本教程中,您创建并测试了三个属性规则以提高白石市路灯数据的质量。 您创建了一个约束规则,以确保所有新要素的四个测试字段均正确填充了测试结果值。 您创建了一个实时计算规则,以使用四个测试结果的平均值自动填充 Inspection Test Results 字段。 最后,您创建了一个验证规则来识别任何未通过检查的路灯杆。 您的操作提高了 Street Lights 图层的质量,这将有助于提高白石市的物理路灯质量。
您可以在教程库中找到更多教程。