Suite

L'atlas QGIS défini avec PyQGIS et un modèle QPT exporte les mêmes cartes

L'atlas QGIS défini avec PyQGIS et un modèle QPT exporte les mêmes cartes


J'ai besoin de générer un atlas pour chaque entité à partir d'une couche pour le reporting. Il sera créé quelques cartes. Le centre de chaque carte doit être focalisé sur chaque caractéristique. Dans cette tâche, j'utilise un modèle QPT prédéfini. Dans QGIS Composer Manager, tout fonctionne parfaitement. Ensuite, j'enregistre le fichier QPT en tant que modèle et j'essaie d'automatiser le processus avec un plugin utilisant cette fonction. Il est basé sur ce fil de discussion : charger par programme le compositeur à partir d'un modèle et générer un atlas à l'aide de pyQgis

alayer=iface.activeLayer() # Ajouter toutes les couches dans le canevas de la carte pour rendre myMapRenderer = self.iface.mapCanvas().mapRenderer() # Charger le modèle à partir du fichier myComposition = QgsComposition(myMapRenderer) template = 'atlas16.qpt' myFile = ' C://Users//maria//.qgis2//composer_templates//atlas16.qpt' myTemplateFile = file(myFile, 'rt') myTemplateContent = myTemplateFile.read() myTemplateFile.close() myDocument = QDomDocument() myDocument. setContent(myTemplateContent) myComposition.loadFromTemplate(myDocument) # Obtenir la composition de la carte et définir l'échelle myAtlasMap = myComposition.getComposerMapById(0) # Configurer l'Atlas myAtlas = QgsAtlasComposition(myComposition) myAtlas.setCoverageLayer(alayer) myAtlas.setComposerMap(myAtlas.setComposerMap(myComposition) True) myAtlas.setHideCoverage(False) # Générer l'atlas myAtlas.beginRender() pour i dans la plage (0, myAtlas.numFeatures()): myAtlas.prepareForFeature( i ) jobs = "D://Krzysztof//Skrypty//Archiwum //" output_jpeg = jobs + str(i)+ "_BMS_plan.jpg">

Vous devez configurer votre carte pour utiliser l'étendue de l'entité de l'atlas, en utilisant QgsComposerMap.setAtlasScalingMode, par exemple

myAtlasMap.setAtlasScalingMode( QgsComposerMap.Auto )

Placez cette ligne après avoir configuré votre atlas, mais avant l'appel beginRender.


Voir la vidéo: Export de plusieurs cartes via un atlas