Cómo usar módulos de Python en QGIS. Un ejemplo con dxf2gmlcatastro
Como he venido comentando en las dos últimas entradas, en el repositorio de GitHub de SIGdeletras podéis encontrar el script dxf2gmlcatastro permite transformar un archivo de parcela catastral CAD con extensión DXF al formato GML establecido por Catastro para conseguir su validación gráfica en la Sede Electrónica del Catastro.
Tras verlo con algunos compañeros, presentarlo en las última reunión de Geoinquietos Córdoba y recibir varios correos de personas interesadas en usarlo, la conclusión a la que he llegado es la de que por muy útil que sea una herramienta si la gente no sabe utilizarla ya se está perdiendo el sentido básico que motiva su creación.
En esta línea, y poco después de publicar el script, Óscar Martínez de MásqueSIG escribió una estupenda entrada en la que explicaba cómo usar dxf2gmlcatastro en gvSIG. Siguiendo las reflexiones de Óscar, podemos decir que integrar código en un SIG como gvSIG, o en nuestro caso QGIS, permite:
- Al poder integrar el código en un SIG que trabaja con Python y GDAL, el uso inicial de la librería es más fácil.
- No estamos limitados a la instalación en un sistema operativo concreto ya tanto gvSIG como QGIS son SIG multiplataforma.
- Podemos mejorarlo usando las funcionalidades que nos ofrece el propio SIG (cuadros de dialogo, interfaz visual…).
- Se podría integrar en la barra de herramientas o incluso convertirlo en una extensión.
En conclusión y como dice Óscar …”que pueda llegar a más gente, que al final es para lo que lo hacemos”.
Definir la variable PYTHONPATH
La variable PYTHONPATH es utilizada en QGIS para acceder a los módulos de Python. Esta variable ya se define durante la instalación apuntando a una carpeta denominada Python dentro del directorio de instalación del programa, o en la carpeta .qgis2 en Linux. A pesar de ello, vamos a añadir una ruta nueva más accesible donde vamos a guardar nuestro módulo.
Los pasos a seguir son los siguientes:
- Abrir QGIS.
- Ir al menú _Configuración>Opciones.
- En la pestaña Sistema, buscamos el apartado Entorno.
- Activamos la opción _“Usar variables personalizadas…”
- Pinchamos en el botón “Añadir” y definimos la variable con las siguientes opciones:
- Aplicar: “Poner a continuación”
- Variable: PYTHONPATH
- Valor: Carpeta donde vamos a guardar nuestros archivos Python (ej. C:\scriptsqgis)
- Pinchamos en Aceptar y reiniciamos QGIS.
Usar dxf2gmlcatastro en QGIS.
Lo primero que debemos hacer es descarga el código, o hacer un _git clone, _ de dxf2gmlcatastro desde el repositorio de GitHub y copiar los archivos en la carpeta definida en PYTHONPATH (ej. C:\scriptsQGIS).
Lo primero es comprobar que QGIS accede a la nueva ruta que hemos añadido a PYTHONPATH. Una vez ejecutado de nuevo QGIS, vamos a abrir la consola de Python integrada (Complementos > Consola de Python) y escribimos import dxf2gmlcatastro y después pulsamos “Intro”. Si hemos seguido correctamente los pasos anteriores no nos debería devolver ningún error.
A continuación vamos a ejecutar la función crea_gml de dxf2gmlcatastro que convertirá nuestro archivo DXF al GML de Catastro. Dentro de la función tendremos de añadir los argumentos que nos indiquen:
- Dónde se encuentra el archivo DXF (ej. ‘C:\carpeta\archivoparcela.dxf’)
- El lugar y el nombre del GML(ej. ‘C:\carpeta\gmlcatastro.gml’)
- El código EPSG del Sistema de Referencia de Coordenadas del DXF. (Los SRC admitidos son 25828, 25829, 25830 y 25831)
dxf2gmlcatastro.crea_gml('C:\carpeta\archivoparcela.dxf', 'C:\carpeta\gmlcatastro.gml', '25830')
Si todo ha ido correcto podemos cargar el nuevo GML en QGIS y comprobar que se ha generado correctamente y que incluye los atributos según el modelo de Inspire.
Crear un script con PyQGIS personalizado
Una vez que disponemos de dxf2gmlcatastro podemos crear otros fragmentos de código para integrarlo en QGIS. Aquí os dejo un ejemplo que carga el GML en QGIS.
Para crear este archivo hemos usado el editor de código de QGIS y una vez terminado lo hemos salvado en nuestro equipo con el nombre catastroQGIS.py. Sólo deberemos cargar el archivo en el terminal de Python de QGIS y cambiar la ruta y nombre de los archivos para utilizarlo cada vez que queramos.
El archivo catastroQGIS.py se encuentra en la carpeta ejemplo del repositorio GitHub
Comentar