Dear all, I am trying to create a map from qgis. I have added a few layers and created a layout in qgis. All I want is to create a script to get a map from the layer on the layout that I have created in qgis. I have attached the code. I am thinking of activating each layer at a time so that only the activated layer will be on the layout and a map will get generated. While trying to activate with iface.setactivelayer I am facing an error. So no layer is added to the layout. I have added the code and image of the generated map. [image: Day-1.png]
[image: image.png] How to access the layer in qgis? how to deactivate the first layer and then move to the next layer for the next map. Regards, Noshin
#!/usr/bin/env python # coding: utf-8 # In[61]: import os from datetime import datetime, timedelta from qgis.core import ( QgsGeometry, QgsMapSettings, QgsPrintLayout, QgsMapSettings, QgsMapRendererParallelJob, QgsLayoutItemLabel, QgsLayoutItemLegend, QgsLayoutItemMap, QgsLayoutItemPolygon, QgsLayoutItemScaleBar, QgsLayoutExporter, QgsLayoutItem, QgsLayoutPoint, QgsLayoutSize, QgsUnitTypes, QgsProject, QgsFillSymbol, QgsAbstractValidityCheck, check, ) from qgis.PyQt.QtGui import ( QPolygonF, QColor, ) from qgis.PyQt.QtCore import ( QPointF, QRectF, QSize, ) # In[70]: project_path = r"C:\Users\FFWS\Desktop\Boundary_Generation_For_2D\2D Overland Flow Model-Boundary Generation\2D Overland Flow Model-Boundary Generation\bin\Debug\C2_FloodMap_SERM_V01.qgz" project_instance = QgsProject.instance() project_instance.read(project_path) print(project_instance.fileName()) # In[71]: map_layers = QgsProject.instance().mapLayersByName('V1054_SWRM_SW_2D PS_LR_Dike_Updt_statBaseFlood Map_Day01')[0] iface.setActiveLayer(map_layers) # In[64]: projectInstance = QgsProject.instance() layoutmanager = projectInstance.layoutManager() layout = layoutmanager.layoutByName("SW_Day_1") # In[65]: map_label = QgsLayoutItemLabel(layout) # In[67]: firstDay ="2023-11-25 09:00:00" dateTimeObj = datetime.strptime(firstDay, "%Y-%m-%d %I:%M:%S" ) secDay=(dateTimeObj+ timedelta(days = 1)) PreparedDayValue = secDay.strftime('%Y-%m-%d %I:%M:%S') map_label.setText("Valid for: " +firstDay.strip('"')+ " "+"to" +" "+PreparedDayValue + ", Prepared on: " + firstDay) # In[68]: layout.removeLayoutItem(map_label) layout.addLayoutItem(map_label) # In[69]: map_label.attemptMove(QgsLayoutPoint(1.6, 0.5, QgsUnitTypes.LayoutInches)) exporter = QgsLayoutExporter(layout) exporter.exportToImage(r"C:\Users\FFWS\Desktop\Boundary_Generation_For_2D\2D Overland Flow Model-Boundary Generation\2D Overland Flow Model-Boundary Generation\bin\Debug\Day-1.png", QgsLayoutExporter.ImageExportSettings() ) # In[ ]:
_______________________________________________ QGIS-User mailing list QGIS-User@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-user Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user