3 votos

¿Cómo iterar sobre características y abortar la iteración con la pulsación de una tecla en PyQGIS?

Me gustaría ejecutar un bucle con PyQGIS, debe esperar a que el usuario presione una tecla ya sea SpaceBar o Escape para continuar.

canvas = qgis.utils.iface.mapCanvas()
aLayer = canvas.currentLayer()

feat = QgsFeature()
iter = aLayer.getFeatures()

while iter.nextFeature(feat):
    aLayer.removeSelection()
    aLayer.select(feat.id())
    qgis.utils.iface.actionZoomToSelected().trigger()

    <wait for user input>

¿Cómo puedo hacerlo?

7voto

Elliott Maynard Puntos 11

Nota: Esta respuesta fue publicada para QGIS 2. Aquí puede encontrar una versión de QGIS 3.


Si he entendido bien, puedes seguir este flujo de trabajo para iterar a través de las características pulsando la barra espaciadora:

  1. Abra QGIS, cargue su(s) capa(s) y guarde su proyecto.

  2. Descargar el script iterar_características.py y guárdelo en la misma carpeta que su proyecto QGIS.

  3. Abra la consola de QGIS Python ( Plugins->Python console ), escriba la siguiente línea y pulse Enter:

     import iterate_features
  4. Ahora haga clic en cualquier lugar de su mapa o TdC.

Ahora debería poder seleccionar y ampliar la siguiente característica pulsando la barra espaciadora o terminar la iteración pulsando Escape.

Debería funcionar en la capa activa en la TdC, cada vez que se cambia la capa activa, el iterador se reinicia.

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