3 votos

QGIS procesamiento de secuencias de comandos, más de una barra de progreso generado en la interfaz gráfica de usuario?

Ya que a veces tengo de proceso de producto cruzado de dos capas vectoriales con secuencias de comandos de geoprocesamiento, me causa el uso de bucles anidados como

source_count = source_layer.featureCount()
target_count = target_layer.featureCount()
nsource = 1.0
for f_source in source_layer.getFeatures():
    ntarget = 1.0
    for f_target in target_layer.getFeatures():
        #do something
        targetprogress = 100 * (ntarget / target_count)
        ntarget += 1
    sourceprogress = 100  *(nsource / source_count)
    progress.setPercentage(sourceprogress)
    nsource += 1

Cuando ambas capas están formadas de, digamos, unos diez miles de características, el proceso puede ser muy lento, y a comunicar al usuario que el tratamiento todavía está vivo, no tendría mucho sentido tener una barra de progreso para cada bucle interno y externo.

No creo que esto se puede lograr con el estándar de procesamiento de herramientas gui, pero esto, combinado con algunos Qt widgets? Me gustaría hacer el procesamiento de una secuencia de comandos, no es un plugin, en el que la Qt formulario de diversos QprogressBars sería fácil de implementar.

2voto

SteveLambert Puntos 126

Puede importar las funciones necesarias en su secuencia de comandos con:

from PyQt4.QtGui import QProgressBar
from qgis.gui import QgsMessageBar

A continuación, puede llamar a la barra de progreso con:

msgBar= iface.messageBar()
pb= QProgressBar()
msgBar.pushWidget(pb, QgsMessageBar().INFO, 0)

y actualizar el valor en la barra de progreso en el bucle:

pb.setValue(Your_variable)

Sin embargo, como se señaló, la actualización de una barra de progreso en el bucle interno puede ralentizar el proceso. Saludos,

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