8 votos

¿Cómo puedo usar QGIS consola de python para iterar a través de una simple capa de consultas y png salidas?

Soy realmente nuevo en QGIS codificación y estoy teniendo un tiempo difícil encontrar (sobre todo) de la api de clases/funciones para llevar a cabo las acciones de la ventana del Generador de Consultas.

Estoy básicamente tratando de hacer esto:

  1. Iterar desde n=1 a 200...

  2. Consulta layerA donde field_id = n

  3. Consulta layerB donde field_id = n

  4. Consulta layerC donde field_id = n

  5. Guardar como img_n.png

Bastante simple, creo, pero se ha convertido en un verdadero dolor de cabeza para hacer a mano en la interfaz de usuario.

4voto

TrojanName Puntos 101

Bueno, por mi propia cuenta, finalmente excavado la función clave que necesitaba: setSubsetString(). Quien nombre a esta cosa?...no parece muy intuitivo en cuanto a su función.

Aquí está el esqueleto de la que estoy trabajando ahora:

qgis.utils.iface
canvas = qgis.utils.iface.mapCanvas()
allLayers = canvas.layers()
for n in range(1, 201)
    for layer in allLayers:
        layer.setSubsetString('field_id = ' + str(n))
    canvas.refresh()
    canvas.saveAsImage('img_' + str(n) + '.png')

canvas.refresh()

0voto

charlesbridge Puntos 871

Yo sugeriría que usted vaya a través de su documentación de la API.

Volviendo a su pregunta, usted puede iterar a través de todas las capas en la tabla de contenido utilizando:

canvas = qgis.utils.iface.mapCanvas()
allLayers = canvas.layers()
for i in allLayers:
   print i.name()
   #Do other stuff here.

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