操作方法
ArcGIS Arcade 是一种表达式语言,可用于在 Portal for ArcGIS Map Viewer 中配置弹出窗口。 Arcade 日期函数提供了创建日期对象和获取对象各种属性的方法。 例如,DateAdd() 和 DateDiff() 函数可用于根据指定的间隔调整所需的日期,而 Now() 函数可用于获取客户端当前的本地时间。
本文提供了计算 Portal for ArcGIS Map Viewer 弹出窗口中两个日期字段之间差异的步骤。 在此示例中,弹出窗口中显示的自上次消防栓检查以来的天数是通过引用“检查日期”字段中的字段值(如下图所示)和客户端当前的本地时间获得的。
var <variableName> = Now() var <variableName1> = $feature.<date_fieldName>;
var <variableName2> = Floor(DateDiff(<variableName>, <variableName1>, 'years'));
var <variableName3> = DateAdd(<variableName1>, <variableName2>, 'years');
var <variableName4> = DateDiff(<variableName>, <variableName3>, 'days');
if (IsEmpty($feature.<date_fieldName>)){ return "<textValue>"; } else if (<variableName2> >= <numberValue>) { return "<textValue1> " + <variableName2> + " <textValue2> " + Floor(<variableName4> , <numberValue1>) + " <textValue3>"; } else if (<variableName2> == <numberValue2>) { return "<textValue4> " + Floor(<variableName4> , <numberValue1>) + " <textValue3>"; } else if (<variableName2> == <numberValue1> && <variableName4> >= <numberValue>) { return "<textValue1> " + Floor(<variableName4> , <numberValue1>) + " <textValue3>"; } else if (<variableName2> == <numberValue1> && <variableName4> >= <numberValue2>) { return "<textValue1> " + Floor(<variableName4> , <numberValue1>) + " <textValue5>"; } else if (<variableName2> == <numberValue1> && <variableName4> < <numberValue2>) { return "<textValue6>"; }
以下代码块演示了完整的工作 Arcade 脚本。
var timeNow = Now(); var survey = $feature.DATEINSPECTED; var y = Floor(DateDiff(timeNow, survey, 'years')); var date1a = DateAdd(survey, y, 'years'); var d = DateDiff(timeNow, date1a, 'days'); if (IsEmpty($feature.DATEINSPECTED)){ return "-"; } else if (y >= 2) { return "Last Inspection: " + y + " years and " + Floor(d , 0) + " days ago."; } else if (y == 1) { return "Last Inspection: 1 year and " + Floor(d , 0) + " days ago."; } else if (y == 0 && d >= 2) { return "Last Inspection: " + Floor(d , 0) + " days ago."; } else if (y == 0 && d >= 1) { return "Last Inspection: " + Floor(d , 0) + " day ago."; } else if (y == 0 && d < 1) { return "Last Inspection: today."; }
下图显示了使用 ArcGIS Arcade 在弹出窗口中新添加的“上次检查(天)”字段,用于提供自上次检查消防栓以来的天数或年数。
文章 ID: 000028205
获取来自 ArcGIS 专家的帮助
下载 Esri 支持应用程序