Hi everyone, I am trying to grasp how parameters are to be passed to Processing algorithms.
Thanks to Håvard Tveite's advice, I've understood that it is now done with a Python dictionary. I'm trying to use the grass7 algorithm v.to.rast. Processing.algorithmHelp (thanks for the tip, Håvard) gives the following output: ---------------- > Input parameters > ---------------- > > input: <QgsProcessingParameterVectorLayer> > Input vector layer > > type: <QgsProcessingParameterEnum> > Input feature type > 0 - point > 1 - line > 2 - boundary > 3 - area > > where: <QgsProcessingParameterString> > WHERE conditions of SQL statement without 'where' keyword > > use: <QgsProcessingParameterEnum> > Source of raster values > 0 - attr > 1 - cat > 2 - va > 3 - z > 4 - dir > > attribute_column: <QgsProcessingParameterField> > Name of column for 'attr' parameter (data type must be numeric) > > rgb_column: <QgsProcessingParameterField> > Name of color definition column (with RRR:GGG:BBB entries) > > label_column: <QgsProcessingParameterField> > Name of column used as raster category labels > > value: <QgsProcessingParameterNumber> > Raster value (for use=val) > > memory: <QgsProcessingParameterNumber> > Maximum memory to be used (in MB) > > output: <QgsProcessingParameterRasterDestination> > Rasterized > > GRASS_REGION_PARAMETER: <QgsProcessingParameterExtent> > GRASS GIS 7 region extent > > GRASS_REGION_CELLSIZE_PARAMETER: <QgsProcessingParameterNumber> > GRASS GIS 7 region cellsize (leave 0 for default) > > GRASS_RASTER_FORMAT_OPT: <QgsProcessingParameterString> > Output Rasters format options (createopt) > > GRASS_RASTER_FORMAT_META: <QgsProcessingParameterString> > Output Rasters format metadata options (metaopt) > > GRASS_SNAP_TOLERANCE_PARAMETER: <QgsProcessingParameterNumber> > v.in.ogr snap tolerance (-1 = no snap) > > GRASS_MIN_AREA_PARAMETER: <QgsProcessingParameterNumber> > v.in.ogr min area > > ---------------- > Outputs > ---------------- > > output: <QgsProcessingOutputRasterLayer> > Rasterized > The input types are described with terms like "<QgsProcessingParameterVectorLayer>"; what does this mean exactly? Do I need to pass class instances? In the previous (2.x) iteration of my code, I had statements like file_grid_r = processing.run("grass7:v.to.rast.value", grid_v, 0, 1, > extent, 0.008333, -1, 0.000100, None)['output'] > where 'grid_v' is a QgsVectorLayer object and 'extent' is a string that looks like this: '33.91415594546105,41.91384412832699,30.679722671256611,35.467319665842772' > I've tried calling the algorithm this way: file_grid_r = processing.run("grass7:v.to.rast", {'INPUT': grid_v, 'type': > 0, 'use': 1, 'GRASS_REGION_PARAMETER': extent}, feedback=None) > But it fails. On the console, I see sys:1: ResourceWarning: unclosed <socket.socket fd=3, > family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, > laddr=('127.0.0.1', 41358), raddr=('127.0.0.1', 37307)> > > Process finished with exit code 1 > If I step through the code in PyCharm and trace the exception, I see an AttributeError: 'NoneType' object has no attribute 'messageBar'. I'm not sure if this is a bug in QGIS or whether there is something wrong with my parameters. Do you have any suggestions or ideas? Thanks Stephen
_______________________________________________ Qgis-user mailing list Qgis-user@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-user Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user