[QGIS-Developer] Python example with aggregate calculation
Neumann, Andreas
a.neumann at carto.net
Fri May 5 08:13:23 PDT 2017
Hi,
Finally, with the support from Matthias, I got a working example of my
custom Python expression:
@qgsfunction(args='auto', group='Custom', usesgeometry=False)
def get_ews_anlage_nr(gemeinde, feature, parent):
AnlageLayer =
QgsMapLayerRegistry.instance().mapLayersByName('Anlage')[0]
aggParams = QgsAggregateCalculator.AggregateParameters()
aggParams.filter = 'substr("anlage_nr",1,2) = \''+gemeinde+'\''
maxVal =
AnlageLayer.aggregate(QgsAggregateCalculator.Max,'to_int(substr("anlage_nr",4,4))',aggParams)[0]
return maxVal
When I define the QgsAggregateCalculator.AggregateParameters() upfront
separately it works fine. First I was trying to set the parameter
directly within AnlageLayer.aggregate() but failed to find the direct
syntax of the QgsAggregateCalculator.AggregateParameters() parameters.
There are hardly any examples out there. But hey - finally it works!
Have a nice weekend!
Andreas
On 2017-05-05 15:55, Neumann, Andreas wrote:
> Hi,
>
> I have a basic example using aggregates:
>
> ----------------------
>
> @qgsfunction(args='auto', group='Custom', usesgeometry=False)
> def get_ews_anlage_nr(gemeinde, feature, parent):
> AnlageLayer =
> QgsMapLayerRegistry.instance().mapLayersByName('Anlage')[0]
> maxVal = AnlageLayer.aggregate(4,'to_int(substr("anlage_nr",4,4))')[0]
> return maxVal
>
> -----------------------
>
> But I still have two questions:
>
> 1. I still struggle to define a filter. I can't find the correct syntax
> how to define that filter string.
>
> 2. the first parameter "4" stands for "Max" aggregate (according to
> http://qgis-python.kartoza.com/docs/core/other/QgsAggregateCalculator.html#class-qgsaggregatecalculator
> ). Could this code be written more "readable" by specifying "Max"
> instead of 4?
>
> Thanks,
>
> Andreas
>
> On 2017-05-05 14:31, Neumann, Andreas wrote:
>
>> Hi,
>>
>> Does someone have an example how to use QgsVectorLayer.aggregate()
>> from Python?
>>
>> How would the syntax for the parameters in the
>> QgsAggregateCalculator.calculate() method look like in Python?
>>
>> Thanks,
>>
>> Andreas
>>
>> _______________________________________________
>> QGIS-Developer mailing list
>> QGIS-Developer at lists.osgeo.org
>> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
More information about the QGIS-Developer
mailing list