Este trabajo ha sido realizado por Francisco Gómez Losada, estudiante del Máster en Sistemas de Información Geográfica de Código Abierto.
Como Trabajo Final de Máster (TFM) de la 1ª edición del Máster en Sistemas de Información Geográfica de Código Abierto, el alumno Francisco Gómez optó por el desarrollo de un plugin para el software QGIS.
Esta idea surgió como una solución práctica para dar respuesta a una necesidad laboral, ya que se invierte demasiado tiempo en la preparación de los diferentes proyectos GIS.
El principal objetivo del plugin es la creación de proyectos de QGIS personalizados mediante una configuración previa de forma fácil, rápida e intuitiva, consiguiendo así ahorrar tiempo y esfuerzo en la creación manual de los proyectos.

Principales funcionalidades
ProjectBuilder proporciona una interfaz gráfica fácil de usar, donde entre las funcionalidades ofrecidas destacan:
- Opciones para la configuración del proyecto:
- Elegir una carpeta de salida (incluirá una copia reproyectada de las capas previamente seleccionadas).
- Elegir un nombre.
- Definir el Sistema de Referencia de Coordenadas (SRC).
- Opciones para la selección de capas:
- Elegir un directorio de origen de los datos.
- Marcar check y elegir los servicios WMS a añadir.
- La simbología asociada (.qml) se carga automáticamente.
En definitiva, podemos decir que se trata de una solución práctica, eficiente y fácil de usar para la creación de proyectos QGIS personalizados, permitiendo reducir el tiempo de configuración de los mismos y, convirtiéndose de esta forma en una herramienta útil y práctica para aquellos que trabajan con QGIS y necesitan crear proyectos personalizados de forma rápida y sencilla.
Herramientas y tecnologías utilizadas
Para el desarrollo del complemento se han utilizado las siguientes herramientas y tecnologías de código abierto:
- Visual Studio Code: Es un editor de código fuente que admite diferentes lenguajes de programación y que ofrece diversas funciones para el desarrollo, como la integración con Git.
- GitHub: Es una plataforma de alojamiento de repositorios de código fuente que permite compartir y colaborar en proyectos de software de código abierto. GitHub se integra con VS Code y ofrece diversas funciones para el control de versiones, la revisión de código y la gestión de problemas.
- Plugin Builder 3: Herramienta de desarrollo de plugins para QGIS que permite generar una estructura básica del plugin y facilita la creación de nuevos módulos y funcionalidades.
- Plugin reloader: Es un plugin para QGIS que permite recargar automáticamente los plugins cada vez que se realizan cambios en el código. Esto significa que no es necesario reiniciar QGIS cada vez que se realiza una modificación en el plugin, lo que permite ahorrar tiempo y aumentar la eficiencia en el proceso de desarrollo.
- Python: Lenguaje de programación interpretado orientado a objetos, de alto nivel y de código abierto que se utiliza ampliamente en la creación de plugins para QGIS.
- PyQGIS: Es la librería de QGIS para ejecutar código Python, proporcionando acceso a las funcionalidades de QGIS. Se ha utilizado la API de QGIS para interactuar con QGIS y realizar operaciones en el proyecto.
- PyQt: Librería que proporciona una plataforma para el desarrollo de interfaces gráficas de usuario (GUI) en aplicaciones de escritorio mediante la utilización de widgets QT. Se ha utilizado para crear la interfaz gráfica del plugin mediante la herramienta QT Designer.
- QT Designer: Herramienta de diseño de interfaces gráficas de usuario (GUI) que permite crear diseños de forma visual mediante la colocación de widgets, como botones, casillas de verificación, cuadros de texto, etc.

Proceso de desarrollo
El desarrollo del proyecto consistió fundamentalmente en 5 etapas diferenciadas.

3.1 Estructura básica del plugin: En esta fase se utilizó el complemento de QGIS “Plugin Builder 3” para crear la estructura básica del complemento a desarrollar.

3.2 Repositorio de trabajo: Se optó por utilizar la plataforma Github para la creación del repositorio de trabajo del proyecto, siendo la opción ideal al contar con un control de versiones del código fuente en la nube y por su integración con Visual Studio Code.
3.3 Diseño de la interfaz gráfica de usuario: Etapa pararela al resto, puesto que se ha ido diseñando, mejorando y modificando constantemente a lo largo de todo el proyecto. Los objetos que componen la interfaz se van conectado al complemento incluyendo en el código fuente los métodos de python necesarios para ello.

3.4 Implementación y pruebas: Se utilizó Plugin Reloader para facilitar y agilizar el proceso de recarga del complemento en QGIS, permitiendo visualizar los cambios que vamos introduciendo en la apariencia y comportamiento del plugin en desarrollo.

3.5 Implementación y pruebas: Se utilizó Plugin Reloader para facilitar y agilizar el proceso de recarga del complemento en QGIS, permitiendo visualizar los cambios que vamos introduciendo en la apariencia y comportamiento del plugin en desarrollo.

Funcionamiento de Projectbuilder
Una vez instalado el plugin puede ser ejecutado desde el menú Complementos> PluginBuilder o desde la barra de herramientas.
La interfaz se divide en dos ventanas y tiene el siguiente aspecto:


- Añadimos ruta de Acceso a capas:

- Se cargan los datos en el Panel selector de capas:

- Podemos seleccionar las capas:

- Indicamos ruta de salida para la Carpeta del proyecto y Nombre del proyecto:


- Seleccionamos el Sistema de Referencia de Coordenadas del proyecto:

- Tenemos la opción de añadir WMS desde un listado:

- Finalmente, se genera el proyecto y nos lo guarda en la carpeta indicada y con la misma estructura de carpetas de las capas seleccionadas:

Mejoras futuras
- Mejorar la carga de simbología asociada (copia de ficheros .svg).
- Mejorar la carga de Geopackage (función específica para extraer más de un archivo).
- Opción de búsqueda/filtrado de capas en el panel selector de capas.
- Conexión a BBDD para la carga de capas.
- Recorte previo de las capas que van a formar parte del proyecto, en base a una capa seleccionada, buffer de distancia o BBOX.
- Ampliar el listado de WMS de forma automática (fichero .xml de QGIS)
- Selector de servicios WFS.
- Configuración/selección previa de la plantilla de composición del mapa (.qpt).
¿Quieres comentarnos algo? Adelante!