Thanks Nicolas for your reply.<div><br></div><div>It does seem to be a memory problem, although it doesnt show the typical "Memory Error". Without the script I could do that operation with the same rasters. It involves four files and it is basically (a-b)*(c-d). </div><div><br></div><div>GDAL also failed to load all files at once, so I finally splited the operation in 3. (a-b) then (c-d) and finaly the multiplication of the outputs. Its much more time consuming but it works.</div><div><br></div><div>I still dont understand why using the tool directly from the UI it wrks and it doesnt from the script. Will write back if I find the correct way.</div><div><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
Hi,<br>
<br>
I have never use the Qgis raster calculator via Python so I can't help there. What is the problem? Does Qgis crash?  If so, the rasters may be to big for the memory.   You mentioned the rasters were very big and that may be the problem.  I recommend you test the calculation with smaller rasters.  I think they are working for a solution for the big raster math.<br>
<br>
Saga and gdal calculator may help.  Saga will probably try to load everything in memory an may crash.  Gdal is made to calculate very big rasters but layers must be in the same CRS and have the same pixel posting and extent.  You can use it direction in the Osgeo command prompt or via processing.<br>
<br>
Nicolas<br>
<br>
<br>
Envoyé de mon iPad<br>
<br>
> Le 13 sept. 2016 à 05:42, ROMAN HG [via OSGeo.org] <<a href="javascript:;" onclick="_e(event, 'cvml', 'ml-node+s1560n5285491h82@n6.nabble.com')">ml-node+s1560n5285491h82@n6.nabble.com</a>> a écrit :<br>
><br>
> Hi,<br>
><br>
> I'm trying to do raster calculations with big and multiple rasters. I am new to python, but I managed to use the QgsRasterCalculator algorithm to do the average of three rasters.<br>
><br>
> The problem comes when I introduce a forth layer and try to do a more complex equation:<br>
><br>
> #calculating c4s ( [c1-c2]*[c0-c3] )<br>
><br>
>     #F1_30<br>
> A=processing.getObjectFromUri(<wbr>path + "/F1_30c1.tif")<br>
> B=processing.getObjectFromUri(<wbr>path + "/F1_c2.tif")<br>
> C=processing.getObjectFromUri(<wbr>path + "/F1_30c0.tif")<br>
> D=processing.getObjectFromUri(<wbr>path + "/F1_c3.tif")<br>
><br>
> entries=[]<br>
> rasA=QgsRasterCalculatorEntry(<wbr>)<br>
> rasA.ref='A@1'<br>
> rasA.raster=A<br>
> rasA.bandNumber=1<br>
> entries.append(rasA)<br>
><br>
> rasB=QgsRasterCalculatorEntry(<wbr>)<br>
> rasB.ref='B@1'<br>
> rasB.raster=B<br>
> rasB.bandNumber=1<br>
> entries.append(rasB)<br>
><br>
> rasC=QgsRasterCalculatorEntry(<wbr>)<br>
> rasC.ref='C@1'<br>
> rasC.raster=C<br>
> rasC.bandNumber=1<br>
> entries.append(rasC)<br>
><br>
> rasD=QgsRasterCalculatorEntry(<wbr>)<br>
> rasD.ref='D@1'<br>
> rasD.raster=D<br>
> rasD.bandNumber=1<br>
> entries.append(rasD)<br>
><br>
> F1_30c4=QgsRasterCalculator('(<wbr>( A@1 - B@1 ) * ( C@1 - D@1 ))', path + '/F1_30c4.tif', 'GTiff', base.extent(), base.width(), base.height(), entries).processCalculation()<br>
><br>
> I think that the problem is recognising the formula. I have tried it on the console doing several changes and it doesnt work.<br>
><br>
> Is it possible to do this operation with QgsRasterCalculator?? Or how can I use the gdal_calc algorithm or the saga raster calculator??<br>
><br>
><br>
> Thanks all<br>
</blockquote></div>