[Qgis-user] When running a Custom Function, the return value is different from when stepping through it and watching the 'Preview' value in Field Calculator

Zoltan zoltans at geograph.co.za
Tue Oct 19 23:09:53 PDT 2021


Oh "for Pete's sake". - I'd love someone to explain why that is needed 
and not auto-turned on or defaulted to True.

Thank you for bringing my attention to that tidbit.

Kind regards,
Zoltan


On 2021-10-19 19:07, DelazJ wrote:
> Hi Zoltan,
>
> You are playing with geometry so you need usesgeometry=True in your 
> function decorator.
> See 
> https://docs.qgis.org/3.16/en/docs/user_manual/working_with_vector/expression.html#function-editor 
> or the help section in the Function Editor tab.
>
> Regards,
> Harrissou
>
> Le mar. 19 oct. 2021 à 18:33, Zoltan <zoltans at geograph.co.za> a écrit :
>
>     Hi,
>     Me again :-(
>
>     I've written a custom function in Field Calculator and want to put
>     its return value into a new Text field in the attribute table.
>
>     When I step through the features I get the correct and expected
>     values shown next to 'Preview'
>     But
>     when I click OK to run the Field Calculator, it runs for a long
>     enough time, auto-closes on completion and in the attribute table
>     the new field is created, but value is 'Nothing for None' for all
>     features.
>     *Note:* variable rd_at reflects correct contents when stepping
>     through and observing 'Preview' but seems to revert to Nonetype
>     when running the function.
>
>     What am I missing regarding using custom functions?
>     Is it an intended thing that the Field Calculator auto-closes
>     after running a custom function?
>
>     Thanks again,
>     Kind regards,
>     Zoltan
>
>     *Note:*  The msg variable was introduced in case placing 'return'
>     in various lines in the script was causing problems. I have also
>     made the script below "more pedantic" to try and debug it.
>
>         from qgis.core import *
>         from qgis.gui import *
>         import processing
>
>         @qgsfunction(args='auto', group='Custom', referenced_columns=[])
>         def del_cutboxes(feature, parent):
>             geom = feature.geometry()
>             attr = feature.attributes()
>             rd_at = str(attr[5])
>             lyr_rcl =
>         QgsVectorLayer('Z:/Projects/RCL_boxes.shp','lyrrcl','ogr')
>             rcl_feats = lyr_rcl.getFeatures()
>             msg = ''
>             for rcl_feat in rcl_feats:
>                 if len(msg) == 0:
>                     rclbox = rcl_feat.geometry()
>                     if rclbox.contains(geom):
>                         if rcl_feat.attributes()[0] is not rd_at:
>                             #feature.delete()
>                             msg = 'ToDelete ' + rd_at
>                         else:
>                             msg = 'ToKeep   ' + rd_at
>             if len(msg) == 0:
>                 msg = 'Nothing for ' + rd_at
>             return msg
>
>
>
>
>
>
>     -- 
>
>     =============================================
>     Zoltan Szecsei GPrGISc 0031
>     Geograph (Pty) Ltd.
>     GIS and Photogrammetric Services
>
>     Cape Town, South Africa.
>
>     Mobile: +27-83-6004028 (Signal, not WhatsApp)
>     www.geograph.co.za  <http://www.geograph.co.za>
>     =============================================
>
>     _______________________________________________
>     Qgis-user mailing list
>     Qgis-user at lists.osgeo.org
>     List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
>     Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user
>

-- 

=============================================
Zoltan Szecsei GPrGISc 0031
Geograph (Pty) Ltd.
GIS and Photogrammetric Services

Cape Town, South Africa.

Mobile: +27-83-6004028 (Signal, not WhatsApp)
www.geograph.co.za
=============================================
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-user/attachments/20211020/bf214580/attachment.html>


More information about the Qgis-user mailing list