7

I’m working with QGIS 3.2 Bonn and I try to build a workflow in the graphic modeler. The model aims to build variable buffers depending on values from two attribute fields of an input vector layer. For calculating the distances for the dynamic buffers I use the field calculator and the input fields to the field calculator are addressed by their distinct names.

This only works as long as the attribute fields of the input layer always have the same names, so I wanted to modify the model for making it more flexible to other input vector layers with different field names. For this I tried to use the Vector-Field variable as input to the field calculator. In the Variable distance buffer tool, I managed to use one Vector-Field as input variable, but with the field calculator I haven't been succesfull yet.

Is it possible to use Vector Field as input in the modeler, or do I have to write a script for that?

Would be really glad if you could help me.

(I also searched in gis-stackexchange and the net but couldn’t find an answer to this for QGIS3.x.
I found only other questions with similar problems but without any solution:
Graphical modeler in QGIS 3.0.3 - Access Vector Field in Calculator
or questions refering to QGIS2.x:
How to link Number value with Field calculator in QGIS Modeler ? )

An extract of my model with the part I don't get worked:

enter image description here

Here a screenshot of the field calculator and my idea of how to use it:

enter image description here

2
  • Did you see this answer? gis.stackexchange.com/a/177429/122597 Commented Sep 8, 2018 at 20:39
  • Hi Stefan, yes, I saw this post. But it's concerning QGIS 2.x and I cannot use the script in QGIS 3.x Apart from that, at the moment I would prefer a pure modeler solution as I'm totally new to scripting and pyQGIS3
    – L.Blanc
    Commented Sep 8, 2018 at 20:43

2 Answers 2

1

Is it possible to use Vector Field as input in the modeler, or do I have to write a script for that?

No, it is not possible. I have tried everything* and you simply cannot make the Field Calculator aware of the Vector Fields you choose.

* I tried, for example, to join the Input Vector Layer with itself to have a clou about the Input Fields (using a prefix). Turns out that I cannot search all fields of a Layer to find out if the specific prefix is contained in the Field name.

3
  • Hi Stefan, thanks for your answer. Do you know if the advanced python field calculator is able to handle input fields? Or do you think its the same problem with it. I have already tried with the advanced python field calculator but the syntax there is also not easy to unterstand for me.
    – L.Blanc
    Commented Sep 9, 2018 at 11:21
  • There are some hints on the syntax here: anitagraser.com/2013/04/20/advanced-python-field-calculator Unfortunately I don't think that you can target fields that are not known before runtime. Commented Sep 9, 2018 at 15:16
  • I've read that article from anita graser, too. But I think it concerns the advanced python calculator outside of the graphic modeler. At least I couldn't rebuild the example in the modeler. I guess I have to learn python/pyQGIS and start scripting. Unfortunately - that seems to be more advanced than in QGIS2.
    – L.Blanc
    Commented Sep 9, 2018 at 16:49
1

This is an updated answer. Fortunately, this works with current versions of QGIS (tested using QGIS 3.34). You have to use the names of the vector fields as variables provided on top of the functions list in the expression editor

expression editor variable names

in combination with the attribute() function like this:

attribute(@input_field_1) + attribute(@input_field_2)

Then, it should result in something like this:

result attribute table

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.