Cargar y añadir capas desde PyQGIS

Descargar pyqgis_2

En este nuevo infohatari presentamos los comandos que te facilitarán cargar archivos vectoriales y rásters en QGIS desde la consola de Python. Al finalizar estamos seguros que comprenderás los procesos que debe desarrollar el software para:

A.    Cargar una archivo vectorial (*.shp)
B.    Cargar una imagen raster

En primer lugar, asegúrate de haber descargado el archivo comprimido pyqgis_2.zip y de haberlo descomprimido en una carpeta de fácil acceso.Para mantener el orden recomendamos que se la misma donde descromprimiste el archivo pyqgis_1.zip. Empecemos:

1.    Carguemos un archivo vectorial desde la consola de Python:

1.1.    Una vez abierto el Editor de la consola de Python, cliqueamos en Abrir archivo para cargar el script con los comandos que ordenan a QGIS cargar el shapefile Upslope_Area_cuenca.shp, accediendo a la siguiente ruta:

…\pyqgis_2\Scripts\cuenca.py

Obtendremos la siguiente visualización:

Tal como vimos en el primer infohatari sobre PyQGIS: “Primeras interacciones con PyQGIS”, explicamos que:
En la línea de comando número 3 puedes observar la clase QgsVectorLayer() cuya documentación consiste en tres cadenas (strings) separadas por comas, donde la primera cadena especifica la ruta que debe seguir el programa para hallar el script, la segunda cadena sirve para designar el nombre que aparecerá en la leyenda con el shapefile que se carga, y la tercera cadena hace mención del proveedor de datos (lo archivos vectoriales son proveídos desde la biblioteca GDAL y representados como ogr).
Así mismo, tal como hicimos en el primer infohatari, es necesario cambiar la ruta de ubicación del shapefile, de modo que la ruta sea como se muestra a continuación:

…\pyqgis_2\Vectors\ Upslope_Area_cuenca.shp

Por otro lado, la case QgsMapLayerRegistry permite enrutar la capa cargada en el lienzo, y gracias a los métodos instance() y addMapLayer() la capa cargada puede adherirse al lienzo.
El método addMapLayer() requiere que se especifique una variable, que para nuestro caso es “cuenca”, y la ubicamos entre los paréntesis del método.
Una vez que se ha cargado el script y se ha cambiado la ruta, es necesario salvar los cambios realizado con el menú guardar de la barra de herramientas del Editor.

1.2.    Ahora damos click en el menú Ejecutar script para obtener la siguiente respuesta en el lienzo:

Con esto hemos conseguido cargar un shapefile en el lienzo, ejecutando un script desde la consola de Python.

2.    Carguemos una imagen ráster desde la consola de Python:

2.1.    Una vez abierto el Editor de la consola de Python, cliqueamos en Abrir archivo para cargar el script con los comandos que ordenan a QGIS cargar la imagen Bing_1_50000.tif, accediendo a la siguiente ruta:

…\pyqgis_2\Scripts\cuenca_imagen.py

Obtendremos la siguiente visualización:

Como se puede notar las líneas de comando para cargar un archivo ráster son similares, diferenciando en que la clase que se usa para cargar un ráster es QgsRasterLayer(), la misma que no necesita una cadena que especifique el proveedor de datos de la imagen, puesto que todas las imágenes son proveídas por GDAL, pero si requiere se detallen dos cadenas, una con la ruta del archivo ráster y otra con el nombre que tendrá este archivo en la leyenda.
Así mismo, tal como hicimos en el primer script para el shapefile, es necesario cambiar la ruta de ubicación de la imagen, de modo que la ruta sea como se muestra a continuación:

…\pyqgis_2\Rasters\Bing_1_50000.tif

Aquí también es necesario hacer uso de la clase QgsMapLayerRegistry() y de los métodos instance() y addMapLayer() de modo que se represente la imagen en el lienzo.

Una vez que se ha cargado el script y se ha cambiado la ruta, es necesario salvar los cambios realizado con el menú guardar de la barra de herramientas del Editor.

2.2.    Ahora damos click en el menú Ejecutar script para obtener la siguiente respuesta en el lienzo:

Con esto hemos conseguido cargar una imagen en el lienzo, ejecutando un script desde la consola de Python.

3.    Usando métodos de iface para cargar capas:

Hasta aquí hemos utilizado las clases QgsVectorLayer() y QgsRasterLayer() en adición al método QgsMapLayerRegistry.instance().addMapLayer() de modo que podamos entender los procesos seguidos por el software para ejecutar las órdenes.
Sin embargo, es posible realizar lo mismo usando los siguientes métodos de iface:

  • cuenca = iface.addVectorLayer(‘…\pyqgis_2\Vectors\Upslope_Area_cuenca.shp’, ‘Area_de_Cuenca’, ‘ogr’)
  • cuenca = iface.addRasterLayer(‘…\pyqgis_2\Rasters\Bing_1_50000.tif’, ‘Zona_de_Cuenca’)

Hasta aquí, haz podido aprender como cargar archivos vectoriales y rásters, y haz podido entender el procedimiento lógico seguido por la interfaz de QGIS tras recibir las órdenes ejecutadas en el script; sin embargo, ha quedado pendiente explicar la presencia de las bibliotecas qgis.core, PyQt4.QtCore y PyQt4.QtGui utilizadas en los scripts. En un próximo infohatari se aclarará más el tema de las bibliotecas integradas en PyQGIS.

 

Suscríbete a nuestro boletín electrónico

Suscríbase a nuestro boletín gratuito para recibir noticias, datos interesantes y fechas de nuestros cursos en recursos hídricos.

 

Posted on April 30, 2015 and filed under GIS, TutorialPython.