Si trabajas con datos espaciales, sabes que tener tus capas organizadas en un solo archivo es muy útil. El formato GeoPackage (GPKG) es un estándar abierto que permite almacenar varias capas vectoriales y raster en un solo archivo, junto con metadatos y relaciones.

En este blog te explico paso a paso cómo automatizar la creación de un GeoPackage que contenga varias capas (lotes, datos tabulares y vías), asignar metadatos a cada capa y crear una relación entre ellas usando PyQGIS — el API de Python de QGIS. Además, podrás abrir el panel de relaciones automáticamente para visualizar la conexión.


Importante: Repositorio con datos y código

He creado un repositorio público donde encontrarás todos los datos y el código para ejecutar este flujo de trabajo directamente desde la consola de Python en QGIS:

👉 https://github.com/eddycc66/BD_catastro

Ahí tienes las capas originales, el script listo para usar y la documentación para que puedas replicar este proceso sin complicaciones.


Limitación actual: Metadatos en GeoPackage

Aunque el script intenta asignar metadatos básicos (título, resumen, autor, etc.) a cada capa antes de exportarlas, por limitaciones actuales de PyQGIS y del propio formato GeoPackage, no fue posible insertar esos metadatos directamente dentro del archivo GeoPackage.

Esto significa que los metadatos quedan asignados a las capas dentro del proyecto QGIS durante la sesión, pero no se almacenan en el archivo .gpkg.

Esta es una limitación conocida y en próximas versiones de QGIS se espera mejorar el soporte para metadatos embebidos en GeoPackage.


Paso 1: Preparar las capas y agregar el campo común

Para que las capas se relacionen entre sí, deben tener un campo común. En nuestro caso usaremos el campo id_predio.
Si tu tabla datos_distrito_limpio no lo tiene, creamos ese campo copiando los datos desde el campo codigo.


Paso 2: Exportar las capas a un GeoPackage

Usamos QgsVectorFileWriter para exportar cada capa al GeoPackage. La primera capa crea el archivo, las siguientes capas se añaden.


Paso 3: Cargar las capas del GeoPackage y crear la relación

Una vez guardadas, cargamos las capas desde el GeoPackage para trabajar con ellas y creamos la relación madre-hija entre lotes_limpios y datos_distrito_limpio usando el campo id_predio.


Paso 4: Abrir el panel de relaciones en QGIS

Finalmente, para que veas la relación, activamos el panel de relaciones automáticamente desde Python para que lo tengas a la vista y puedas interactuar.


¿Por qué usar PyQGIS para esto?

  • Automatizas tareas repetitivas que te tomarían horas manualmente.

  • Puedes integrar este proceso dentro de flujos de trabajo más grandes (por ejemplo, para actualizar bases de datos).

  • Facilita el manejo de relaciones complejas entre capas espaciales y tabulares.


¿Quieres aprender más?

Si te interesa seguir aprendiendo sobre QGIS, PyQGIS y gestión de datos espaciales, suscríbete a mi canal y sigue el repositorio. Pronto publicaré tutoriales y cursos completos.


¡Gracias por leer!
— M.Sc. Edwin Calle Condori