[QGIS-Developer] QGIS3 - processing python script. Read features from output layer

kimaidou kimaidou at gmail.com
Thu Feb 15 22:51:04 PST 2018


Thanks for your explanation !
I also think it makes sense to share source layers in some cache in the
future.

2018-02-16 7:36 GMT+01:00 Nyall Dawson <nyall.dawson at gmail.com>:

> On 16 February 2018 at 17:29, kimaidou <kimaidou at gmail.com> wrote:
> > Thanks Nyall,
> >
> > Our posts crossed !
> >
> > Ok for the shortcut and the getMapLayer method.
> >
> > One question : in my alg, if I use QgsProcessingParameterFeatureSource
> > instead of QgsProcessingParameterVectorLayer for my input, can I still
> use
> > mapLayerFromString and the getFeatures, or is there a
> > featureSourceFromString which allows me to loop through the features ?
>
> There's no method like that. At the moment all vector outputs from
> processing algorithms are full vector layers (either disk-based or
> memory layers). That's because currently only vector layers and vector
> data providers are QgsFeatureSources. It's possible (likely?) that in
> future we'll see this change at may need to add that method. [1]
>
> Nyall
>
> [1] E.g. I'd like to see QgsFeatureStore become a QgsFeatureSource,
> and act as a simple dump for features without the complexity of using
> a memory layer. I think there's a lot of value in QgsVectorLayerCache
> also becoming a QgsFeatureSource... I think some processing algorithms
> could greatly benefit from using a QgsVectorLayerCache, when they are
> iterating multiple times of a source layer....
>
>
>
>
>
>
>
> > Michaƫl
> >
> > 2018-02-16 7:22 GMT+01:00 Nyall Dawson <nyall.dawson at gmail.com>:
> >>
> >> On 16 February 2018 at 04:36, kimaidou <kimaidou at gmail.com> wrote:
> >> > Hi all,
> >> >
> >> > I have a simple processing python alg which
> >> > * generates a buffer with qgis:buffer
> >> > * use qgis:fieldcalculator to add an buf_area field -> the output
> vector
> >> > of
> >> > my alg is this buffer+new field.
> >> >
> >> > I would like to parse the features of the output vector in order to
> >> > gather
> >> > some information and put it in a new string output. I have not been
> able
> >> > to
> >> > get the layer object to perform a getFeatures on it.
> >> >
> >> > See the code
> >> > http://paste.debian.net/1010463/
> >> >
> >> > In line 32, my blayer is None
> >> > I think I am not using the good way to get the output vector layer
> >> > features?
> >> > I tried to use the same way as for reading an input layer, but
> oviously
> >> > it
> >> > is different.
> >>
> >> blayer = QgsProcessingUtils.mapLayerFromString( area_result[ 'OUTPUT'
> >> ]), context )
> >>
> >> I'm thinking of adding a shortcut for this to the context, e.g.:
> >>
> >> blayer = context.getMapLayer( area_result['OUTPUT'] )
> >>
> >> What do you think?
> >>
> >> Nyall
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20180216/c3a89632/attachment-0001.html>


More information about the QGIS-Developer mailing list