Uso di array, aggregate e dintorni

buongiorno,
non riesco proprio a capire array, aggregate e dintorni.
ho un file vettore di punti molti dei quali sono sovrapposti.
voglio creare una etichetta che mi mostri il valore massimo, minimo o medio di un campo, calcolandolo ovviamente solo per i punti sovrapposti.
mi aiutereste a mettere insieme le espressioni?
sono arrivato a questo ma ovviamente non essendoci indicazioni spaziali il risultato è il valore massimo di tutto il dataset.
anziché max si può usare anche min e avg

round (aggregate(layer:='finalpoints', aggregate:='max', expression:="E"), 1)

dove, finalpoints è il nome del layer e E è il nome del campo

grazie mille

s.

Ciao Stefano,
hai chiesto nel posto giusto.
Certo che ti aiutiamo.

L’espressione che ti consiglio di provare, per etichettare, è questa:

array_max(
        array_agg( 
            expression:= "E" ,
            group_by:=geom_to_wkt($geometry,2))
            )

per avere il minimo usa array_min, per avere la media array_mean ecc…

APPROFONDIMENTI

La funzione array_agg aggrega valori dell’attributo E, il group_by gli dice che l’aggregazione deve avvenire per posizione geom_to_wkt($geometry,2).
Ho usato la funzione geom_to_wkt che permette di inserire una precisione sulla posizione.

saluti

2 Likes

Grazie mille Totò, prezioso e preciso come sempre.

:rose:

s.

In questo caso bisogna stare attenti al fatto che, se le coordinate dei punti sono espresse in un CRS geografico, 2 cifre decimali potrebbero essere poche per distinguere punti che non sono effettivamente sovrapposti (l’espressione potrebbe considerare come sovrapposti anche punti molto distanti tra loro).

Se il CRS è proiettato, con unità di misura in metri, allora 2 cifre decimali sono solitamente sufficienti, a meno che ci siano punti non sovrapposti che distano fra loro meno di 1 cm.

Andrea

Giusta osservazione, Andrea.
Nel mio caso, si tratta di SR proiettato e i punti sono il centro delle celle di un DTM.

s.