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