2 votos

Errores de atributos con el algoritmo selectbylocation

¿Podría alguien decirme qué es lo que falla en la ejecución de

processing.run('qgis:selectbylocation', layer2, layer, u'intersect', 0)

layer2 y layer es un objeto QgsVectorLayer.

Este es el mensaje de error que recibí

enter image description here

3voto

John Feminella Puntos 123

Estás utilizando la API de la versión 2.x, que no es compatible con la 3.x. Mi consejo es que ejecutes el comando que quieres a través de la guía, y luego compruebes el diálogo del historial de procesamiento que muestra el comando python equivalente para esa operación. A continuación, puede copiarlo y adaptarlo según sea necesario.

2voto

Befuzzled Puntos 18

Gracias a ndawson He encontrado la solución. Basándome en el diálogo del historial de procesamiento, he utilizado el comando

    processing.run("native:selectbylocation",
                   {'INPUT': layer2.name(), 'PREDICATE': [0],
                    'INTERSECT': layer.name(), 'METHOD': 0})

Además, he tenido que configurar la opción "Ignorar características de entrada no válidas". Muchas gracias, chicos.

1voto

Droidnoid Puntos 141

Hay algo mal en los parámetros que proporcionas para processing.run (el mensaje de error dice que está esperando algo que tenga un atributo llamado feedback, pero estás proporcionando un entero).

Debería consultar la API de QGIS 3. Véase, por ejemplo: https://qgis.org/pyqgis/3.4/core/Processing/QgsProcessingAlgorithm.html#qgis.core.QgsProcessingAlgorithm.run

Encontrará algunos ejemplos en la documentación: https://docs.qgis.org/testing/en/docs/user_manual/processing/console.html

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X