I'm using a QGIS 2.8 in windows 10. I have 2 scripts that are working separately but when I write both in just one script, it doesn't work. The 1st script is to load one raster to QGIs with a defined legend, the 2nd script is to compose a print layout and convert it to an image (png) in a output directory. My entire script is:
from PyQt4.QtGui import * from PyQt4 import QtGui from PyQt4.QtCore import * from PyQt4.QtXml import * from PyQt4.QtCore import QSize from PyQt4 import QtCore from qgis import core, gui lyr = QgsRasterLayer("C:/PATRICIA/IG/TESTE/TEST/FWI_20150802.dat", "FWI_20150802") s = QgsRasterShader() c = QgsColorRampShader() c.setColorRampType(QgsColorRampShader.INTERPOLATED) i = [] i.append(QgsColorRampShader.ColorRampItem(8.5, QtGui.QColor('#2b9e27'), '8.5')) i.append(QgsColorRampShader.ColorRampItem(17.2, QtGui.QColor('#fee717'), '17.2')) i.append(QgsColorRampShader.ColorRampItem(24.6, QtGui.QColor('#ec7000'), '24.6')) i.append(QgsColorRampShader.ColorRampItem(38.3, QtGui.QColor('#cc292c'), '38.3')) i.append(QgsColorRampShader.ColorRampItem(100, QtGui.QColor('#75263b'), '100')) c.setColorRampItemList(i) s.setRasterShaderFunction(c) ps = QgsSingleBandPseudoColorRenderer(lyr.dataProvider(), 1, s) lyr.setRenderer(ps) QgsMapLayerRegistry.instance().addMapLayer(lyr) layers =iface.legendInterface().layers() canvas=iface.mapCanvas() for layer in layers: myFile = "C:/PATRICIA/IG/TESTE/Template.qpt" myTemplateFile = file(myFile, 'rt') myTemplateContent = myTemplateFile.read() myTemplateFile.close() myDocument = QDomDocument() myDocument.setContent(myTemplateContent, False) newcomp = iface.createNewComposer() newcomp.composition().loadFromTemplate(myDocument) newcomp.composition().refreshItems() c = iface.activeComposers()[0].composition() image = c.printPageAsRaster(0) image.save('C:/PATRICIA/IG/TESTE/OUTPUT/FWI_Arome.png','png')
My print layout composer appeared without layer! How can I solve this?
My current Script which print layout composer appeared without layer: `# coding: utf-8
#------------------------
from PyQt4.QtGui import *
from PyQt4 import QtGui
from PyQt4.QtCore import *
from PyQt4.QtXml import *
from PyQt4.QtCore import QSize
from PyQt4 import QtCore
from qgis import core, gui
lyr = QgsRasterLayer("C:/PATRICIA/IG/TESTE/TEST/FWI_20150802.dat", "FWI_20150802")
s = QgsRasterShader()
c = QgsColorRampShader()
c.setColorRampType(QgsColorRampShader.INTERPOLATED)
i = []
i.append(QgsColorRampShader.ColorRampItem(8.5, QtGui.QColor('#2b9e27'), '8.5'))
i.append(QgsColorRampShader.ColorRampItem(17.2, QtGui.QColor('#fee717'), '17.2'))
i.append(QgsColorRampShader.ColorRampItem(24.6, QtGui.QColor('#ec7000'), '24.6'))
i.append(QgsColorRampShader.ColorRampItem(38.3, QtGui.QColor('#cc292c'), '38.3'))
i.append(QgsColorRampShader.ColorRampItem(100, QtGui.QColor('#75263b'), '100'))
c.setColorRampItemList(i)
s.setRasterShaderFunction(c)
ps = QgsSingleBandPseudoColorRenderer(lyr.dataProvider(), 1, s)
lyr.setRenderer(ps)
QgsMapLayerRegistry.instance().addMapLayer(lyr)
layers =iface.legendInterface().layers()
canvas=iface.mapCanvas()
for layer in layers:
myFile = "C:/PATRICIA/IG/TESTE/Template.qpt"
myTemplateFile = file(myFile, 'rt')
myTemplateContent = myTemplateFile.read()
myTemplateFile.close()
myDocument = QDomDocument()
myDocument.setContent(myTemplateContent, False)
newcomp = iface.createNewComposer()
newcomp.composition().loadFromTemplate(myDocument)
newcomp.composition().refreshItems()
c = iface.activeComposers()[0].composition()
image = c.printPageAsRaster(0)
image.save('C:/PATRICIA/IG/TESTE/OUTPUT/FWI_Arome.png','png')`
for layer in layers:
and all the lines after it?