¿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í
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.
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.
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 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.