3

I tried to use the refactor field processing after my model creates the two layers needed to calculate the expression:

line_locate_point(geometry:=geometry(get_feature('LH_fusion', 'id', '1')), point:=end_point($geometry))

model_nested

However it seems QGIS can't use any temporary outputs from the model itself (see Refering to the input-layer of a QGIS model in field calculator expression)

What could be a good work around for such a case ?

I had thought about virtual fields which can handle real time updates but I don't really see how.

Or maybe a Python script which recalculate each lines according to the expression set by the refactor field algorithm like here: Update virtual field on demand (not permanently) (QGIS)

Taras
  • 32,823
  • 4
  • 66
  • 137
Caligraphy
  • 139
  • 11

1 Answers1

1

I did understand you would like to modify the source layer with the qgis modeler. It is not possible and all your output of your modeler will be a layer.

what is possible is to do dynamic join between your layer and the layer you just produce (the target layer) to get the data back to your source layer. If you have in the both layer a common field named fid then use the field calculator to evaluate this expression :

attributes(get_feature('NAME_OF_YOUR_TARGET_LAYER' ,'fid' , "fid")) [FIELD_NAME_IN_YOUR_TARGET_LAYER]

If I didn't answer your question don't please add more information to understand your willing.

Corentin Lemaitre
  • 3,003
  • 5
  • 17
  • I want to make the last calculation automatic, without the help of the field calculator. My model produce two outputs : one points layer and a line layer. I want to add to the points layers produced by the model/script a new field which show the relative distance between points along the line layer with the expression line_locate_point(geometry:=geometry(get_feature('LH_fusion', 'id', '1')), point:=end_point($geometry)) – Caligraphy Jun 16 '21 at 14:03
  • Do you need the intermediate step at the end or just the end layer ? If you need only end layer why don't you use expression field calculator within the model ? You can refer to it, the only difficulty you may have will be to construct an expression based on a process made in the model. – Corentin Lemaitre Jun 16 '21 at 21:16
  • I would like to keep intermediate steps as my points / lines layers ( 'LH_fusion', 'Shelters_intersection') and a third and final end layer which contains a new field expressing the above formula. I tried to swap 'Refactor fields' algorithm by the 'Field calculator' and applied the expression to an existing field. However it results into a 'NULL' filled field which is caused by the known problem mentionned by N.Dawson – Caligraphy Jun 17 '21 at 12:20