Agregar valores en entidades relacionadas

Normalmente, las entidades se simbolizan en un mapa basándose en sus valores de atributos. Por ejemplo, ciudades simbolizadas mediante la población o carreteras simbolizadas mediante clasificaciones de carreteras. A veces es necesario simbolizar las entidades mediante valores agregados calculados. Algunos ejemplos de valores calculados son los valores mínimos, los valores máximos, los valores medios o los totales. Estos son valores que se calculan a partir de los atributos de un conjunto agregado de valores.

Escenarios de datos temporales

Hay dos escenarios principales en los que resulta útil simbolizar datos con valores agregados.

Datos de estaciones con una serie temporal

Se trata de los datos de una cantidad que cambia y que se registra en una ubicación con el paso del tiempo. Las entidades se observan, se recopilan o se prevén en esas ubicaciones a lo largo del tiempo a intervalos regulares o irregulares. Algunos ejemplos son la temperatura, las lluvias, el nivel de agua, la salinidad y las descargas medidas en estaciones meteorológicas o en estaciones de supervisión situadas a lo largo de arroyos.

Puede que desee simbolizar las entidades de la estación meteorológica por el total de lluvias de julio o por la temperatura anual más alta o más baja. Para visualizar los datos de esta forma, modele los datos para que las ubicaciones fijas se almacenen en una clase de entidad y los datos observados se almacenen en una tabla relacionada, junto con la atribución de fecha y hora.

Datos dispersos con registros de tiempo

Se trata de entidades que representan eventos ocurridos en un punto temporal concreto. Por ejemplo, ubicaciones de tornados, direcciones de clientes, pacientes ingresados en hospitales y ubicaciones de delitos.

Puede que desee ver el total de pérdidas causadas por los tornados, el total de compras o el total de pacientes agregados a entidades poligonales como, por ejemplo, provincias, distritos u otros límites administrativos. Para visualizar los datos de esta forma, modele los datos para que las ubicaciones se almacenen en una clase de entidad con atribución de fecha y hora.

Preparar los datos para la visualización agregada

Para visualizar entidades con resultados agregados, tenga en cuenta lo siguiente:

  • Tipo de agregación: determine si se deben mostrar los totales, los valores mínimos, máximos o medios, o cualquier otra métrica.
  • Visualizar entidades: determine las entidades que se deben mostrar en los resultados agregados. Estas pueden ser iguales o distintas a las entidades con observaciones medidas. Por ejemplo, puede visualizar el total de lluvias anuales en cada estación meteorológica o el total de lluvias anuales (medidas en entidades de puntos de una determinada estación meteorológica) basándose en un condado o en los límites de una cuenca hidrográfica.
  • Parámetros de consulta:
    • Tiempo: determine la extensión temporal y el intervalo de tiempo con los que se van a mostrar los resultados agregados. Utilice el control deslizante de tiempo para definirlos dinámicamente. Por ejemplo, para los resultados agregados diarios, defina la extensión temporal y el intervalo de tiempo en el control deslizante de tiempo en un día.
    • Rango: puede que desee agregar resultados solo para un subconjunto de entidades. Por ejemplo, para agregar mediciones de salinidad entre 0 y 50 metros y entre 50 y 75 metros, utilice un parámetro de rango y el control deslizante de rango.
    • Filtros de consulta: para ver los patrones de los datos delictivos agregando el tipo de delito a cada distrito policial, utilice un parámetro discreto para establecer un filtro de consulta.
    Los parámetros de consulta son opcionales en este flujo de trabajo. Consulte Definir parámetros en una capa de consulta para obtener información sobre cómo agregar parámetros de rango y cómo agregar filtros utilizando parámetros discretos.

Ejemplo de resultados agregados

Supongamos que existe una clase de entidad llamada weather_stations que almacena las ubicaciones de las estaciones meteorológicas. La entidad de cada estación se identifica de forma exclusiva mediante el valor almacenado en el campo station_id. Este campo se utiliza para vincular las estaciones con los registros de observación relacionados en una tabla llamada observed_rainfall. Esta tabla almacena los registros de las lluvias observadas, recopilados durante un tiempo en la misma ubicación. Se incluye el campo station_id para vincular con la clase de entidad de las estaciones; el campo rainfall_cm, que almacena las precipitaciones diarias en centímetros; y el campo collection_date, que almacena la fecha de los eventos de precipitaciones.

Calcular los resultados agregados dinámicamente con parámetros de capa de consulta

El objetivo es calcular el total de lluvias durante un determinado período (por ejemplo, un mes, un año o cualquier extensión temporal personalizada) en cada estación y simbolizar las estaciones mediante el total de lluvias calculado para esa extensión temporal. Para realizarlo existen dos enfoques.

El primer enfoque es calcular los resultados agregados dinámicamente, utilizando los siguientes métodos simples o avanzados, al definir los parámetros de capa de consulta. El segundo enfoque implica calcular previamente los resultados utilizando herramientas de geoprocesamiento o funciones de base de datos.

Ejecutar la herramienta de geoprocesamiento Crear capa de consulta de agregación

Puede ejecutar la herramienta Crear capa de consulta de agregación para generar una capa de consulta y definir los parámetros de consulta para mostrar los resultados. Este es el enfoque más flexible de los dos y garantiza que siempre se van a mostrar los resultados más actuales. Esta herramienta utiliza funcionalidades de agregación de SQL de base de datos y capacidades de unión para resumir, agregar y filtrar información.

La herramienta Crear capa de consulta de agregación permite habilitar el tiempo en la capa de consulta para ver dinámicamente los distintos periodos de tiempo en lugar de tener que predefinir y calcular un resultado para cada rango de tiempo deseado.

  1. Con el mapa abierto, en la pestaña Análisis, en el grupo Geoprocesamiento, haga clic en Herramientas Herramientas.
  2. En el panel Geoprocesamiento, en la pestaña Cajas de herramientas, haga clic en Herramientas de administración de datos > Vistas de capas y tablas > Crear capa de consulta de agregación. Haga clic en la herramienta para abrirla.
  3. Siguiendo el escenario de ejemplo, defina las propiedades de la herramienta de la siguiente manera:
    • En la pestaña Parámetros, establezca el parámetro Clase de entidad de destino en la clase de entidad weather_stations.
    • Establezca observed_rainfall como el parámetro Tabla de resumen.
    • Establezca los campos de unión relacionado y de destino en station_id, e introduzca un nombre de capa de salida.
    • Elija SUM como el tipo de agregación del campo de resumen. En Nombre de campo(s), elija rainfall_cm.
    • En Definiciones de parámetro, elija Rango como el tipo de parámetro y especifique un nombre, por ejemplo, timeWindow. Esta configuración habilita el tiempo en la capa de consulta.
    • Defina el parámetro Campo o expresión como el campo collection_date.
    • Especifique el parámetro Tipo de datos como Fecha.
    • Revise y configure cualquier otro parámetro según sea necesario. Según las opciones anteriores, algunas se establecen automáticamente.
  4. Ejecute la herramienta. La capa de consulta con tiempo habilitado se agrega al mapa y al panel Contenido.
  5. Abra la tabla de atributos de la capa de consulta. Un campo adicional denominado SUM_rainfall_cm muestra el total de lluvias con todos los registros.

Puede habilitar el control deslizante de tiempo y navegar hasta cualquier extensión de tiempo. A medida que navega, los valores se vuelven a calcular para la extensión de tiempo actual del mapa. Opcionalmente, puede utilizar atributos para simbolizar y etiquetar entidades de puntos de una estación meteorológica. Para obtener más información sobre esta herramienta, consulte Crear capa de consulta de agregación.

Generar una capa de consulta manualmente

En algunos casos, es posible que necesite generar la capa de consulta manualmente si la consulta utiliza palabras clave o parámetros avanzados. A continuación presentamos algunos ejemplos:

  • Parámetros discretos predefinidos, como view_scale y view_extent
  • Consultas SQL con más de una unión o una unión externa

Este planteamiento tiene sus desventajas. Entre ellas se incluyen:

  • Puede que exista una carga adicional en la base de datos porque los resultados agregados se calculan cada vez que navega por el mapa, utiliza el control deslizante de tiempo o abre la tabla de atributos. Esta carga adicional es insignificante para los datasets más pequeños o cuando la ventana de tiempo devuelve subconjuntos relativamente más pequeños, incluso con datasets grandes.
  • Este planteamiento requiere que los datos estén almacenados en una base de datos corporativa. Este enfoque no se puede utilizar con geodatabases de archivos ni con shapefiles.

Si sus datos se actualizan con frecuencia, plantéese la posibilidad de transferir los datos a una base de datos corporativa y de aceptar la carga adicional en la base de datos. Asegúrese de seguir las prácticas recomendadas para el mantenimiento de la base de datos, como la creación de índices.

Siga estos pasos para generar una capa de consulta manualmente:

  1. En la pestaña Mapa del grupo Capa, abra el menú Agregar datosAgregar datos y haga clic en Capa de consulta Agregar capa de consulta.
  2. En el cuadro Consulta, cree una consulta SQL que devuelva el resultado agregado.

    Seleccione el total de lluvias para cada estación en la tabla observed_rainfall.

    
    SELECT   station_id, SUM(rainfall_cm) AS total_rainfall
    FROM     observed_rainfall
    GROUP BY station_id

    Una los resultados a la clase de entidad weather_stations. De esta forma se obtiene el total de lluvias utilizando todos los registros de la tabla observed_rainfall.

    
    SELECT  w.*, r.total_rainfall
    FROM    weather_stations AS w 
    INNER JOIN
            (SELECT   station_id, SUM(rainfall_cm) AS total_rainfall
             FROM     observed_rainfall
             GROUP BY station_id) AS r 
    ON w.station_id = r. station_id

    Defina la extensión temporal en la cláusula WHERE para calcular los resultados agregados entre el 1 de junio de 2016 y el 30 de junio de 2016.

    
    SELECT  w.*, r.total_rainfall
    FROM    weather_stations AS w 
    INNER JOIN
            (SELECT   station_id, SUM(rainfall_cm) AS total_rainfall
             FROM     observed_rainfall
             WHERE    collection_date >= '6/1/2016' AND collection_date <= '6/30/2016'
             GROUP BY station_id) AS r 
    ON w.station_id = r.station_id
  3. Haga clic en Siguiente para completar el resto de instrucciones en el cuadro de diálogo Nueva capa de consulta y agregue la capa de consulta al mapa actual.
  4. Simbolice la capa para mostrar las estaciones meteorológicas con el total de lluvias en cada ubicación para junio de 2016. Por ejemplo, puede definir el tamaño de las entidades según el total de lluvias utilizando símbolos graduados o proporcionales o puede utilizar variaciones de color para cada estación mediante símbolos graduados o de color sin clasificar.

Para cambiar la extensión temporal, por ejemplo, para ver la misma visualización, pero desde el 1 de agosto hasta el 15 de agosto, debe abrir el origen de la capa de consulta y cambiar la cláusula WHERE. Le recomendamos que utilice el control deslizante de tiempo para realizar este cambio. Para utilizar el control deslizante de tiempo para modificar la cláusula WHERE, debe utilizar los parámetros de la sentencia SQL.

Siga estos pasos para cambiar la extensión de tiempo:

  1. Haga clic con el botón derecho en la capa en el panel Contenido y haga clic en Propiedades Propiedades.
  2. En la pestaña Fuente, en la fila Consulta de la tabla, haga clic en Editar consulta Editar metadatos. La consulta se visualiza en el cuadro de texto Consulta.
    Sugerencia:

    Para que el texto de la consulta sea más fácil de leer, puede ampliarlo pulsando la tecla Ctrl mientras gira la rueda del ratón hacia delante.

  3. Reemplace WHERE collection_date >= '6/1/2016' AND collection_date <= '6/30/2016' por un parámetro de rango. Los parámetros de rango se declaran con el prefijo ::r:.

    La cláusula WHERE se reemplaza por un parámetro de rango llamado TimeVar.

    
    SELECT  w.*, r.total_rainfall
    FROM    weather_stations AS w 
    INNER JOIN
            (SELECT   station_id, SUM(rainfall_cm) AS total_rainfall
             FROM     observed_rainfall
             WHERE    ::r:TimeVar
             GROUP BY station_id) AS r 
    ON w.station_id = r.station_id
  4. Los parámetros aparecen en la consulta SQL en negrita e incluyen un botón Editar Editar metadatos junto a ellos. Haga clic en el botón para definir las propiedades del parámetro como sigue:
    • En Campo o expresión, elija collection_date.
    • En Tipo de datos, elija Fecha.
    • Active Valores predeterminados.
    • Establezca el rango de valores predeterminado en 6/1/2016 como 6/30/2016.
  5. Haga clic en Hecho.
  6. En el cuadro de diálogo Editar consulta, haga clic en Validar para asegurarse de que no hay errores.

La capa ahora está habilitada para el tiempo porque el parámetro de rango hace referencia a un campo de fecha y hora. Las capas habilitadas para el tiempo se pueden controlar con el control deslizante de tiempo. Por ejemplo, utilice el control deslizante para elegir una extensión temporal y las estaciones meteorológicas se mostrarán con el total de lluvias calculado dinámicamente para esa extensión temporal.

  • Para el total mensual, defina el valor de Intervalo de tiempo actual e Intervalo de paso en un mes.
  • Para una media acumulada, defina el valor de Intervalo de tiempo actual en un mes y el Intervalo de paso en un día. En este caso, cada vez que haya clic en un intervalo en el control deslizante de tiempo, este se mueve al siguiente día y muestra los resultados para un mes desde ese día.

Sugerencia:

En la tabla de atributos, en la pestaña Vista, active los filtros de Tiempo y Extensión para mostrar solo las entidades que están visibles en el mapa. De lo contrario, los resultados se calcularán para todas las entidades de toda la tabla, tarea que puede tardar si la tabla contiene muchos registros.

Calcular previamente los resultados

Este enfoque es idóneo cuando trabaja con datos que apenas se actualizan y con una extensión temporal predefinida aceptable. En este caso, calcule previamente los resultados agregados para disminuir la carga en la base de datos cada vez que se actualiza el mapa, se abre una tabla de atributos o se consulta la capa.

Estas son algunas de las desventajas de este enfoque:

  • Debe realizar estos pasos cada vez que se actualizan los datos.
  • No es flexible. Para visualizar entidades con resultados semanales y anuales, por ejemplo, necesita dos tablas separadas: una para almacenar los resultados agregados para una semana y otra para almacenar los resultados anuales.
  • No puede utilizar el control deslizante de tiempo con este enfoque.

Hay dos formas de calcular previamente resultados agregados.

Utilizar el geoprocesamiento

En el ejemplo siguiente se detallan los pasos para calcular previamente la media mensual de lluvias para cada estación meteorológica utilizando herramientas de geoprocesamiento.

  1. Agregue un nuevo campo de tipo entero a la clase de entidad denominada month para representar el mes.
  2. Utilice la herramienta Calcular campo para actualizar los registros.

    Defina el parámetro Expresión como month = getMonth(!DateTime!).

    Introduzca lo siguiente en el parámetro Codeblock. En este ejemplo, v es el valor del atributo datetime.

    
    from datetime import datetime
    def getMonth(v):
        d = datetime.strptime(v, "%m/%d/%Y")
    return d.month
  3. Utilice la herramienta Estadísticas de resumen para crear una tabla con los resultados resumidos. En este ejemplo, el resumen es el total mensual de lluvias para cada estación. Introduzca los parámetros como sigue:
    • Campo de estadísticas: elija el campo que desee resumir. En este ejemplo, es el campo de lluvias.
    • Tipo de estadística: elija SUM para calcular el total de lluvias.
    • Campo de caso: elija los campos station_id y month.
  4. Utilice la herramienta Campo de unión o la herramienta Agregar unión para unir los registros de la tabla de resumen a la capa de entidades.
  5. Visualice la capa en el mapa con una consulta de definición para ver los resultados para un determinado mes. Por ejemplo, para ver los resultados solo de mayo, utilice una consulta de definición donde Month = 5.

Utilizar funciones de base de datos

Si sus datos están almacenados en una base de datos corporativa, puede utilizar una consulta SQL para calcular previamente resultados agregados o resumidos y agregarlos en una tabla aparte.

  1. Ejecute la siguiente consulta SQL en un cliente de base de datos. Calcula la media mensual para cada estación meteorológica. La consulta presupone que existe un campo que almacena valores enteros para representar un mes.
    
    SELECT   station_id, month, SUM(rainfall_cm) AS total_rainfall
    INTO     avg_monthly_rainfall
    FROM     observed_rainfall
    GROUP BY station_id, month
  2. Si la base de datos es una geodatabase, registre la tabla en la geodatabase para obtener un rendimiento óptimo y una la tabla a la clase de entidad.

    Haga clic en la capa de entidades en el panel Contenido. En la pestaña Capa de entidades establecida, haga clic en la pestaña Datos. En el grupo Relación, haga clic en Uniones Unionesseguido de Agregar unión Agregar unión.

  3. Si no es una geodatabase, debe elegir una de las siguientes estrategias:
    • Cree una vista en la base de datos que una la tabla que contiene las geometrías con la tabla de resumen recientemente creada.
    • Cree una capa de consulta y defina la unión en el origen de la capa de consulta.
  4. Visualice la capa en el mapa con una consulta de definición para ver los resultados para un determinado mes. Por ejemplo, para ver los resultados solo de mayo, utilice una consulta de definición donde Month = 5.
Sugerencia:

Puede utilizar el programador de Windows para programar la ejecución de una tarea a intervalos regulares para calcular previamente los resultados.