20 Dic 2021 Las ventajas del trabajo con formularios en QGIS
¿Qué ventajas conlleva el trabajo con formularios en QGIS? De no tenerlo claro, déjame que intente convencerte a lo largo de las siguientes líneas. La creación de datos espaciales o geográficos, huelga decirlo, es un proceso crítico pues de ello depende en ocasiones la correcta ejecución de un proyecto cualquiera. Buena parte de los errores de atributo, que por lo común observamos en los datos, tienen su origen en la fase de creación de los mismos. La fase de codificación, por así decirlo, es una fuente inagotable de errores. Y es así porqué la codificación manual, aunque de forma involuntaria, es una invitación a cometer muchos de estos errores. Una tilde que cae en el olvido, una mayúscula no escrita, un error ortográfico, …
Evitar todo este tipo de errores contribuye a reducir el coste temporal y humano que conlleva subsanarlos antes de iniciar un proyecto. Si ya de por sí la fase de preparación de los datos para un proyecto es una tarea costosa, no es preciso alargarla ostensiblemente corrigiendo decenas (¡o incluso miles!) de errores que podrían haberse evitado en origen. Y ahí, el papel que juegan los formularios se aprecia inestimable. Si reducimos la codificación manual de los atributos reducimos, a su vez, los errores de codificación. Tan simple como esto. Tan fácil como trabajar con formularios.
QGIS cuenta con un entorno específico para la definición de formularios. Como veréis a lo largo de este post existen distintos tipos de formularios. Formularios para codificar valores cualitativos, para gestionar la codificación de fechas, de valores boleanos,… Antes de empezar a diseñar un conjunto de formularios es necesario tener claras algunas cuestiones no menores:
- ¿Qué capas tiene el proyecto?
- ¿Cuál es la estructura tabular de dichas capas?
- ¿Qué tipo de atributos almacena cada una de las columnas?
- ¿Cuantos atributos se van a codificar?
- ¿Existen tablas externas o ficheros de texto que almacenen los posibles valores de atributo que se asignaran a las entidades?
Configurando los primeros formularios en QGIS
Veamos cómo trabajar con formularios en QGIS a partir de un caso práctico. Supongamos que vamos a digitalizar (y a codificar, claro está) una capa de explotaciones agrícolas. Entre otros posibles atributos, querremos asignar a cada nueva explotación agrícola el nombre del municipio en el cual se sitúa, la referencia catastral de la parcela, el tipo de agricultura, la especie cultivada, la fecha de siembra, la fecha de recolección, y si se trata o no de un cultivo ecológico. En algunos casos, precisaremos de la creación de tablas externas que contengan todos los posibles valores a codificar. En otros casos, precisaremos de capas de las cuales extraer los valores que nos interesan. Finalmente, para ciertas cuestiones con la mera función de formulario de QGIS será más que suficiente.
Todo el proceso de diseño y parametrización de formularios en QGIS se lleva a cabo desde las propiedades de la capa con la que se vaya a trabajar. Basta pues con acceder a las propiedades y activar el apartado relativo a los formularios (Attributes Form).
En la figura anterior se muestra el aspecto del configurador de formularios con el listado de columnas o campos presentes en la tabla de atributos de la capa. Además de su nombre, también se indica la naturaleza (texto o numérico) de los atributos que se almacenaran en cada una de las columnas.
Configurar un formulario para la captura de datos según localización
Centrémonos en la obtención de la información relativa al municipio, así como a la referencia catastral de cada parcela o explotación. ¿Vamos a estar consultando la información del polígono sobre el cual se encuentra y tecleando el valor en la nueva entidad? La respuesta es no. Obtener los datos por localización resulta seguramente el mejor modo de proceder. Así pues, una buena opción pasará por configurar los formularios para estas dos columnas, tal y como se explica a continuación.
Como es lógico, deberemos contar con una capa con los límites municipales (y sus respectivos nombres). Y de una capa también, de parcelas catastrales. Obtener estas dos capas, a día de hoy, no debería suponer un contratiempo demasiado complejo de resolver. Asumiendo pues que disponemos de estas dos capas y que éstas están cargadas en el panel de capas de QGIS, bastará con acceder a la ventana de formularios de QGIS seleccionar el campo [MUNICIPIO] y dejar la opción Text Edit que aparece por defecto en el apartado Widget type. En cambio, en el apartado de valores por defecto (Default value) hay que incorporar la siguiente expresión:
array_to_string(overlay_intersects('municipios',NOMMUNI))
Con esta expresión se va a capturar el valor almacenado en la columna [NOMMUNI] (nombre de municipio) del polígono de la capa municipios que interseca con la entidad que se está creando. Este mismo proceso deberá repetirse con la columna o campo [REF_CATASTRO], teniendo la precaución de modificar el nombre de la capa y el campo en la expresión anteriormente mostrada:
Y así, de un plumazo (¡o dos, tal vez!), ofrecemos la solución a un par de problemas que en determinadas situaciones resultan ser una fuente inagotable de errores. La captura de estos valores será a partir de ahora automática. Es decir, sin intervención alguna del o la profesional que esté a cargo de esta tarea.
Configurar un formulario para la captura de datos de tablas externas
QGIS ofrece además la posibilidad de configurar formularios de tipo desplegable. Con ello, ahorramos en dos cuestiones fundamentales. En primer lugar, tener que introducir los valores utilizando un teclado. Y en segundo lugar y más importante si cabe: eliminamos toda posibilidad de introducir errores durante este proceso. Genial, ¿no te parece?
La configuración de este tipo de formularios no reviste grandes dificultades. Lo fundamental es disponer de antemano de todos los posibles valores que podrán asignarse a las entidades que se digitalizarán y codificarán. Fijémonos ahora en las columnas [TIPO_AGRICOLA] y [TIPO_CULTIVO]. Y observemos también el contenido de las tablas que se muestran en la siguiente figura:
Es relativamente sencillo utilizar los valores de estas dos tablas para codificar todas las parcelas que se vayan digitalizando. Para ello, QGIS ofrece dos tipos de formulario que responden adecuadamente a esta necesidad: un mapa de valores, y una relación de valores.
Configurando un formulario de «Mapa de valores»
En el primer caso, deberá seleccionarse el campo que almacenará el tipo de agricultura ([TIPO_AGRICOLA]), en el apartado formularios de las propiedades de la capa. Y en el apartado Widget type, escoger la opción que lleva por nombre Value Map. A continuación, realizar un clic sobre el botón Load data from layer o Load data from CSV file. Escoger una u otra opción dependerá como es lógico, del formato en que se encuentren los valores a cargar. Con un sencillo clic se selecciona el origen de los datos y se indica qué columnas contienen los valores y las descripciones a incorporar:
Aceptar la configuración de este formulario va a permitir codificar el tipo de agricultura a través de un desplegable, tal y como se muestra en la siguiente animación:
Para la configuración del formulario relativo al tipo de cultivo podría utilizarse exactamente el mismo método. Aun así, existe la posibilidad de configurar el formulario de un modo más eficiente, si cabe.
Configurando un formulario de «Relaciones de valores»
El nuevo objetivo del formulario es que cuando la persona encargada de codificar las parcelas seleccione la opción de cultivo de secano, el desplegable no muestre todos los posibles valores de tipo de cultivo sinó únicamente aquellos que pertenecen a la categoría de secano. Dicho de otro modo, se puede configurar un formulario cuyas opciones de selección dependan del contexto. Eso es, que, en función del valor introducido en un campo anterior, este nos muestre un conjunto de valores u otros.
Para ello será necesario, en primer lugar, modificar el tipo de formulario aplicado al campo tipo de agricultura de Value Map a Value Relation. A continuación, hay que indicar qué tabla contiene los valores, cuál es la columna clave y cuál la columna de valor. Es importante que la columna clave sea un valor común en ambas tablas de valores (tipo de agricultura y tipo de cultivo) a fin de poder configurar el comportamiento que se quiere aplicar.
Configurado el formulario para el tipo de agricultura es el turno ahora para el tipo de cultivo. El sistema es idéntico al que se acaba de mostrar pero utilizamos en este caso la tabla TIPO_CULTIVO. Así pues, basta con configurar el formulario adecuadamente,pero esta vez, añadiendo un pequeño detalle que hace la diferencia. Es preciso indicar que los posibles valores a seleccionar dependerán de la selección que se haya efectuado para la columna o campo [TIPO_AGRICOLA]. Para ello, se incluirá la siguiente expresión en el campo Filter expression:
"codigo_agricola"=current_value('TIPO_AGRICOLA')
El resultado de la configuración del formulario y de la aplicación del filtro se muestra a continuación:
Configurar un formulario de selección de fechas
Otro tipo de formulario básico a la par que útil es el de tipo fecha y hora. Este permite o facilita que una o más columnas almacenen valores de tipo fecha. Para ello, en el apartado Widget type se va a seleccionar la opción Date/Time. En este tipo de formulario se puede configurar el formato de la fecha: sólo fecha, sólo hora, fecha y hora, fecha y hora en formato ISO, o una variante adaptada a las preferencias del usuario (custom). El modo más básico es el de tipo fecha, que se muestra en la siguiente figura. Siguiendo con el ejemplo de las parcelas agrícolas, este tipo de formulario es aplicable a los campos [SIEMBRA] y [COSECHA].
Con esta simple configuración, se pueden seleccionar y almacenar valores relativos a fechas de manera ágil, rápida e interactiva. Sin temor a cometer errores de codificación (¡más allá de errar en la fecha seleccionada, pero esta seria ya otro tipo de problema!).
Configurar un formulario como una casilla de verificación
Para el último campo o columna del ejemplo con el que se viene trabajando, y que guarda relación con saber si un tipo de cultivo es o no ecológico, se puede configurar un formulario en modo casilla. Esta característica, ser o no ser ecológico, es una cuestión boleana. Lo es o no. Así de simple y llano. En estos casos, pues, resulta súmamente cómodo utilizar una casilla que al marcarla guardará el valor ‘ecológico’ y, en caso de no ser marcada, hará lo propio con el valor ‘no ecológico’.
En este tipo de formularios lo verdaderamente importante es configurar un valor para cada posible estado de la casilla (marcada o no marcada) e indicar que se guarden dichos valores en la tabla de atributos.
La sucesiva configuración de tipologías de formulario a lo largo de este ejemplo dará como resultado la tabla de atributos que se muestra en la siguiente figura:
Así de fácil, eficiente y libre de errores, resulta un proceso de digitalización y codificación de entidades basado en el uso de formularios. A buen seguro, el tiempo (más bien escaso) invertido en su configuración, es un ahorro realmente cuantioso en tiempo de depuración y resolución de errores alfanuméricos en las tablas de atributos de nuestros datos geográficos. Cierto es que cuando uno se acostumbra a trabajar con formularios de este tipo muy difícilmente volverá a querer teclear un solo carácter con el teclado.
Más cuestiones relativas a los formularios
Y quizás alguien pueda preguntarse acerca de la siguiente situación: «La tabla de atributos muestra un campo [fid] que no se ha visto en ningún momento en las animaciones anteriores. ¿Cómo es esto posible?». Y lo cierto es que la respuesta no puede ser más sencilla. No todos los campos o columnas de una tabla deben mostrarse en el formulario de edición. En este ejemplo, el caso de la columna [fid] es particular. Las capas o tablas utilizadas están almacenadas en un GeoPackage y, este formato, ya se encarga de crear, alimentar y mantener un campo de identificador único. Como usuario, al no poder modificar este campo que se encuentra protegido es posible configurar el parámetro Widget type como Hidden u Oculto. De este modo, la columna no aparecerá en el formulario, a pesar que ésta continuará visible y actualizada en la tabla de atributos.
Algunas consideraciones finales
Además de las tipologías ya mostradas, existen otras opciones que podemos aplicar a nuestros formularios. Algunas más interesantes y otras menos, pero que en cualquier caso están ahí listas para ser utilizadas. Existe por ejemplo, el tipo de formulario llamado de Clasificación. Este tipo de formulario es interesante cuando ya se dispone de una capa de información y lo que se desea, es actualizarla o ampliarla. El comportamiento de este tipo de formulario conlleva que sólo se pueda escoger un valor (cualitativo o cuantitativo) que ya esté presente en la columna de la tabla de atributos que se está editando.
Además de la clasificación, otro tipo de formlario realmente interesante es el que lleva por nombre Attachment o Adjunto. Un formulario de este tipo permite almacenar la ruta a una imagen o fotografía, y que esta se muestre en el formulario al interrogar una entidad, en lugar de mostrar la simple ruta al documento en cuestión.
Ya finalmente, existe la opción de utilizar un alias en lugar de los nombres originales de las columnas. El uso de alias permite mostrar un texto una frase en el formulario, evitando de este modo, mostrar un nombre (el de la columna) que puede ser un código, una abreviación o un nombre poco inteligible.
Visto lo visto, coincidiremos a buen seguro que las ventajas que ofrece el uso de formularios en QGIS durante cualquier proceso de digitalización y codificación de nuevas entidades, no es para nada despreciable. Y no únicamente en el caso de creación de nuevas entidades, sino también en el caso de actualización de datos geográficos ya existentes. Si no has trabajado aun con ellos, ya estás tardando en darles una oportunidad y convencerte definitivamente de su importancia e utilidad.