<div dir="ltr"><div><div>To try and get a useful error message, I attempted to use the processing toolbox GUI to run the r.buffer algorithm (as in file_buffer=processing.runalg("grass:r.buffer",file_grid_r,buffer_sizes,1,False,extent,0,None)['output'])  using similar inputs.<br><br>The procedure fails. On the 'Log' tab, this error message appears:<br><br>> Algorithm r.buffer - Creates a raster map layer showing buffer zones surrounding cells that contain non-NULL category values. starting...<br>><br>> r.external input="/tmp/processingb16daa62fcb94d849f9a63e8bbc25b68/43fe856db3554415bf72198f57873202/GRID.sdat" band=1 output=tmp14960641285513 --overwrite -o<br>><br>> g.region n=3.6163546031 s=-4.1833333969 e=40.1165319957 w=34.2834319957 res=0.008333<br>><br>> r.buffer input=tmp14960641285513 distances="25" units=kilometers output=output5a1c9f3f6bad429bb777c1bee553a685 --overwrite<br>><br>> g.region raster=output5a1c9f3f6bad429bb777c1bee553a685<br>><br>> r.out.gdal --overwrite -c createopt="TFW=YES,COMPRESS=LZW" input=output5a1c9f3f6bad429bb777c1bee553a685 output="/tmp/processingb16daa62fcb94d849f9a63e8bbc25b68/0a511ee06bd04de4b01d5386d68d159a/output.tif"<br>><br>> Cleaning up temporary files...<br>><br>> Starting GRASS GIS...<br>><br>> ERROR: is not a valid GRASS Location because PERMANENT Mapset is missing<br>><br>> Exiting...<br>><br>> Cleaning up temporary files...<br>><br>> Starting GRASS GIS...<br>><br>> ERROR: is not a valid GRASS Location because PERMANENT Mapset is missing<br>><br>> Exiting...<br>><br>> Converting outputs<br>><br>> Loading resulting layers<br>><br>><br>> The following layers were not correctly generated.<br>><br>> Buffer<br>><br>> You can check the log messages to find more information about the execution of the algorithm<br><br>This is at least an error message. Why doesn't processing.runalg return this error message? Obscuring it makes troubleshooting impossible. Because the error is not passed through to the python console, I cannot even be sure whether the error that occurs when I use the processing toolbox GUI is the same error that is occurring when I run processing.runalg, I'm just guessing.<br><br>The processing.log file shows only lines like this:<br><br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">ALGORITHM|2017-05-29 15:22:08|processing.runalg("grass7:r.buffer","/tmp/processingb16daa62fcb94d849f9a63e8bbc25b68/43fe856db3554415bf72198f57873202/GRID.sdat","25",1,False,"34.2834319957,40.1165319957,-4.1833333969,3.6163546031",0,None)<br></blockquote><br></div>Kind regards<br><br></div>Stephen<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 26, 2017 at 7:13 PM, Stephen Bosch <span dir="ltr"><<a href="mailto:posting@vodacomm.ca" target="_blank">posting@vodacomm.ca</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<br><br>I'm running QGIS 2.18.3 on Gentoo Linux and I have adapted a pyqgis script to run standalone, mostly so that I can run it in an IDE and use the debugger. I'm using a combination of SAGA and GRASS algorithms in the script and handing layers back and forth.<br><br>Consider this snippet of code:<br><br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">#import and buffer grid<br>file_grid=path+"Data/grid_map.<wbr>shp"<br>grid_v = QgsVectorLayer(file_grid, "grid", "ogr")<br>QgsMapLayerRegistry.instance()<wbr>.addMapLayer(grid_v)<br>extent="34.<a href="tel:(283)%20431-9957" value="+12834319957" target="_blank">2834319957</a>,40.<wbr>1165319957,-4.1833333969,3.<a href="tel:(616)%20354-6031" value="+16163546031" target="_blank">616<wbr>3546031</a>"<br>file_grid_r=processing.runalg(<wbr>"saga:shapestogrid",grid_v,"<wbr>TENSION_KV",0,4,0,1,3,extent,<wbr>0.008333,1,None)['GRID']<br>file_buffer=processing.runalg(<wbr>"grass:r.buffer",file_grid_r,<wbr>buffer_sizes,1,False,extent,0,<wbr>None)['output']<br>buffer= QgsRasterLayer(file_buffer)<br>QgsMapLayerRegistry.instance()<wbr>.addMapLayer(buffer)<br></blockquote><br>The issue is that the processing.runalg("grass:r.<wbr>buffer".. returns a path that does not exist. It is as though it is generating the layer target name, but not actually writing the file. But there is also no error message, and nothing appears in the processing log. The error message<br><br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">ERROR 4: `/tmp/<wbr>processing1bd9334de08f4c9abeb2<wbr>27e4b9f5a5d2/<wbr>e861d6518096485ca004a3efe2b9a9<wbr>a8/output.tif' does not exist in the file system,<br></blockquote><br>and is not recognised as a supported dataset name.<br><br>appears as soon as anything tries to use the output.tif layer.<br><br>Note that it does not matter if I specify a target layer or not -- in neither case is it generated.<br><br>The most frustrating aspect here is that there are no useful error messages I can use to determine what is actually going wrong here. I'd be grateful for any feedback or assistance.<span class="HOEnZb"><font color="#888888"><br><br>Stephen<br></font></span></div>
</blockquote></div><br></div>