<div dir="ltr">Dear QGIS Users,<div><br></div><div>Often we want to compute for band statistics for our stacked layers (i.e., bands 1 to 9). In QGIS, the available plugin for this is the Zonal Statistics plugin but it only computes for one band at a time, and as we suspect if our input is a stacked layer the plugin seems to get the average values for all the stacked layers in a polygon. </div>

<div><br></div><div>So, I searched for some answers in the web, and I found a python script. I used it and it seems to be working well, but this only works for one band, So, what I did was to copy the script and change the band number for each copy. However, this resulted in a very long script, and I think there is a much better script than this. Can someone help me improve my script. I am just new to Python. I just completed a basic Python training course.</div>


<div><br></div><div><div>import qgis.analysis</div><div>vectorlayer=qgis.utils.iface.mapCanvas().layer(0)</div><div>rasterfile = qgis.utils.iface.mapCanvas().layer(1).source()</div><div>zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile,str(1),1)</div>

<div>zonalstats.calculateStatistics(None)</div><div>import qgis.analysis</div><div>vectorlayer=qgis.utils.iface.mapCanvas().layer(0)</div><div>rasterfile = qgis.utils.iface.mapCanvas().layer(1).source()</div><div>zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile,str(2),2)</div>

<div>zonalstats.calculateStatistics(None)</div><div>import qgis.analysis</div><div>vectorlayer=qgis.utils.iface.mapCanvas().layer(0)</div><div>rasterfile = qgis.utils.iface.mapCanvas().layer(1).source()</div><div>zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile,str(3),3)</div>

<div>zonalstats.calculateStatistics(None)</div><div>import qgis.analysis</div><div>vectorlayer=qgis.utils.iface.mapCanvas().layer(0)</div><div>rasterfile = qgis.utils.iface.mapCanvas().layer(1).source()</div><div>zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile,str(4),4)</div>

<div>zonalstats.calculateStatistics(None)</div><div>import qgis.analysis</div><div>vectorlayer=qgis.utils.iface.mapCanvas().layer(0)</div><div>rasterfile = qgis.utils.iface.mapCanvas().layer(1).source()</div><div>zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile,str(5),5)</div>

<div>zonalstats.calculateStatistics(None)</div><div>import qgis.analysis</div><div>vectorlayer=qgis.utils.iface.mapCanvas().layer(0)</div><div>rasterfile = qgis.utils.iface.mapCanvas().layer(1).source()</div><div>zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile,str(6),6)</div>

<div>zonalstats.calculateStatistics(None)</div><div>import qgis.analysis</div><div>vectorlayer=qgis.utils.iface.mapCanvas().layer(0)</div><div>rasterfile = qgis.utils.iface.mapCanvas().layer(1).source()</div><div>zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile,str(7),7)</div>

<div>zonalstats.calculateStatistics(None)</div></div><div><br></div><div>We used this tool most often to determine the average reflectance or backscatter from our images per zone (polygon).</div><div><br></div><div>Thanks in advance,</div>

<div>-Leo</div><div><div dir="ltr"><input type="hidden"><input type="hidden"><div></div></div>
</div></div>