7 votos

En QGIS, con un script de procesamiento, ¿cómo refrescar el lienzo?

En términos muy sencillos para principiantes... ¿cómo refresco el lienzo del mapa de QGIS (o una capa específica con nombre) como parte de un script de procesamiento?

Tengo un script de procesamiento extremadamente simple (abajo) configurado sólo para que sea realmente fácil cambiar una variable del proyecto. Una de las capas de mi mapa tiene una regla de estilo condicional configurada en base a la variable de proyecto. Después de ejecutar el script, actualmente tengo que actualizar manualmente el lienzo (haciendo clic en el botón de actualización o moviendo el lienzo) para actualizar la visualización del mapa. Por razones de elegancia y eficiencia, me gustaría que el script lo hiciera automáticamente.

Por favor, responda en los términos más sencillos - estoy muy fuera de mi alcance aquí.

El guión es el siguiente:

##variable_for_styling=number 0

from qgis.core import *
from PyQt4.QtCore import *

QgsExpressionContextUtils.setProjectVariable('NameOfMyProjectVariable',variable_for_styling)

9voto

Mue Puntos 2469

Puede utilizar iface.mapCanvas().refreshAllLayers() para refrescar todas las capas del lienzo. También sólo hay que importar un par de clases en lugar de utilizar import * que importa todas las clases de un módulo.

Así que tu guión podría ser así:

##variable_for_styling=number 0

from qgis.core import QgsExpressionContextUtils
from qgis.utils import iface

QgsExpressionContextUtils.setProjectVariable('NameOfMyProjectVariable',variable_for_styling)
iface.mapCanvas().refreshAllLayers()

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