Suite

PyQGIS fait une capture d'écran de mapCanvas après l'appel de setExtent

PyQGIS fait une capture d'écran de mapCanvas après l'appel de setExtent


J'ai la fonction suivante :

def createScreenshots(layer): counter = 0 pour la fonctionnalité dans layer.getFeatures(): counter += 1 point = feature.geometry().asPoint() qgis.utils.iface.mapCanvas().setCenter(point) qgis.utils .iface.mapCanvas().refreshAllLayers() qgis.utils.iface.mapCanvas().saveAsImage("D:m	esting" + str(counter) + ".png">

Vous pouvez utiliserQgsMapCanvas.mapCanvasRefreshedSIGNAL pour n'enregistrer la carte que lorsque la toile a fini de peindre les calques. Après l'enregistrement, zoomez sur la fonctionnalité suivante, et ainsi de suite.

layer = iface.activeLayer() ids = layer.allFeatureIds() def exportMap() : identifiants globaux iface.mapCanvas().saveAsImage( u"/output/folder/{}.png">
ids = Aucun def createScreenshot4(layer): identifiants globaux ids = layer.allFeatureIds() def exportMap(): identifiants globaux qgis.utils.iface.mapCanvas().saveAsImage( "D:mao {}.png">

Vous pouvez utiliser une classe QTimer, qui permet d'attendre quelques millisecondes avant d'exécuter une fonction/instruction spécifiée.

La ligne à utiliser est quelque chose comme ceci :

QTimer.singleShot(1000, saveMap)

où le premier argument est exprimé en millisecondes (1000 ms = 1 seconde) et le deuxième argument est la fonction à appeler.

Vous pouvez réécrire votre code d'origine de cette manière :

def createScreenshots(layer): counter = 0 def saveMap(): qgis.utils.iface.mapCanvas().saveAsImage("D:m	esting" + str(counter) + ".png" >PartagerAméliorer cette réponserépondu 9 mars 17 à 15:03mgrimgri14.9k6 insignes d'or37 insignes d'argent71 insignes de bronze
							

Voir la vidéo: Windows 7, comment faire des captures décran avec loutil capture