Download Creación de un Plugin en Python para QGIS. Tutorial

Document related concepts
no text concepts found
Transcript
Creación de un Plugin en Python
para QGIS. Tutorial
TEC SIG – ICO
Malena Libman
[email protected]
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
ogr2ogr
ogr2ogr
ogr2ogr
-t_srs EPSG:32721 puntocel2.shp puntocel.shp
-f KML mypoints.kml sbpoints.shp sbpoints
-f "ESRI Shapefile" mypoints.shp sbpoints.kml
-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