<div dir="ltr"><div>Thanks for your explanation !<br></div>I also think it makes sense to share source layers in some cache in the future.<br></div><div class="gmail_extra"><br><div class="gmail_quote">2018-02-16 7:36 GMT+01:00 Nyall Dawson <span dir="ltr"><<a href="mailto:nyall.dawson@gmail.com" target="_blank">nyall.dawson@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 16 February 2018 at 17:29, kimaidou <<a href="mailto:kimaidou@gmail.com">kimaidou@gmail.com</a>> wrote:<br>
> Thanks Nyall,<br>
><br>
> Our posts crossed !<br>
><br>
> Ok for the shortcut and the getMapLayer method.<br>
><br>
> One question : in my alg, if I use QgsProcessingParameterFeatureS<wbr>ource<br>
> instead of QgsProcessingParameterVectorLa<wbr>yer for my input, can I still use<br>
> mapLayerFromString and the getFeatures, or is there a<br>
> featureSourceFromString which allows me to loop through the features ?<br>
<br>
</span>There's no method like that. At the moment all vector outputs from<br>
processing algorithms are full vector layers (either disk-based or<br>
memory layers). That's because currently only vector layers and vector<br>
data providers are QgsFeatureSources. It's possible (likely?) that in<br>
future we'll see this change at may need to add that method. [1]<br>
<br>
Nyall<br>
<br>
[1] E.g. I'd like to see QgsFeatureStore become a QgsFeatureSource,<br>
and act as a simple dump for features without the complexity of using<br>
a memory layer. I think there's a lot of value in QgsVectorLayerCache<br>
also becoming a QgsFeatureSource... I think some processing algorithms<br>
could greatly benefit from using a QgsVectorLayerCache, when they are<br>
iterating multiple times of a source layer....<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<br>
<br>
<br>
<br>
> MichaĆ«l<br>
><br>
> 2018-02-16 7:22 GMT+01:00 Nyall Dawson <<a href="mailto:nyall.dawson@gmail.com">nyall.dawson@gmail.com</a>>:<br>
>><br>
>> On 16 February 2018 at 04:36, kimaidou <<a href="mailto:kimaidou@gmail.com">kimaidou@gmail.com</a>> wrote:<br>
>> > Hi all,<br>
>> ><br>
>> > I have a simple processing python alg which<br>
>> > * generates a buffer with qgis:buffer<br>
>> > * use qgis:fieldcalculator to add an buf_area field -> the output vector<br>
>> > of<br>
>> > my alg is this buffer+new field.<br>
>> ><br>
>> > I would like to parse the features of the output vector in order to<br>
>> > gather<br>
>> > some information and put it in a new string output. I have not been able<br>
>> > to<br>
>> > get the layer object to perform a getFeatures on it.<br>
>> ><br>
>> > See the code<br>
>> > <a href="http://paste.debian.net/1010463/" rel="noreferrer" target="_blank">http://paste.debian.net/<wbr>1010463/</a><br>
>> ><br>
>> > In line 32, my blayer is None<br>
>> > I think I am not using the good way to get the output vector layer<br>
>> > features?<br>
>> > I tried to use the same way as for reading an input layer, but oviously<br>
>> > it<br>
>> > is different.<br>
>><br>
>> blayer = QgsProcessingUtils.<wbr>mapLayerFromString( area_result[ 'OUTPUT'<br>
>> ]), context )<br>
>><br>
>> I'm thinking of adding a shortcut for this to the context, e.g.:<br>
>><br>
>> blayer = context.getMapLayer( area_result['OUTPUT'] )<br>
>><br>
>> What do you think?<br>
>><br>
>> Nyall<br>
><br>
><br>
</div></div></blockquote></div><br></div>