CÓMO

Calcular la diferencia entre dos campos de fecha en un elemento emergente mediante Arcade en Map Viewer de Portal for ArcGIS

Last Published: January 30, 2024

Descripción

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.

El elemento emergente que resalta el campo Date Inspected al que se debe hacer referencia a la hora de calcular el número de días desde la última inspección de bocas de incendio

Solución o solución alternativa

  1. Abra el mapa en Map Viewer de Portal for ArcGIS. Haga clic en Capas en la barra de herramientas Contenido (oscura) y seleccione la capa con el elemento emergente para editarlo. En este ejemplo, está seleccionada la capa Hydrant Painting for Collector.
La barra de herramientas (oscura) Contenido de Map Viewer con la pestaña Capas
  1. Haga clic en Elementos emergentes en la barra de herramientas Configuración (clara) y haga clic en Opciones > Expresiones de atributos.
El panel Elementos emergentes de Map Viewer utilizado para navegar al panel Expresiones emergentes de Map Viewer
  1. Haga clic en + Agregar expresión para abrir la ventana del editor de expresiones de Arcade.
  2. En la ventana del editor, especifique un nombre para la nueva expresión, según sea necesario.
  3. En el cuadro de diálogo Expresión, inserte la expresión de Arcade que aparece a continuación.
  1. Defina las fechas a las que se hará referencia.
var <variableName> = Now()
var <variableName1> = $feature.<date_fieldName>;
  1. Calcule la diferencia de fechas en años.
var <variableName2> = Floor(DateDiff(<variableName>, <variableName1>, 'years'));
  1. Cree una nueva fecha agregando los años a la fecha de inicio.
var <variableName3> = DateAdd(<variableName1>, <variableName2>, 'years');
  1. Calcule el número de días entre esas fechas.
var <variableName4> = DateDiff(<variableName>, <variableName3>, 'days');
  1. Defina las restricciones de los valores de campo que se van a mostrar en el elemento emergente.
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.";
}
  1. Haga clic en Probar para ver una vista previa del resultado de la expresión. Si se logra el resultado requerido, haga clic en Aceptar.
Especificar la expresión de Arcade en la ventana del editor de Map Viewer de Portal for ArcGIS
  1. Haga clic en el botón Anterior situado sobre la expresión de Arcade recién creada en el panel Expresiones de atributos.
El panel Expresiones emergentes de Map Viewer de Portal for ArcGIS con el icono Anterior sobre la expresión recién creada
  1. Haga clic en Lista de campos para expandir la lista de campos que se muestran en los elementos emergentes y haga clic en Seleccionar campos.
  2. Compruebe el campo de expresión en la sección Expresiones y haga clic en Hecho.

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.

El resultado final de la visualización del elemento emergente en Map Viewer de Portal for ArcGIS

Id. de artículo: 000028205

Recibir notificaciones y encontrar soluciones a problemas nuevos o comunes

Obtenga respuestas resumidas y soluciones de vídeo de nuestro nuevo chatbot de IA.

Descargar la aplicación de soporte de Esri

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Descargar la aplicación de soporte de Esri

Ir a opciones de descarga