CÓMO
ArcGIS Arcade es un lenguaje de expresión que se puede utilizar para configurar elementos emergentes en Map Viewer de Portal for ArcGIS. Las funciones de fecha de Arcade proporcionan métodos para crear objetos de fecha y adquirir varias propiedades de los objetos. Por ejemplo, las funciones DateAdd() y DateDiff() se utilizan para ajustar la fecha en función de un intervalo especificado, y la función Now() se utiliza para obtener la hora local actual del cliente.
En este artículo se proporcionan los pasos para calcular la diferencia entre dos campos de fecha en el elemento emergente de Map Viewer de Portal for ArcGIS. En este ejemplo, el número mostrado de días antes de la última inspección de bocas de incendio en el elemento emergente se obtiene haciendo referencia a los valores de campo del campo Date Inspected (tal y como se ve en la siguiente imagen) y la hora local actual del cliente.
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>"; }
El siguiente bloque de código muestra el script de Arcade completo.
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."; }
La siguiente imagen muestra el campo Última inspección (días) recién agregado en el elemento emergente que utiliza ArcGIS Arcade para proporcionar un recuento de los días o años desde la última inspección de una boca de incendio.
Id. de artículo: 000028205
Obtener ayuda de expertos en ArcGIS
Descargar la aplicación de soporte de Esri