操作方法
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 专家的帮助
立即开始聊天