Hi,

if(attribute(to_string( @NamelengthField )) != "LENGTH2", TRUE, FALSE )

("LENGHT2" is an existing field and @NamelengthField was a model input string.)

This worked  for me!   If you have the time, please explain why I needed the _attribute()_ function for this to work.  I looked in the documentation and did not find it very clear.

Thanks a million you saved my butt!

Nicolas


On 2021-07-20 5:53 a.m., Charles Dixon-Paver wrote:
Hi Nicholas,

I haven't had time to dig into this extensively or encountered this particular issue, but I would suggest trying to "force" the expression to retrieve the correct info regardless of context using something like this:

with_variable('Length2',  to_string(@NamelengthField) || '2', if(attribute(to_string(@NamelengthField)) != attribute(@Length2), TRUE, FALSE))

That's probably an extreme example but hopefully it illustrates my point. If you want to share a sample dataset/ model I can try to have a look at how to resolve it.

Regards

On Tue, 20 Jul 2021 at 10:46, Richard McDonnell <[email protected] <mailto:[email protected]>> wrote:

    Nicolas,

    I have not looked at this in too much detail, but at a quick
    glance, could it not be the fact that you should be using the
    newly created fields? As in instead of *@NamelengthField !=
    @NamelengthField || '2'*, should it not be more like your previous
    example *Length != Length2*

    Regards,

    Richard


    ——
    Richard McDonnell MSc GIS, FME Certified Professional
    /FRM Data Management/

    ——
    Oifig na nOibreacha Poiblí
    Office of Public Works

    Sráid Jonathan Swift, Baile Átha Troim, Co na Mí, C15 NX36
    Jonathan Swift Street, Trim, Co Meath, C15 NX36
    ——
    M +353 87 688 5964 T +353 46 942 2409
    https://gov.ie/opw <https://gov.ie/opw>

    ——
    To send me files larger than 30MB, please use the link below
    https://filetransfer.opw.ie/filedrop/[email protected]
    <https://filetransfer.opw.ie/filedrop/[email protected]>

    Email Disclaimer:
    https://www.gov.ie/en/organisation-information/439daf-email-disclaimer/
    <https://www.gov.ie/en/organisation-information/439daf-email-disclaimer/>


    *From:*Qgis-user <[email protected]
    <mailto:[email protected]>> *On Behalf Of *Nicolas
    Cadieux
    *Sent:* 20 July 2021 09:27
    *To:* Qgis Users List <[email protected]
    <mailto:[email protected]>>
    *Subject:* Re: [Qgis-user] Problem using Model Inputs variable in
    an Select by expression in the model Designer

    Hi,

    Does anyone have an idea?

    Nicolas Cadieux

    https://gitlab.com/njacadieux <https://gitlab.com/njacadieux>



        Le 8 juill. 2021 à 01:17, Nicolas Cadieux
        <[email protected]
        <mailto:[email protected]>> a écrit :

        

        Hi,

        I am creating a model that fixes Network files before they are
        used in the QGIS Network analysis (Shortest path) tools.

        This is my work flow:

         1. Create a "Length" field (value) and calculate $length in
            the field calculator
         2. Split the Multipart lines into Singlepart lines
         3. Create a "Length*2*" field (value) and calculate $length
            in the field calculator
         4. Select by expression Length != Length2.  This basically
            gives me a selection of line that have been modified by
            the Multipart to Singlepart algorithm. (I get 8 results)

        This works well

        The problem is when I create and Input String to let the user
        create a "Length" field.  This become a variable called
        @NamelengthField. My work flow become:

         1. User input "Length" in the Model input. (@NamelengthField)
         2. Create a "Length" field using @NamelengthField (as
            pre-calculated value) and calculate $length in the field
            calculator: This is OK
         3. Split the Multipart lines into Singlepart lines: This is OK
         4. Create a "Length2" field using @NamelengthField ||'2'  (as
            pre-calculated value) and calculate $length in the field
            calculator: This is OK this field (Length2) is created and
            calculated properly.
         5. I get stuck  when I try Select by expression using 
            @NamelengthField != @NamelengthField || '2' (as
            pre-calculated value) (I get all lines back) and the test
            does not work.

        I tried stuff like

        @NamelengthField != (@NamelengthField || '2')

        '@NamelengthField != @NamelengthField || '2''

        "@NamelengthField != @NamelengthField || '2'"

        "@NamelengthField"|| !=|| "@NamelengthField || '2'"

        Even simple @NamelengthField = 5.286365157529550 (which should
        extract exactly one value).

        Any ideas?

        Nicolas

        QGIS 3.18.2 on Windows 10

--
        Nicolas Cadieux

        https://gitlab.com/njacadieux  <https://gitlab.com/njacadieux>

    _______________________________________________
    Qgis-user mailing list
    [email protected] <mailto:[email protected]>
    List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
    <https://lists.osgeo.org/mailman/listinfo/qgis-user>
    Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user
    <https://lists.osgeo.org/mailman/listinfo/qgis-user>

--
Nicolas Cadieux
https://gitlab.com/njacadieux

_______________________________________________
Qgis-user mailing list
[email protected]
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to