Cortar shapefiles con Python y QGIS

Curso de ArcGIS Pro | Curso de QGIS | Curso de ArcGIS 10

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).

clip phyton qgis
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:
consola de python en qgis
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.
Insertar comandos Python en QGIS

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:
Importar comandos Python
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:
Resultados clip python qgis
Una contribución de: Antonio Pantoja

4 comentarios en «Cortar shapefiles con Python y QGIS»

  1. 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»

  2. 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

  3. 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’

  4. 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.

Los comentarios están cerrados.