[QGIS-it-user] Somma progressiva valori di lunghezza

andreaerdna andreaerdna a libero.it
Sab 12 Ott 2019 14:18:26 PDT


Se può essere ancora utile per qualcuno, la procedura è molto semplice:

dato un layer "nome_layer", con un campo "campo_valore" che contiene i
valori da sommare cumulativamente, si aggiunge un campo "campo_cumulativo"
alla tabella e si usa il calcolatore di campi per aggiornare i valori di
tale campo con la seguente espressione:

if($id = 1, attribute($currentfeature, 'campo_valore'),
attribute($currentfeature, 'campo_valore') +
attribute(get_feature_by_id('nome_layer', $id-1), 'campo_cumulativo'))

Nella maggior parte dei casi il primo record di un layer ha $id =1; in
alcuni casi, per esempio gli shapefile, il primo record ha $id = 0, quindi
la condizione di test di if dovrebbe essere modificata di conseguenza
affinché l'espressione funzioni come previsto.
Alternativamente si potrebbe usare, invece che la funzione $id, la variabile
@row_number, in quanto quest'ultima dovrebbe iniziare sempre da 1 e quindi
la seguente espressione dovrebbe funzionare in ogni caso :

if(@row_number = 1, attribute($currentfeature, 'campo_valore'),
attribute($currentfeature, 'campo_valore') +
attribute(get_feature_by_id('nome_layer', @row_number-1),
'campo_cumulativo'))

La somma cumulativa avviene in ordine per feature id, quindi i record del
layer devono essere già intrinsecamente ordinati secondo l'ordine con cui si
vuole che i valori vengano sommati.

Andrea





--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html


Maggiori informazioni sulla lista QGIS-it-user