Está en la página 1de 4

Cargar y añadir capas desde

PyQGIS
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’)