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
[email protected]
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user