On Thu, 31 Jan 2019 at 02:46, Bjørn Burr Nyberg <bjorn.nyb...@uib.no> wrote: > > Dear QGIS community, > > In the spirit of open-source I am trying to convert a set of scripts that ive > designed in ArcMap to QGIS 3.x. I hope that this will enable a broader > community of individuals to use the workflows ive designed. The original > scripts can be found at > https://github.com/BjornNyberg/NetworkGT/tree/master/Scripts
Great! > My problem is that in my first attempt to convert the scripts, QGIS either > crashes or gives the following error. > > 2019-01-30T16:51:27 WARNING Traceback (most recent call last): > File > "C:/PROGRA~1/QGIS3~1.4/apps/qgis/./python/plugins\processing\gui\AlgorithmDialog.py", > line 238, in on_complete > self.feedback.pushInfo(self.tr('Execution completed in {0:0.2f} > seconds').format(time.time() - start_time)) > NameError: free variable 'self' referenced before assignment in > enclosing scope > This was a bug fixed already - are you on QGIS 3.4? Anyone, the problem stems from this line: templines = st.run('native:splitwithlines',parameters) This should be: templines = st.run('native:splitwithlines',parameters,context=context, feedback=feedback) I.e. you need to pass the child algorithm the context and feedback objects given to your algorithm, to allow that child algorithm to push feedback messages and access existing map layers. Two other suggestions: except Exception as e: feedback.pushInfo(QCoreApplication.translate('Sample_Area','%s'%(e))) Here this would be better as: except Exception as e: feedback.reportError(QCoreApplication.translate('Sample_Area','%s'%(e))) (reportError instead of pushInfo) And for part in geom: #Check for multipart polyline parts.append(QgsGeometry.fromPolyline(part)) #intersected geometry This should be for part in geom.asGeometryCollection(): #Check for multipart polyline parts.append(QgsGeometry.fromPolyline(part)) #intersected geometry (or, nicer for 3.4): for part in geom.parts(): #Check for multipart polyline parts.append(QgsGeometry.fromPolyline(part)) #intersected geometry Hope that helps! Nyall > I have established that this error occurs at the very end of the script when > calling ' return {self.Branches:dest_id,self.Nodes:dest_id2}'. I do not > believe that I have explicitly defined self anywhere in the processAlgorithm > function itself. The algorithms themselves work as intended and the > shapefiles are created before the program crashes. > > I am not a programmer by trait so I'm not entirely sure how to problem solve > this error and any help would be most appreciated. I can also provide a test > dataset if that is helpful. > > Cheers, > Bjorn > ----------------------------- > Postdoctoral Fellow > Department of Earth Science, University of Bergen > PO Box 7803, 5020, Bergen, Norway > +47 485 024 08 > > > _______________________________________________ > QGIS-Developer mailing list > QGIS-Developer@lists.osgeo.org > List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer > Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer _______________________________________________ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer