Loading [MathJax]/extensions/TeX/mathchoice.js

6 votos

Uso del algoritmo de procesamiento en el plugin de QGIS

Estoy construyendo un plugin en QGIS, una de sus partes es el algoritmo de procesamiento: la intersección. Quiero guardar el resultado como capa de memoria, y luego trabajar en él. El siguiente código funcionaba bien, no cambió nada (no cambié nada), y: ¡boom! dejó de funcionar. El problema está en la segunda línea:

processing.runandload("qgis:intersection",selectedLayer,selectedLayer_2, "memory:temp_layer")
layer = QgsMapLayerRegistry.instance().mapLayersByName("memory:temp_layer")[0]

La capa de memoria está creada (puedo verla en QGIS) pero no puedo definir la 'capa'. Me sale un error:

IndexError: índice de la lista fuera de rango.

¿Por qué? :(

4voto

Mue Puntos 2469

Sospecho que esto depende probablemente de la Procesamiento plugin versión para cada uno de esos ordenadores. Su siguiente línea comprueba la lista de capas cargadas y sólo definirá layer si una capa tiene el nombre memory:temp_layer .

layer = QgsMapLayerRegistry.instance().mapLayersByName("memory:temp_layer")[0]

En las versiones más antiguas del Procesamiento puede definir el nombre de la capa de memoria "memory:any_name" . La línea de arriba se trabajo.

En las últimas versiones, se utiliza el nombre por defecto de la herramienta (por ejemplo "Intersection" ). La línea de arriba no lo hará trabajo.


Le sugiero que compruebe el Procesamiento para cada uno de sus ordenadores y actualizarlo a la última versión (actualmente 2.12.2) desde la barra de herramientas:

Plugins > Gestionar e instalar plugins...

Y utilizar la siguiente línea en su lugar:

layer = QgsMapLayerRegistry.instance().mapLayersByName("Intersection")[0]

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