QGIS posee un potente generador de mapas automatizados con los cuales es posible crear reportes para evaluar mediante informes los avances de un proyecto que requiera análisis territoriales.
QGIS posee un potente generador de mapas automatizados con los cuales es posible crear reportes para evaluar mediante informes los avances de un proyecto que requiera análisis territoriales.
En el artículo anterior se mostró como es posible rellenar automáticamente un campo en función de su relación con otra capa a través de la función aggregate en QGIS 3.8, esto es de gran relevancia para incorporar datos a las áreas que se desean analizar.
Para este nuevo ejemplo de cómo generar mapas a través del atlas utilizaré las capas Estatal, Municipal, Localidades, Colonias, Vialidades, Ríos, Cuerpos de Agua, Áreas Verdes, Manzanas (Censo) entre otras de México DF y del Estado de México disponibles en el portal de INEGI para Espacios y Datos de México.
Primer Paso: Edición de Capa Para Generar Áreas de Relevamiento
Procederemos a cartografiar mediante la edición y digitalización de la capa “areas_relevamiento” la cual completará automáticamente el registro de los campos de población, cp_df, área, estado, cvegeo_estado, municipio, cvegeo_municipio, localidad_urbana, cvegeo_localidad_urbana y colonia a partir de la configuración del formulario de atributos con la función aggregate a las capas de censo_manzanas_df (censo por manzanas), cp_df (código postal), limite_estadal_df, limite_municipal_df, localidades_urbanas_df y colonias_df, así como el área se autocompletará a partir del cálculo de $area del polígono en lugar de ingresar cada uno de los valores manualmente. Es importante destacar que México DF está dividida en 16 Municipios y más de 2300 colonias superpuestas.
Para el ejercicio se harán 3 áreas de relevamiento distintas: una en el municipio Benito Juárez, una segunda en el municipio de Cuauhtémoc y una tercera en el municipio Iztacalco.
Zona de relevamiento en Benito Juárez:
Zona de relevamiento en Cuauhtémoc
Zona de relevamiento en Iztacalco
Segundo Paso: Creación y Configuración del Diseño de Impresión
Procederemos a configurar un diseño de impresión. Para desarrollar este ejercicio más práctico y rápido es recomendable que previamente estén familiarizados con el compositor de impresión del QGIS. Para detalles del módulo de impresión pueden revisar la documentación en los manuales de QGIS, sino, les recomiendo vean el videotutorial de Luis Alfonso Flores Arteaga: Diseñador de Mapas QGIS 2019
Crearemos entonces una nueva composición de impresión a través del menú Proyecto, y le pondremos de nombre Áreas de Relevamiento en México DF.
Seguidamente añadiremos un mapa a la composición a través del panel lateral de la composición de impresión creada.
El siguiente paso es configurar el atlas con la capa de “area_relevamiento”, para ello iremos al panel Atlas y marcaremos el recuadro “Generar un atlas”. La capa de cobertura será la digitalizada en el Primer Paso (área_relevamiento), el “Nombre de la página” por ahora seleccionamos el campo id y marcaremos el recuadro “Ordenar por” también con el campo id.
Aún no ocurrirá nada, el atlas no funcionará hasta tanto no se configure en la pestaña de propiedades del elemento la opción “Controlado por Atlas” y activar la “Vista preliminar de Atlas”. Por lo tanto, lo siguiente es pasar al panel de propiedades del elemento y marcaremos el recuadro “Controlado por Atlas”.
Ahora sí, procederemos a activar la “Vista Preliminar del Atlas de Atlas” y comprendemos cómo funciona la barra de herramientas del Atlas.
Pero primero veamos cómo funcionan los botones de la barra de herramientas del atlas:
Entonces, activamos la Vista Preliminar del Atlas de Atlas y observamos como para cada elemento de la cartografía se hace un centrado basado en el control del atlas (10% alrededor del margen del objeto) que en nuestro caso es la capa de área_relevamiento.
A partir de este momento comenzaremos a crear y cargar valores en las variables @atlas del QGIS las cuales le dará dinamismo al Atlas y permitirá automatizar la creación de cada uno de los mapas.
Tercer Paso: Creación y Carga de valores en variables @atlas del QGIS
Configuración de variable @atlaspagename
La primera configuración que haremos es darle nombre a cada una de las páginas de atlas, esta configuración quedará registrada dentro de la variable @atlaspagename. Para ello debemos regresar al panel Atlas e ingresar la expresión que tendrá el nombre de cada página del Atlas. La configuración que haremos será la siguiente:
'Área de Relevamiento: #' || id
Verificamos que la variable quedó configurada y aprendemos a incorporar al mapa datos de interés, en este caso, el nombre del mapa.
Para ello añadiremos una etiqueta a la composición que tendrá como propiedades la variable @atlaspagename
Como puede observarse al activar la Vista Preliminar del Atlas habiendo configurado la expresión del nombre de la página del atlas la cual queda registrada en la variable @atlaspagename puede incorporarse al mapa mediante una etiqueta para visualizarla. Nótese como en la selección de atlas en la barra de herramientas del atlas también se incorpora de manera automática esta variable.
Configuración de Visualización de Capas mediante variable @atlas_featureid
Segundo paso, haremos la configuración de la capa del atlas (área_relevamiento) con una simbología específica, esto es fundamental ya que la apariencia visual de los datos geográficos incorporados en el mapa permitirá una correcta representación de los mismos a los usuarios y lectores finales de la cartografía e interpretar con facilidad aquello que queremos comunicar. Para ello debemos ir a las propiedades de la capa “area_relevamiento” y en propiedades configurar la simbología basado en reglas.
Añadiremos una regla que tendrá como expresión de filtro (regla) $id = @atlas_featureid, Aquí la expresión $id = @atlas_featureid se refiere a la entidad que corresponde a la visualizada en el atlas. Le pondremos de etiqueta Elemento del Mapa.
Veamos cómo va quedando el compositor con nuestra nueva regla incorporada. Deseleccionamos la regla sin filtro y regresamos al diseño de impresión para ir visualizando como va quedando nuestra salida cartográfica.
En este paso no pareciera haber un cambio significativo, esto se debe a que no existen elementos contiguos a los digitalizados o cartografiados, no obstante, es de importancia poder diferenciar el elemento del mapa del resto de los presentes, por ello es transcendental saberlo diferenciar.
Configuración de etiquetado de Capas mediante variable @atlas_feature
Para etiquetar únicamente los elementos que se encuentran en el polígono activo del atrás, utilizaremos la siguiente expresión within($geometry,geometry(@atlas_feature)). Aquí la expresión geometry(@atlas_feature) se refiere a la entidad visualilzada “areas_relevamiento” y $geometry se refiere a la geometría de las entidades de la capa que estén presentes dentro de geometry(@atlas_feature) o entidad visualizada. La capa o capas que poseen etiquetas que actualmente está visible es la vialidad, así que aplicaremos esta nueva expresión como regla al “Etiquetado basado en reglas”.
Veamos cómo va quedando el compositor con nuestra nueva regla de etiquetado incorporada. Regresamos al diseño de impresión para ir visualizando como va quedando nuestra salida cartográfica.
Como puede observarse al activar la Vista Preliminar del Atlas habiendo configurado el etiquetado de capas con la variable @atlas_feature mediante presencia atrás solo quedan visibles las etiquetas dentro del área de visualización.
Configuración de Estilo de Capas mediante variable @atlas_geometry
Para generar una simbología única de los elementos que se encuentran en el polígono activo del atrás, utilizaremos la siguiente expresión intersects(@atlas_geometry, $geometry). Aquí la expresión @atlas_geometry se refiere a la entidad visualizada “areas_relevamiento” y $geometry se refiere a la geometría de las entidades de la capa que estén presentes en la intersección con la entidad visualizada. Existen diferentes capas atrás de la entidad visualizada, sin embargo, aplicaremos esta regla a la capa de manzanas con simbología “Basado en reglas”, esto, para que sea más clara y definida el área de relevamiento.
Nótese que incorporamos dos reglas, la presente mediante la regla que define el área visualizada y la regla “ELSE” para el resto de los elementos de la cartografía de la capa de manzanas.
Veamos nuevamente cómo va quedando el compositor con nuestra nueva regla de estilo de capas. Regresamos al diseño de impresión para ir visualizando como va quedando nuestra salida cartográfica.
Como puede observarse al activar la Vista Preliminar del Atlas habiendo configurado el estilo de capas con la variable @atlas_geometry mediante presencia atrás solo quedan los elementos con la simbología definida en la regla dentro del área de visualización con dicho estilo y el resto de los elementos con la otra simbología definida mediante la regla “ELSE”.
Las expresiones de QGIS son muy útiles para controlar ciertas acciones durante la automatización de la generación de cartografía. Se recomienda hacer una revisión a cada una de ellas, apoyándose en la ventana de ayuda que se despliega a su derecha. Es importante conocer, además, las variables del proyecto, diseño, atlas o globales que brindan capacidades especiales a nuestros diseños.
En este punto ya tenemos un mapa de composición con el área de relevamiento bastante hermoso, no obstante, elementos básicos de un mapa como lo son leyenda, simbología, imágenes, cuadrícula de coordenadas, norte, escala entre otros les recomendaré nuevamente el video tutorial Luis Alfonso Flores Arteaga: Diseñador de Mapas QGIS 2019, en este sentido, incorporaré cada uno de estos elementos porque allí se describe cómo es posible añadirlos, de igual manera activaré otras capas en el proyecto para comenzar a visualizar elementos presentes en nuestra área de relevamiento.
Cuarto Paso: Textos Dinámicos
Recordemos, cuando digitalizamos la capa “área_relevamiento” en el Primer Paso incorporamos datos de otras capas con la función aggregate que están dentro de la tabla de atributos.
El texto dinámico es un elemento etiqueta que se actualiza automáticamente a través de un campo o una función evaluada para cada uno de los mapas que contiene el atlas. Como primer ejemplo, ya hemos agregado el nombre que configuramos como @atlaspagename contentivo de la expresión de nuestro título de cada mapa.
Ahora insertaremos etiquetas que forman parte de nuestra capa “area_relevamiento” de la misma forma como previamente se incorporó la variable @atlaspagename, sólo que ahora indicaremos el nombre del campo que deseamos incorporar. Añadimos entonces los campos: estado, municipio, colonia, área y población desde nuestra tabla de atributos además el autor y la fecha del mapa, reajustamos el tamaño de letras y organizamos mejor los elementos presentes para ir evaluando nuestra salida.
´
Expresiones de cada etiqueta:
ESTADO: [% upper("estado") %] MUNICIPIO: [% upper("municipio") %] COLONIAS: [% upper(replace( "colonia", '�','Ñ')) %] Población: POBLACIÓN: [% format_number( "poblacion" ,0) %] HABITANTES Superficie: [% 'Superficie ' || format_number( "area" ,2) || ' Km²'%] Elaborado: Mauricio Márquez Goa Fecha: [%day($now)%] - [%month($now)%] - [%year($now)%]
Veamos nuevamente cómo va quedando el compositor con estos nuevos ajustes descritos. Regresamos al diseño de impresión para ir visualizando como va quedando nuestra salida cartográfica.
Como puede observarse al activar la Vista Preliminar del Atlas habiendo todos incorporado estos elementos tenemos un mapa completo. Hagamos ahora la incorporación de dos mapas adicionales que funcionarán cómo ubicación geográfica del elemento que estamos observando.
Para que no perdamos los avances, marcaremos el recuadro “Bloquear capas” y “Bloquear estilos para las capas” en nuestro mapa principal. De este modo, al trabajar con el mapa de ubicación visualizaremos ambos mapas dinámicamente de forma independiente.
Quinto Paso: Ubicación
De la misma manera como generamos una simbología única de los elementos que se encuentran en el polígono activo del atrás, utilizaremos la siguiente expresión intersects(centroid(@atlas_geometry), $geometry) en la capa de limite_municipal_df para que nos indique en que municipio (mapa) se encuentra nuestra “área_relevamiento”. Aquí la expresión @atlas_geometry se refiere a la entidad visualizada “areas_relevamiento” y $geometry se refiere a la geometría de las entidades de la capa que estén presentes en la intersección del centroide con la entidad visualizada, se preguntarán: ¿por qué el centroide?, R: porque los bordes del elemento $geometry si tocasen los bordes de la localidad a pesar de no estar dentro de ella los seleccionaría, por lo tanto, para hacer más precisa nuestra ubicación lo hacemos a través del centroide.
Incorporamos entonces las diferentes reglas que conocemos y dejamos sólo esta capa activa en nuestro proyecto.
Añadimos el mapa sin permitir que sea controlado por el atlas, centramos que sean visibles todos los municipios y veamos nuevamente cómo va quedando el compositor con esta ubicación configurada. Regresamos nuevamente al diseño de impresión para ir visualizando como va quedando nuestra salida cartográfica.
Como puede observarse al activar la Vista Preliminar del Atlas habiendo configurado la ubicación de municipio, a medida que nos desplazamos de un elemento a otro, ambos mapas cambian de manera independiente.
Ya para finalizar ahora haremos un mapa con la ubicación relativa. Nuevamente para que no perdamos los avances, marcaremos el recuadro “Bloquear capas” y “Bloquear estilos para las capas” en nuestro mapa de ubicación de municipio.
Añadiremos una configuración adicional de la capa del atlas (área_relevamiento) con una simbología específica para que sea visible como ubicación relativa.
De nuevo, con una regla que tendrá como expresión de filtro (regla) $id = @atlas_featureid y con la simbología que representa la ubicación relativa. Deseleccionamos la del elemento del mapa.
Añadimos el mapa que sea controlado por el atlas a un 600%, dejamos activa la capa de municipios activa sólo seleccionada la regla sin filtro y veamos nuevamente cómo quedó finalmente la ubicación relativa con todos los elementos que incorporamos al mapa. Regresamos nuevamente al diseño de impresión.
Como puede observarse al activar la Vista Preliminar del Atlas habiendo configurado la ubicación relativa, a medida que nos desplazamos de un elemento a otro, los tres mapas cambian de manera independiente.
Ahora procedamos a generar el atlas con nuestros mapas desarrollados y convirtámoslos en imagen que son los mapas que verán a continuación:
Ha sido utilizado para el desarrollo de este ejercicio parte de la documentación presentada y explicada en el taller “ELABORACIÓN AVANZADA DE CARTOGRAFÍA Y USO DE ATLAS DE QGIS” de las jornadas de la FOSS4G BA 2019 por el equipo de IDECOR: María Luz Fuentes, Camila Garmendia, Hernán Morales, Renzo Polo y Mara Rojas.
Notas Finales: este ejercicio es bastante complejo ya que se utilizan muchas características de QGIS, no obstante, es un aporte para aquellos usuarios en habla hispana que deseen ampliar sus conocimientos con el uso del Atlas.
Si tienen alguna duda pueden preguntarme por twitter, telegram a través de mi Nick @m4uriciom o por mi perfil de Linkedin: Mauricio Márquez Goa o en la sección de comentarios debajo de esta publicación.
Si desea acceder a la información con la que fue desarrollado este ejemplo y probarla podrá descargarla desde aquí: Generación de mapas a través del ATLAS en QGIS 3.8 y función Aggregate. Al abrir el enlace deben ir al menú de descarga en la parte superior derecha y hacer click en descarga directa. Luego descomprimen el archivo descargado en cualquier ubicación de su ordenador y abrir el proyecto MEXICO_DF_ATLAS.qgz con el QGIS 3.8. Obviamente que cualquier sugerencia, comentario, crítica es bienvenida.
Hago un especial agradecimiento a Boris Alfredo quien estuvo atento a cada uno de los pasos que di para desarrollar este ejercicio en el cual invertí más de 100 horas de desarrollo.
Próximamente desarrollaré un nuevo ejercicio en donde incorporaré una capa de eventos de manera que el ATLAS de QGIS con la función aggregate genere tableros de control que cambiarán en la medida que se vayan generando eventos en la capa de eventos.
Recuerda iniciar sesión para comentar este articulo