Utilizar expresiones de Arcade en gráficos

Arcade es un lenguaje de expresión escrito para su uso en ArcGIS que puede realizar cálculos matemáticos, manipular texto y evaluar sentencias lógicas. Las expresiones Arcade son útiles para calcular nuevas variables sin necesidad de actualizar el esquema del dataset. También tienen la ventaja de ser dinámicas y basadas en datos, lo que significa que el resultado de una expresión se actualizará si cambian los datos que se utilizan en la expresión.

Arcade se puede utilizar para configurar gráficos de barras, gráficos circulares, gráficos de líneas, histogramas y diagramas de dispersión. Para crear o editar una expresión para una variable de gráfico que admita Arcade, haga clic en el botón Expresión de Arcade Botón Expresión de Arcade para abrir la ventana del constructor de expresiones.

Los siguientes ejemplos son posibles casos de uso para configurar gráficos utilizando Arcade.

Ejemplos de texto

Arcade proporciona muchas funciones que procesan los valores de texto para crear y configurar gráficos. Por ejemplo, puede hacer que un gráfico sea más legible formateando los valores de cadena que están en mayúsculas (CALIFORNIA) para utilizar mayúsculas y minúsculas (California). Esto se puede lograr con la función Proper en Arcade:


# Format "CALIFORNIA" as "California"
Proper($feature.STATE_NAME);

Para concatenar varios campos de cadena de caracteres en una única salida de texto, utilice la función Concatenate. El siguiente ejemplo combina el nombre de ciudad y el nombre del estado de cada entidad en una sola cadena de caracteres:


# Combine CITY_NAME (eg "LOS_ANGELES") and STATE_NAME (eg "CALIFORNIA") into "LOS_ANGELES, CALIFORNIA"
Concatenate($feature.CITY_NAME, ", ", $feature.STATE_NAME);

Por el contrario, puede haber escenarios en los que sería útil analizar una cadena de caracteres para buscar partes específicas contenidas dentro del texto. Por ejemplo, use la función Split para identificar el nombre de la ciudad dentro de una dirección (123 Main Street, Redlands, CA). El siguiente ejemplo divide direcciones en comas y utiliza la indexación de conjuntos para identificar el nombre de la ciudad:


# Split string on "," and return the second element (ie, the city name)
Split($feature.FULL_ADDRESS, ",")[1];

También puede usar estructuras de control en Arcade para volver a clasificar los valores de texto en función de las condiciones lógicas. En el siguiente ejemplo, la función Find se utiliza para agrupar eventos de tormentas que son tornados relacionados con una categoría Tornado, mientras que todos los eventos relacionados con tornados están agrupados en otra categoría:


if (Find($feature.EVENT_TYPE, "TORNADO") >= 0) {
    return "Tornado";
} else { 
    return "Other";
}

Ejemplos de fecha

Arcade proporciona muchas funciones para procesar campos relacionados con fechas. Como ejemplo, un dataset puede tener varios campos que proporcionan información de fecha, pero estos campos se deben combinar para crear un campo Fecha y utilizarlo en gráficos temporales. La función Date toma los componentes de fecha pertinentes y genera un valor de fecha:


Date($feature.YEAR, $feature.MONTH, $feature.DAY);

Para calcular una duración basada en dos fechas, utilice la función DateDiff. Por ejemplo, supongamos que un conjunto de datos de solicitud de servicio contiene un campo de fecha para cuando se abrió la solicitud y otro para cuando se cerró. El siguiente ejemplo calcula el número de días transcurridos entre dos valores de fecha:


DateDiff($feature.OPEN_DATE, $feature.CLOSE_DATE, "DAYS");

Arcade también ofrece funciones para analizar los detalles de un campo Fecha. Por ejemplo, para comprender los patrones del día de la semana de un campo de fecha, use la función ISOWeekday para devolver el día de la semana de una fecha:


ISOWeekday($feature.DATE);

Ejemplos numéricos

Arcade proporciona funciones y operadores para procesar valores numéricos que se pueden usar para crear un gráfico. Como ejemplo, utilice la función AreaGeodetic para normalizar una población por el área de la entidad. El siguiente ejemplo usa la función AreaGeodetic junto con el operador de división:


$feature.POPULATION / AreaGeodetic($feature, 'square-miles')

Arcade también proporciona funciones para operaciones matemáticas comunes. Por ejemplo, utilice la función Average para buscar el promedio de varios valores:


Average([$feature.SCORE1, $feature.SCORE2, $feature.SCORE3])

También puede haber casos en los que sería útil categorizar los datos numéricos. Por ejemplo, para un dataset relacionado con las características del automóvil, convierta los valores numéricos de millas por galón en categorías tales como Bueno, Normal y Malo:


if ($feature.MILES_PER_GALLON >= 30) {
    return "Good"
} else if ($feature.MILES_PER_GALLON >= 20) {
    return "Okay"
} else {
    return "Poor"
}