Este procedimiento permite cortar múltiples shapefiles usando otro de menor extensión espacial (máscara), mediante la ventana de procesamiento de Python en la aplicación QGIS (Consola de Python).
Para desplegar la Consola de Python en QGIS, hay dos métodos: desde el menú Complementos > Consola de Python, o mediante el botón que tiene un ícono similar al de Python:
Cuando aparece la consola de Python, el área de trabajo se divide en tres. En la parte central está el cursor esperando la entrada de código (>>>), bien sea escribiendo directamente o copiando el script desde algún gestor de texto. Y en la parte superior se ve el desarrollo de las órdenes introducidas (descargar los archivos de práctica).
En este caso, por ejemplo, se pegó todo el script que hace posible el procesamiento, se pulsó ENTER, y la consola está esperando ( … ) la introducción de más código o la introducción de otro ENTER para ejecutar.
Se introduce entonces otro ENTER, y el programa empieza el procesamiento. Si todo es correcto aparecen mensajes OUTPUP indicando la dirección de los archivos cortados mediante la máscara. Si hay algún error aparecen ventanas de advertencia o mensajes en color rojo. En este caso, el proceso fue exitoso:
En el espacio de respuesta de los procesos (parte superior de la Consola de Python), se ve tres líneas de color azul, que son las que cada usuario deberá cambiar y adaptar según los directorios donde se encuentren sus datos. Esto se debe hacer previamente a la introducción en la consola, puede ser en un gestor de texto como lo es Notepadd ++. Es preferible que los nombres de las carpetas no contengan espacios. Notar también que esos directorios debes estar entre comillas, tal como se ve en la imagen:
Una contribución de: Antonio Pantoja
Un problema que se puede presentar, es que los directorios no sean reconocidos. En cuyo caso se debe anteponer la letra r, de tal manera que queden así:
DirectorioShapes = r»D:\_Franz\03_cortar_shapes\datosFranz\ArchivosShape»
ShapeMascara = r»D:\_Franz\03_cortar_shapes\datosFranz\ArchivosShape\Santiago_de_cali.shp»
DirectorioSalida = r»D:\_Franz\03_cortar_shapes\datosFranz\ArchivosShapeCortados»
Hola Antonio. Muchas gracias por el post.
El problema que me surge es que me dice que ‘global features is not defined’
¿Qué puede ser?
Saludos
Hola. Al ejecutar el script me sale este mensaje de error:
Traceback (most recent call last):
File «C:\PROGRA~1\QGIS3~1.2\apps\Python36\lib\code.py», line 91, in runcode
exec(code, self.locals)
File «», line 1, in
File «», line 19, in
AttributeError: module ‘processing’ has no attribute ‘runalg’
Hola, a mi de dio error el código fuente, pues, seguramente tengo otra versión de QGIS y otra versión de Python. La parte de código que cambié fue la del for y sustituí la última línea por las siguientes:
alg=’qgis:clip’
params = {«INPUT»: ShapeEntrada,»OVERLAY»: ShapeMascara,»OUTPUT»:ShapeCortado}
processing.run(alg, params)
Esto me funcionó para la siguientes versiones:
Versión de QGIS: 3.2.3-Bonn
Versión de python: 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)]
Saludos.