Estoy tratando de escribir un script en python que se acerque a las extensiones de cada capa y luego exporte el lienzo como una imagen después de cada zoom.
Escribí un bucle for que itera a través de cada capa, hace que cada una sea activa, una a la vez, luego obtiene las extensiones de la capa mientras está activa, y luego se acerca a la extensión.
Aunque el script itera con éxito a través de cada capa, el lienzo del mapa no cambia, lo que significa que solo se acerca a la extensión de la primera capa en la lista y se detiene allí.
Incluso agregué un canvas.refresh()
al final del bucle, pero nada. Además, agregué una función de espera usando time.sleep(5)
, pero tampoco tuve suerte.
Puedo ver que cada capa en la lista se está iterando porque cada una está seleccionada y resaltada a través de setActiveLayer
, pero ¿cómo puedo acercar cada extensión de capa activa una a la vez, quizás cada 5 segundos? ¿Y cómo puedo hacer que el lienzo del mapa refleje esta selección, y se acerque?
Este es el código:
import math
import time
from qgis.core import QgsProject
for layer in QgsProject.instance().mapLayers().values():
qgis.utils.iface.setActiveLayer(layer)
extent = layer.extent()
canvas.setExtent(extent)
iface.mapCanvas().zoomScale(700)
time.sleep(5)
canvas.refresh()
print(extent)
Please note that "QGIS" and "iface" are not translated as they are proper nouns.