<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><title>Python script to iterate through attributes and then refresh the canvas - doesn't show any map....</title><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.E-mailStijl18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=NL link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi Joris,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Thanks for your suggestion – didn’t realize atlas worked this way. It however does not completely do what I want to do – the layer which it changes the filter for also has specific formatting to highlight the region etc. AND the OSM layer doesn’t always display right. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Any other suggestions anyone?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><br>Frank<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Van:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Joris Hintjens [mailto:jorishin@gmail.com] <br><b>Verzonden:</b> 04 November 2014 11:27<br><b>Aan:</b> Frank van Baar<br><b>CC:</b> Qgis-user@lists.osgeo.org<br><b>Onderwerp:</b> Re: [Qgis-user] Python script to iterate through attributes and then refresh the canvas - doesn't show any map....<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Why not use atlas generation in the print composer?<o:p></o:p></p><div><p class=MsoNormal> Seems to me this corresponds with your „what i’m trying to achieve”<o:p></o:p></p></div><div><p class=MsoNormal>grts<o:p></o:p></p></div><div><p class=MsoNormal>Joris<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Op 4-nov.-2014, om 09:14 heeft Frank van Baar <<a href="mailto:frank@van-baar.com">frank@van-baar.com</a>> het volgende geschreven:<o:p></o:p></p></div><p class=MsoNormal><br><br><o:p></o:p></p><div><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>Hi,</span><o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>Am</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>completely</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>stuck with a</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>QGIS</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>project in Python and tried everything but nothing seems to work.</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>The python script does work</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>as such</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>BUT the canvas never shows the map and therefor the exported maps are empty….</span><span lang=EN-US> </span><o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>What I’m trying to achieve:</span><o:p></o:p></p><p><span lang=EN-US style='font-family:Symbol;color:#1F497D'>·</span><span lang=EN-US style='font-family:"Courier New";color:#1F497D'>      </span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>Create a Python script that iterates through a series of</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>ca. 2500</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>polygons</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>based on attribute value, zoom to layer extend and save the canvas for each attribute as an image file.</span><o:p></o:p></p><p><span lang=EN-US style='font-family:Symbol;color:#1F497D'>·</span><span lang=EN-US style='font-family:"Courier New";color:#1F497D'>      </span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>I then use the image files in other</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>documents</span><o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>The issue is that while manually I get the canvas to reload and display the map, this doesn’t happen when running the python script. Have tried couple of ways: </span><o:p></o:p></p><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>1.     </span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>Don’t load the project each time and just change the filter</span><o:p></o:p></p><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>2.     </span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>Add sleep timers to give the canvas time to refresh etc.</span><o:p></o:p></p><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>3.     </span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>Tried different QGIS versions (2.2, 2.4 & 2.6 on Win 64x)</span><o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>But all to no avail….</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>Hope somebody’s got a great idea how to solve it.</span><o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>Regards,</span><o:p></o:p></p><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>Frank</span><o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><p><i><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>Python code:</span></i><o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'># File location & specifications </span><o:p></o:p></p><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>PROJECTPATH = 'C:/Users/Frank/Documents</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>/Targetting/Kaarten/'</span><o:p></o:p></p><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>PROJECTFILE = 'C:/Users/Frank/Documents</span><span lang=EN-US> </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>/Targetting/TargettingkaartV26qgs.qgs'</span><o:p></o:p></p><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>EXTSNAPSHOTS = '.jpg'</span><o:p></o:p></p><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>EXTSNAPSHOTS2 = '.png'</span><o:p></o:p></p><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>SUFFIX = '65Plus_v1'</span><o:p></o:p></p><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>last_id = 1</span><o:p></o:p></p><p><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>while last_id < 5:</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'># Clear map canvas</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>QgsMapLayerRegistry.instance().removeAllMapLayers()</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>qgis.utils.iface.mapCanvas().refresh()</span><o:p></o:p></p><div><p class=MsoNormal><span lang=EN-US>        </span><o:p></o:p></p></div><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'># Open QGIS project</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>QgsProject.instance().setFileName(PROJECTFILE)</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>QgsProject.instance().read()</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>qgis.utils.iface.mapCanvas().refresh()</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>time.sleep(30)  </span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>canvas = qgis.utils.iface.mapCanvas()</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>acl = canvas.layer(0)</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>qgis.utils.iface.mapCanvas().layer(0).selectAll()</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>selection = 'RijNo = ' + str(last_id) </span><o:p></o:p></p><div><p class=MsoNormal><span lang=EN-US>        </span><o:p></o:p></p></div><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>acl.setSubsetString( selection )</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>acl.triggerRepaint</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>canvas.layer(1).triggerRepaint  </span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>time.sleep(5)   </span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>qgis.utils.iface.setActiveLayer(acl)</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'># Zoom in and out to refresh potential issues with OpenLayer</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>canvas.zoomByFactor(3)</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>canvas.zoomByFactor(0.5)</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>qgis.utils.iface.zoomToActiveLayer()</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>qgis.utils.iface.mapCanvas().refresh()</span><o:p></o:p></p><div><p class=MsoNormal><span lang=EN-US>        </span><o:p></o:p></p></div><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>time.sleep(10)</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'># Save project</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>p=QgsProject.instance()</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>p.setFileName(PROJECTFILE)</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>p.write()</span><o:p></o:p></p><p><span lang=EN-US>        </span><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'># Save content of map canvas as image</span><o:p></o:p></p><p><span lang=EN-US>       </span><span lang=EN-US> </span><span style='font-family:"Calibri","sans-serif";color:#1F497D'>p = str(last_id) + 'kaart_' </span><o:p></o:p></p><p>        <span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>qgis.utils.iface.mapCanvas().saveAsImage(PROJECTPATH+ p + SUFFIX + EXTSNAPSHOTS)</span><o:p></o:p></p><p><span lang=EN-US>       </span><span lang=EN-US> </span><span style='font-family:"Calibri","sans-serif";color:#1F497D'>last_id = last_id +1</span><o:p></o:p></p></div><p class=MsoNormal><span lang=EN-US>_______________________________________________<br>Qgis-user mailing list<br></span><a href="mailto:Qgis-user@lists.osgeo.org"><span lang=EN-US>Qgis-user@lists.osgeo.org</span></a><span lang=EN-US><br></span><a href="http://lists.osgeo.org/mailman/listinfo/qgis-user"><span lang=EN-US>http://lists.osgeo.org/mailman/listinfo/qgis-user</span></a><span lang=EN-US><o:p></o:p></span></p></div><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></div></body></html>