You are on page 1of 13

Creación de un Plugin en Python

para QGIS. Tutorial


TEC SIG – ICO

Malena Libman
malena.libman@gmail.com
Dentro de la consola python, utilizamos algunas
de las herramientas que ofrece GDAL/OGR
para ciertos Geoprocesos como el cambio de
proyección o la transformación de un tipo de
archivo a otro.
1. Usamos el comando ogr2ogr para transformar un
archivo del formato *.kml (Google Earth) a *.shp
(ESRI Shape File) o para cambiar la proyección del
archivo vectorial
ogr2ogr -t_srs EPSG:32721 puntocel2.shp puntocel.shp
ogr2ogr -f KML mypoints.kml sbpoints.shp sbpoints
ogr2ogr -f "ESRI Shapefile" mypoints.shp sbpoints.kml
ogr2ogr -f 'ESRI Shapefile' output.shp input.kml

En lugar de utilizar el código EPSG, acá lo que se usó es la


proyección desde un archivo de texto

ogr2ogr -t_srs robisnon_ogcwkt.txt world_rob.shp world_wgs.shp


2. Utilizamos la función gdalwarp para modificar la
proyección de imágenes (datos raster)
gdalwarp -t_srs EPSG:4326 landsat5.tif landsat5_2.tif

3. Otra herramienta que encontramos útil fue,


ogrinfo que nos sirvió para ver el sistema de
coordenadas y proyección de una capa
ogrinfo -al -so world_wgs.shp
En los primeros ejercicios de python, vimos las definiciones
de operadores, variables, funciones y listas; a la vez que
aprendimos a crear desde las funciones más básicas, como
la cuadrática:
def cuadratica (a, b, c, inicio, fin):
x = inicio
while x<= fin:
y = a*x**2 + b*x + c
print x, y
x = x + 1
cuadratica (5, 4, 1, -1, 10)

Hasta la realización de juegos mas complejos, que


combinaban más de una función y la creación y operación
de listas
GDAL es una librería traductora para el
formato de datos Geoespaciales Raster y en
conjunto con OGR, la librería de datos
vectoriales, es utilizada como base para muchos
programas SIG.
Uno de los ejemplos que trabajamos fue el de lectura de datos raster de
una imagen satelital Landsat 5, en este caso leyendo una serie
determinada de pixels para conocer su valor.
import gdal, ogr, sys, os
from gdalconst import *
gdal.AllRegister()

dataset = gdal.Open("/home/malena/python/imsat/landsat5.tif", GA_ReadOnly)


if dataset is None:
print "Error abriendo el archivo"
cuenta = dataset.RasterCount
print cuenta

band = dataset.GetRasterBand (1)


c = band.ReadAsArray(0, 0, 10, 10)
print c
Para poder utilizar las herramientas GDAL/OGR en el entorno de ArcMap
10.1, llevamos adelante los pasos detallados en el documento "Installing
GDAL for Python on Windows“.

Luego se solucionaron una serie de problemas que surgieron de esa


instalación.

Lamentablemente, al intentar procesos complejos, como la creación de


Buffers sobre polilíneas, el programa se quedaba una gran cantidad de
tiempo intentando realizar la acción y nunca terminaba, hasta que
Windows indicaba que debía cerrarse.
Como primer paso para crear nuestro propio Plugin para Quantum GIS desde el
Sistema Operativo Windows 7, encontramos dos guías para desarrollar tal tarea.

La primer guía que utilizamos es un documento en idioma inglés, que presentaba


muchos errores. Presumiblemente ocasionados por fallas en la corrección del
documento.

A partir de ello utilizamos la guía publicada en el sitio oficial del programa


Quantum GIS, llamada “Cookbook”.La guia oficial enlaza con dos sitios que a partir
del ingreso de algunos datos sencillos (nombre, versión, etc.) genera la estructura
básica de archivos necesaria para la creación de nuevos plugins (código fuente de la
herramienta, icono de muestra, etc.).

Una vez obtenidos los archivos de base, comenzamos a personalizarlos:


Modificamos los datos básicos del plugin como su nombre y tambien creamos la
función que va a hacer que se ejecute el plugin
GENERACIÓN DEL ÍCONO
Para modificar el ícono que va a representar a nuestro plugin en el programa,
guardamos la imagen que hayamos elegido en formato *.png en la carpeta de nuestro
plugin con el nombre icon.png.

Para poder “compilar” esta nueva imagen debemos utilizar el archivo resources.qrc.
Este archivo *.qrc es necesario para utilizar la herramienta pyrcc4 que vectoriza la
imagen en un archivo *.py, que contiene la ruta y nombre del archivo de imagen
destinado a ser el ícono.

Para ejecutar la herramienta pyrcc4 agregamos en las variables de entorno de


Windows la ruta donde se encuentra pyrcc4.exe. Luego abrimos la consola de
comandos de Windows. En el control de comandos tenemos que estar ubicados en la
ruta donde se guarda la carpeta del Plugin. Allí ejecutamos el comando:

pyrcc4 -o resources.py resources.qrc.

Con ello ejecutamos la herramienta y le otorgamos el archivo de salida y el de entrada


FUNCIÓN PRINCIPAL
El paso siguiente es agregar nuestro código a la función principal que va a estar en el
archivo nombredelplugin.py, allí lo incorporamos a la función que corre el plugin.

Para la implementación del plugin en cualquier máquina necesitamos modificar la


ruta de localización del icono (cambia el nombre de usuario si sigue siendo windows7,
pero si es otro SO hay que modificar la ruta completa) y crear en el disco D la carpeta
python con los archivos de base o cambiar la ruta y el nombre de los mismo en caso
que sean diferentes.
Su implementación en QGIS utilizando PyQT4 para la interfaz.
Una herramienta muy útil para el diseño de interfaces y de pequeños widgets es el
programa QT creator.

El mismo nos permite crear la interfaz y almacenarla en lenguaje xml en un archivo


*.ui. Para traducir este archivo al lenguaje Python utilizamos la herramienta PyQT4.

Desde el archivo nombredelplugin.py detallamos a que acción corresponde cada


elemento creado para la interfaz.

Cuando terminamos de completar todas las acciones que deseamos que el plugin
permita ejecutar, tenemos nuestra interfaz armada y nuestro plugin listo para ser
utilizado.
Bibliografía y Recursos.

• Sistemas operativos, conceptos fundamentales. A. Silberschatz, J. Peterson, P. Galvin.


• Linux in a nutshell, a desktop quick reference. Ellen Siever 1999.
• Estructuras de datos. Cairó y Guardati.
• Algoritmos y estructura de datos. Niklaus Wirth
• Algoritmos, problemas resueltos y comentados. Joaquín Fernandez. 1992.
• Algoritmos y estructura de datos. Niklaus Wirth
• Geoprocessing with Python using Open Source GIS,
http://www.gis.usu.edu/~chrisg/python/
• OGR: OGRLayer Class Reference, http://www.gdal.org/ogr/classOGRLayer.html
• GDAL: GDAL API Tutorial, http://www.gdal.org/gdal_tutorial.html
• GDAL: GDALRasterBand Class Reference,
http://www.gdal.org/classGDALRasterBand.html
• Estructuras de datos — Tutorial de Python v2.7.0 documentation,
http://docs.python.org.ar/tutorial/datastructures.html

You might also like