Graficar en Dashboards resultados de una pregunta de selección múltiple en Survey123 con Arcade

328
0
08-30-2024 04:09 PM
XanderBakker
Esri Esteemed Contributor
2 0 328

Preguntas de selección múltiple en Survey123

Cuando en una encuesta usamos preguntas de tipo selección múltiple el resultado se guarda en un campo de texto donde los ítems seleccionados se separen con una coma. En el ejemplo abajo el resultado se almacena como “Reducción del CO2 emitido,Ahorro en costos de energía electrica”:

Dashboard - pregunta selección múltiple.png

Si visualizamos la información en un gráfico de barras el resultado puede verse así y no nos informe de manera fácil cual respuesta es más frecuente:

Dashboard - grafico original.png

Con una expresión de datos en Arcade es posible crear un conjunto de datos (featureset) en memoria y usar estos datos para un elemento en ArcGIS Dashboards. Al agregar un elemento de “Gráfico de serie” abre la ventana donde debemos seleccionar la capa para alimentar el elemento. En este caso seleccionamos “Nueva expresión de datos”:

Dashboard - nueva expresión de datos.png

En el editor de Arcade se puede notar que para una expresión de datos no hay variables de perfil:

Dashboard - no tiene variables.png

Es necesario conectarnos a la capa de la encuesta, analizar los datos, crear un esquema para el resultado del análisis y, llenar el esquema y devolverlo como featureset.

Una explicación de la expresión Arcade que se puede encontrar al final de este artículo:

  • Línea 2: definir el portal donde están los datos
  • Línea 3: definir una consultar para filtrar datos de interés
  • Línea 4: acceder a la capa de la encuesta y filtrar los datos con la consulta definida
  • Línea 6 a 22: crear un diccionario para almacenar los resultados, recorrer cada registro de la encuesta, separar los motivos de la respuesta de selección múltiple y almacenar el conteo de cada motivo.
  • Línea 24 a 30: crear un esquema de datos con 2 campos y sin geometría. Un campo para registrar el motivo y otro campo para almacenar el conteo
  • Línea 32 a 40: leer los resultados del diccionario y escribirlos al esquema de datos generado anteriormente
  • Línea 43: Devolver el esquema (diccionario) como featureset

Al ejecutar la expresión se obtiene un featureset con cada motivo separado y con su respectivo conteo:

Dashboard - featurset resultado.png

Así el gráfico que resulta es más fácil de interpretar:

Dashboard - grafico resultado.png

 

El código Arcade

// 1: acceder a la capa de proyectos
var spx = Portal('https://utility-esri-co.maps.arcgis.com');
var sql = "Motivo <> ''";
var proyectos = Filter(FeatureSetByPortalItem(spx, 'bf4a31341a5d49be90de6ce471a0b647', 0, ["Motivo"], false), sql);

// 2: crear estadísticas por motivo
var dct = {}; 
var conteo = 0;
for (var proyecto in proyectos) {
    var motivos = proyecto["Motivo"];
    var lst = Split(motivos, ',');
    for (var i in lst) {
        var motivo = lst[i];
        if (HasKey(dct, motivo)) {
            conteo = dct[motivo]+1;
        } else {
             conteo = 1;
        }
        dct[motivo] = conteo;
    }
}
Console(Text(dct));

// 3: crear esquema de datos para featureset el resultado
var Dict = {  
    'fields': [
        {'name': 'Motivo', 'type': 'esriFieldTypeString' },  
        {'name': 'Conteo','type': 'esriFieldTypeInteger'}],
    'geometryType': '',   
    'features': []};  

// 4: llenar esquema con el resulatdo del análisis
var index = 0;  
for (motivo in dct) {   
    Dict.features[index] = {   
            'attributes': {   
                'Motivo': motivo,
                'Conteo': dct[motivo]
            }}   
    index++; };  

// 5: convertir a FeatureSet y devolver resultado
return FeatureSet(Text(Dict));

 

About the Author
Solution Engineer for the Utilities Sector @ Esri Colombia - Ecuador - Panamá sr GIS Advisor / Python - Arcpy developer / GIS analyst / technical project leader / lecturer and GeoNet moderator, focusing on innovations in the field of GIS. Specialties: ArcGIS, Python, ArcGIS Enterprise, ArcGIS Online, Arcade, Configurable Apps, WAB, Mobile Apps, Insights, Spatial Analysis, LiDAR / 3D Laser Scanning / Point Clouds. UNME http://nl.linkedin.com/in/xanderbakker/ http://www.slideshare.net/XanderBakker http://www.scribd.com/xbakker http://twitter.com/#!/XanderBakker