创建断电地图
第一步是创建用作仪表盘地理焦点的地图。 您将在 ArcGIS Online 中使用 Map Viewer 创建一个 Web 地图并添加断电图层。 然后,设置图层及其弹出窗口的样式。 此 web 地图及其图层将成为其他仪表盘元素的数据源。
将图层添加至新地图
首先,您将在 ArcGIS Online 中为仪表盘创建一个地图。
- 登录到您的 ArcGIS 组织帐户。
- 在页面顶部,单击地图以打开新地图。
注:
根据您的组织和用户设置,您可能已打开 Map Viewer 经典版。ArcGIS Online 将提供两个地图查看器,用于查看、使用和创建地图。 有关可用和使用的地图查看器的详细信息,请参阅此常见问题解答。
本教程将使用 Map Viewer。
- 在内容(深色)工具栏上,单击添加,然后选择从 URL 添加图层。
- 在图层详细信息部分中,将以下 Web 服务复制粘贴到 URL 字段中:
https://services.arcgis.com/BLN4oKB0N1YSgvY8/arcgis/rest/services/Power_Outages_(View)/FeatureServer/0
注:
此图层用于加利福尼亚紧急救援管理办公室 (Cal OES) 追踪本州内断电信息。 有关此数据集的问题,可转至:GIS@caloes.ca.gov。
此图层的断电直接从公共设施断电地图获取,且图层每 15 分钟自动更新一次。 涉及以下公共设施公司:太平洋燃气电力公司、南加州爱迪生电力公司、圣地亚哥燃气电力公司、萨克拉曼多市政事业部 (SMUD)、洛杉矶水电局 (LADWP)。
此数据集包含的图层:
- 断电事件 - 此点图层用于显示来自所有公共设施的数据,非常适用于显示断电的大概位置以及驱动任意数量的仪表盘。
- 断电区域 - 此面图层用于显示断电的大致地理范围。
- 按县划分的断电 - 此图层用于按县汇总受影响客户的总数。 此图层对于显示州级别断电影响非常有用。
- 单击添加到地图。
地图现在显示加利福尼亚州的断电情况。 因为数据会频繁更新,因此您将设置图层的刷新间隔。
- 在属性窗格的刷新间隔部分中,打开自动刷新图层切换按钮。
- 键入 15 作为分钟数。
刷新间隔与图层的更新间隔相匹配。
- 在内容工具条上,单击底图。
- 在底图窗格中,选择街道(夜间)。
设定图层样式
公共设施中断表示计划内或由于故障而造成客户服务中断的事件。 中断位置通常由专门用来检测系统故障的远程设备报告。 默认情况下,地图上的事件分为计划和非计划两类。 此方法适用于对数据进行分类,但是您也可以设置图层样式来更好地区分这两种类型。
- 在内容工具栏上,单击图层。
- 在图层窗格中,单击Power Outages (View) - Power Outage Incidents 图层。
- 在设置(浅色)工具栏中,单击样式。
- 在样式窗格中,单击类型(唯一符号)样式的样式选项。
- 在断电类型下,单击非计划的符号。
- 在符号样式中的当前符号下,单击基本点。
- 在更改符号下,从类别下拉菜单中,选择萤火虫。 选择红色,然后单击完成。
- 单击计划的符号,然后选择绿色萤火虫符号并单击确定。
- 在样式选项中,单击完成以完成图层样式设置,然后单击完成以关闭样式窗格。
对两种中断类型进行更明显的符号化之后,您将应用聚类以视觉化断电聚集区。
- 在设置(浅色)工具栏上,单击聚合。
- 在聚合窗格中,打开启用聚合。
将默认启用聚类。
- 对于聚类,单击选项。
聚类窗格随即打开。
- 在聚类窗格中,对于聚类半径,向靠近低的方向拖动滑块。 对于大小范围,向左拖动右侧滑块。
发电厂图层现在已使用聚类符号化。 当您进行缩放时,将重心配置聚类以适应当前的比例。 每个聚类都使用其所代表的发电厂数量进行标注。
您现在将选择不同的底图,以便在地图上更好地突出发电厂要素。 由于该图层中的点使用明亮符号表示,因此可以将其放置在深色和中性底图上来构建对比度。
- 单击返回并关闭聚合窗格。
Power Outages (View) – Power Outage Incidents 图层样式随即更新。
配置弹出窗口
弹出窗口对于汇总地图上的给定数据点非常有用。 默认情况下,大多数弹出窗口会显示所有数据字段和值。 作为公共设施官员,您唯一感兴趣的是查看中断原因,预计修复时间以及相关的公共设施公司。 配置图层弹出窗口可以定制要查看的信息。
- 在图层窗格中,确保选中 Power Outages (View) - Power Outage Incidents 图层,然后在设置工具栏上,选择弹出窗口。
随即显示弹出窗口窗格。
- 在弹出窗口窗格中,单击标题,然后键入 Power Outage: {IncidentId}。
- 单击字段列表的选项按钮,然后选择删除。
- 单击添加内容,然后选择文本。
文本编辑器随即出现。 在编辑器中,可以使用静态文本与属性字段的组合来创建自定义弹出窗口。
- 在编辑器中,键入 { 并选择 Impacted Customers。
字段 {ImpactedCustomers} 随即添加到文本字段。
- 在 {ImpactedCustomers} 后,键入入空格并添加以下文本:
customers impacted。 预期电力恢复时间 {EstimatedRestoreDate}。
原因:{Cause}
有关详细信息,请联系 {UtilityCompany}。
- 单击确定以保存并关闭编辑器。
- 在地图上,放大以查看单处供电中断。
- 单击地图上的中断可查看弹出窗口。
如果单击聚类,您将看到聚类的默认弹出窗口。
- 在内容工具栏上,单击保存并打开,然后选择另存为。
随即显示保存地图窗口。
- 在保存地图窗口中,对于标题,输入加利福尼亚州断电地图并添加您的姓名缩写以使地图名称在组织中唯一。
- 对于标签,请键入 California、power、outages。
- 对于摘要,输入要用于仪表盘中的加利福尼亚州断电地图。
- 单击保存。
创建断电仪表盘
借助 ArcGIS Dashboards,您可以创建可供用户快速查看断电以及相关信息的仪表盘。 Dashboards 提供了用于可视化数据的多个配置选项。 利用高级格式化,您可以派生并可视化要素图层中不可用的数据。 您可以派生的第一条信息是断电持续时间,这表示每个断电事件从报告时间到当前时间的总时长(以小时和分钟计)。 您可以派生的第二条信息是可靠性影响指数(通常是指 SAIDI,系统平均中断持续时间指数),这表示按断电持续时间(以分钟计)划分的受影响客户总数。
创建仪表盘
- 如有必要,打开 California power outages map Web 地图。
- 在内容工具栏上,单击创建应用程序按钮,然后选择仪表盘。
ArcGIS Dashboards 随即在新选项卡中打开。
已基于 Web 地图的项目详细信息填写标题和标签。
- 对于摘要,输入此仪表盘显示加利福尼亚州当前的计划断电和非计划断电。
- 单击创建仪表盘。
ArcGIS Dashboards 将打开使用 California power outages 地图元素新创建的仪表盘。 您需要将仪表盘的主题颜色加深以匹配底图。
- 在仪表盘工具栏上,单击主题按钮。
随即显示布局窗格。
- 在布局下,针对主题,单击深色。
接下来,使用选择用来显示在深色背景中的颜色配置列表元素。
配置列表元素
要添加到仪表盘的第一个元素是列表。 使用列表来显示要素很有用,这里的要素是断电。 您可以使用一些高级格式化来配置列表以显示与断电相关的派生信息。
- 在仪表盘工具栏上,单击添加元素。
- 在地图元素上,单击左侧添加按钮并选择列表。
- 在选择图层窗口中,单击 Power Outages (View) - Power Outage Incidents。
- 在数据选项卡的排序方式部分,单击添加字段,然后选择开始日期/时间。
- 单击降序排列。
列表将进行排序,最新断电事件会显示在顶部。
- 单击列表选项卡。
列表将显示每个数据点的 OBJECTID 字段。 但是 OBJECTID 无法提供有关断电的任何信息。 尽管数据中已经提供了一些可用信息,但断电持续时间和可靠性指数尚不存在。 您可以使用 Arcade 表达式来计算上述数据。 Arcade 是一种灵活的表达式语言,可帮助您在 ArcGIS 中实时使用数据。 您可以使用 Arcade 对您的数据执行字段计算并自定义数据点的渲染方式。 您可以使用 Arcade 表达式编辑器来构建和应用 Arcade 表达式。
- 在列表选项中,单击高级格式化旁边的启用。
Arcade 编辑器随即出现。
注:
启用高级格式化后,系统定义的属性将不可用。 列表可视化的所有格式化将通过表达式来完成。
表达式部分用于构建表达式。 配置文件变量和函数选项卡用于查找您将在表达式中使用的元素。 配置文件变量选项卡包括用于帮助构建表达式的预定义变量列表。 例如,$datapoint 可让您访问数据中的字段。 函数选项卡可用于访问 Arcade 函数库。 您可以单击每个函数旁边的信息按钮,以查看关于参数、语法和使用方法的函数帮助。 借助 Arcade 表达式,您可以计算从添加报告到当前时间所持续的时长。 为此,您需要针对报告的断电时间和当前时间分别创建一个变量,并使用 Arcade 函数来计算差值。
- 单击弹出编辑器按钮。
高级格式化窗口出现。
- 在文本框中,删除当前表达式并输入 var dateOpened =。
- 将光标放在等号后面,添加一个空格,然后单击配置文件变量选项卡。
- 单击 $datapoint 的箭头。
- 在出现的变量列表中,单击 $datapoint.StartDate 变量。
将变量添加到代码行中。 此行会将 StartDate 值定义为报告的断电时间。
- 在 StartDate 后单击并按 Enter 键开始新行。
在下一行中,您将定义第二个变量,即当前时间。
- 输入 var currentTime =。
- 单击函数选项卡,在搜索栏中输入 now。 在结果列表中,选择 Now() 函数。
这会将函数添加到表达式。 Now() 函数将返回当前日期和时间。
接下来,您将使用已定义的两个变量以及 DateDiff 函数来计算耗用的时间。 DateDiff 函数将两个日期相减并以指定单位返回差值。 对于此计算,将以分钟为单位返回时间。
- 开始一个新行并输入 var minutesOpened = DateDiff(currentTime, dateOpened, 'minutes');
完整 Arcade 代码如下所示:
var dateOpened = $datapoint.StartDate var currentTime = Now() var minutesOpened = DateDiff(currentTime, dateOpened, 'minutes');
计算将返回断电处于活动状态的分钟数。 但是,有时断电会持续数小时或数天。 在这种情况下,查看分钟数就不够合理了。 您可以使用以 Arcade 形式编写的函数来设置耗用时间的显示格式,以显示分钟、小时和天数。
接下来,您将添加函数以格式化经历的时间。
- 按两次 Enter 键,然后复制并粘贴以下函数语句:
//Define the function name. function formatElapsedTime(numMinutes) { //The elapsed time of an outage is not always a whole number. numMinutes = Floor(Abs(numMinutes)); //Using the Floor function, you can round down the time to number of hours and days. var numHours = Floor((numMinutes/60),0); var numDays = Floor((numMinutes/(60*24)),0); //Using a When logic function, you can append the unit prefix to the value. var elapsedTime = When( numHours < 1, numMinutes + 'm', numDays < 1, numHours + 'h ', numDays + 'd ' ); return elapsedTime; }
注:
查看表达式中的备注(备注以 // 开头),以确认函数每个部分的作用。
此函数会对分钟数进行舍入以得到整数,然后对这些舍入的分钟数向下取整来计算小时和天数。 使用 When 逻辑函数,此函数随即附加适当的单位前缀。
现在,您即可定义最终断电持续时间变量。 此行将创建名称为 timeFormatted 的变量,用于保存刚刚创建的 formatElapsedTime 函数并应用到 minutesOpened 变量来正确显示耗用时间的结果。
- 在函数之后再添加一行并键入 var timeFormatted = formatElapsedTime(minutesOpened);
在计算断电持续时间后,现在您可以计算可靠性影响指数。 可靠性影响指数通过计算断电持续时间所影响的客户数来确定。
- 再添加一行并键入 var reliabilityIndex = Floor(($datapoint["ImpactedCustomers"]/minutesOpened),2);
新变量将使用 Impacted Customers 数据点来除以先前创建的 minutesOpened 变量。 由于此值很可能是小数,因此在整个计算中应用 Floor 函数来将此值的数字舍入为两位小数。
现在您已得到可靠性影响指数值,因此可以确定哪些断电更为严重或可能更需要及时关注。 为了更轻松地在列表中定位这些断电,您将创建一个颜色变量,以高亮显示可靠性影响指数大于 1 的事件。
- 再添加一行并键入 var severityColor = IIF(reliabilityIndex > 1, '#C22E00', '#363636')
变量使用 IFF 函数,此函数将返回指定值,在本示例中,如果条件为真则返回一种颜色,如果值为假,则返回备用值。 在本示例中,如果可靠性影响指数的值高于阈值 1,则颜色为红色。 否则,颜色为灰色。
得到最终变量 timeFormatted、reliabilityIndex 和 severityColor 后,您会将其返回到表达式中。 这将允许您在行项目模板中参考这些变量,将其作为新属性填充到列表项目。
- 在表达式末尾添加下列行和类型:
return { attributes: { timeFormatted: timeFormatted, reliabilityIndex: reliabilityIndex, severityColor: severityColor } }
您的 Arcade 编辑器将如下所示:
完整代码为:
var dateOpened = $datapoint.StartDate var currentTime =Now() var minutesOpened = DateDiff(currentTime, dateOpened, 'minutes'); //Define the function name. function formatElapsedTime(numMinutes) { //The elapsed time of an outage is not always a whole number. numMinutes = Floor(Abs(numMinutes)); //Using the Floor function, you can round down the time to number of hours and days. var numHours = Floor((numMinutes/60),0); var numDays = Floor((numMinutes/(60*24)),0); //Using a When logic function, you can append the unit prefix to the value. var elapsedTime = When( numHours < 1, numMinutes + 'm', numDays < 1, numHours + 'h ', numDays + 'd ' ); return elapsedTime; } var timeFormatted = formatElapsedTime(minutesOpened); var reliabilityIndex = Floor(($datapoint["ImpactedCustomers"]/minutesOpened),2); var severityColor = IIF(reliabilityIndex > 1, '#C22E00', '#363636') return { attributes: { timeFormatted: timeFormatted, reliabilityIndex: reliabilityIndex, severityColor: severityColor } }
- 单击窗口底部的完成按钮。
- 在列表选项窗格中,向下滚动到表达式文本框下方,在行项目模板中单击源。
Dashboards 允许您使用自定义 HTML 设置列表项目的格式。 与使用高级格式化配合使用,可让您创建不属于系统定义属性一部分的自定义可视化。 在行项目模板字段中,您可以使用刚刚创建的表达式与 HTML 来设置列表项目的显示方式。
- 删除 <p>{OBJECTID}</p> 行。
- 将下列内容复制并粘贴到编辑器中:
<div style="background-color:#363636; border-left:3px solid white; padding:0.4rem 0.3rem 0.3rem 0.6rem"> <p><span style="font-size:16px; opacity:1">Time elapsed: {expression/timeFormatted}</span></p> <p><span style="font-size:14px; opacity:1; padding:1px">{UtilityCompany} - {County}</span></p> <p><span style="background-color:{expression/severityColor}; border-radius:5px; font-size:14px; opacity:1; padding:1px 6px">SAIDI: {expression/reliabilityIndex}</span></p> </div>
第一个标签 <div style> 决定结构行项目。 在 div 样式内,您将确定背景颜色,边框和行项目填充。
在使用段落标签 <p> 的后续行中,决定包括在行项目的每条信息的格式。 对于您的列表,您需要显示新计算的耗用时间、公共设施公司以及可靠性影响指数。
对于每个 <p> 标签,您可使用 <span style> 标签和任何样式设置属性确定其样式。 在 <p> 标签内,您将确定在行项目中显示的文本。 例如,在第一个 <p> 标签中,您使用显示文本 "Time elapsed:" 并在其后附加耗用时间表达式。
- 单击源以预览您的列表格式。
- 单击完成。
现在,每个列表项会显示耗用的时间、相关的公共设施公司以及可靠性影响指数 (SAIDI) 值。 当值高于阈值时,该值将以红色高亮显示。
配置断电指示器
现在您已拥有可逐条列记所报告断电的列表,下一步是添加指示器。 指示器用于提供处于活动状态的断电数量的简要汇总。 除了查看活动状态的断电外,您还可以使用参考值、高级格式化和自定义 HTML 来创建断电情况报告警示。
- 在仪表盘工具栏上,单击添加元素。 指向地图元素,单击右侧的添加按钮,然后单击指示器。
- 在指示器 - 选择图层窗口中,单击 Power Outages (View) - Power Outage Incidents。
指示器窗口随即显示。
- 在数据选项卡上,展开参考部分。
- 对于参考类型,选择统计数据。
将使用参考值来确定何时报告新断电。 您将对值进行过滤,使得仅包括最近 5 分钟内的断电。 这会将您的新断电基线设置为 5 分钟。
- 在过滤器旁边,单击过滤器按钮。
- 在过滤器下,构建以下表达式:
- 对于条件字段,单击开始日期/时间。
- 对于运算符,选择在过去。
- 对于值,输入 5,对于单位,选择分钟。
获得参考值后,您将使用高级格式化设置将添加到指示器标题的数据警示。
- 单击指示器选项卡。
- 对于高级格式化,单击启用。
借助 Arcade,您将使用 IFF 逻辑函数创建用于确定何时显示新断电警示的变量。 您的条件基于您配置的参考值。 条件将表明:如果最近 5 分钟内报告的断电计数大于零,则显示消息。 如果不大于零,则将消息隐藏。
- 在编辑器中,在定义变量的前几行之后,添加一行并输入 var visibility = IIF($reference.count_ObjectID > 0, 'visible', 'hidden')。
接下来,您将返回可视条件以及指示器显示的其余信息。 您也可以创建当发生新断电时将显示的消息。 在本示例中,您会将消息配置为显示“最近 5 分钟报告的新断电”。
- 在编辑器中,删除从 return { 到最后一行的代码块。
- 在其位置上复制并粘贴下列内容:
return { middleText: $datapoint["count_ObjectID"], middleTextMaxSize: 'large', bottomText:'Active outages', bottomTextMaxSize: 'medium', attributes: { visibility: visibility, message: 'New outage reported in the last 5 mins' } }
返回语句将是用于定义不同指示器属性的位置。 对于此指示器,您仅使用中间和底部文本区域。 您也可以定义在可见性为真时随之显示的消息的可见性变量。
提示:
您可以使用高级格式化定义指示器的所有部分。 这些属性也可以使用指示器的标准配置设置进行定义。 有关可以定义的指示器属性的完整列表,请参阅指示器中的高级格式化。
- 单击常规选项卡。
- 在常规选项窗格中,对于标题部分,单击编辑。
- 在富文本编辑器中,单击源。
- 将下列内容复制并粘贴到编辑器中:
<div style="background-color:#de290033; border-left:2px solid #de2900; box-shadow:0 4px 6px 0 hsla(0,0%,0%,0.2); color:##de2900; margin-bottom:0.4rem; margin-left:0.4rem; margin-right:0.4rem; margin-top:0.1rem; padding:0.7rem; visibility: {expression/visibility}; width:98%"> <span style="font-size:16px">{expression/message} </span> </div>
这里将使用 HTML 定义消息的样式属性。 在第一个标签中,<div style> 用于确定结构。 在 <div style> 标签中,将设置背景颜色和边框等几个属性。 消息的可见性由您之前创建的可见性表达式控制。
- 单击源预览您的消息。
- 单击完成。
现在,您的断电指示器会显示状态为活动的断电总数。
最近 5 分钟内报告了断电的情况下,会在顶部显示警示消息。
配置客户影响指示器
您将添加的最后一个元素是用于汇总受断电影响的客户数的指示器,通过断电类型为计划或非计划来进行细分。 知晓受影响客户数量,对于评估这一情况而言非常重要。
- 在仪表盘工具栏上,单击添加元素。 指向指示器元素,然后单击顶部的添加按钮。 选择指标。
- 在指示器 - 选择图层窗口中,单击 Power Outages (View) - Power Outage Incidents。
- 在数据选项窗格中,对于统计数据,选择总和。 对于字段,选择 Impacted Customers。
- 展开参考部分,对于参考类型,选择统计数据。
参考部分中显示更多选项。
- 对于过滤器,单击过滤器按钮。
- 从条件字段下拉列表中,选择断电类型。
- 对于运算符,确认已选择等于。 在值选项卡中,选择 Planned。
- 对于统计数据,选择总和。 对于字段,选择 Impacted Customers。
现在,已得到要在您的指示器显示中使用的值和参考值。 这里的值是受影响的客户的总数,参考值是计划断电受影响对象的数量。
- 单击指示器选项卡。
可以使用大括号 {} 或使用字段:{} 按钮将值、参考值和预定义计算直接加入到指示器的可视化中。
- 在指示器选项窗格中,输入以下内容:
- 对于顶部文本,输入 Impacted customers。
- 对于中间文本,输入 Total:{calcualted/value}。
- 对于底部文本,输入 Planned:{calculated/reference} Unplanned: {calculated/difference}。
- 展开值格式化部分。
- 关闭单位前缀。
这样即可查看受影响客户的确切值。
- 单击完成。
现在,指示器将会填入受影响客户的总数,以及受计划断电和非计划断电影响的客户数量。
接下来,排列仪表盘指示器。
- 指向在指示器列的左边缘以获得调整大小的光标并拖动列以使地图变大,指示器变小。
- 在地图元素中,缩放和平移地图,让数据以加利福尼亚州为中心。
- 如有必要,关闭布局面板以更好地预览您的仪表盘。
- 在仪表盘工具栏上,单击保存并选择保存以保存仪表盘。
在本次教程中,您创建了可用于快速查看加利福尼亚州断电情况的断电地图以及仪表盘。 利用列表和指示器元素的高级格式化,派生并可视化不可用的数据。 除了可视化新信息外,还能够创建可在发生断电时显示的警示。 可在发生断电时查看断电情况,从而帮助市、县、州做出最明智的决策并且更加有效地调用资源来解决问题。
您可以在教程库中找到更多教程。