[QGIS-it-user] Funzione "Aggregate" con espressione algebrica

Ciao a tutti,

volevo sapere se è fattibile con la funzione “aggregate”, ottenere come risultato la somma delle lunghezze degli elementi contenuti in un perimetro, moltiplicate per un valore di un campo specifico di ogni elemento.

In pratica ho un layer con elementi poliline inerenti le strade, un campo del layer è il costo della strada per metro lineare (costo).

Attualmente ottengo le sole lunghezze con questa formula:

aggregate(

layer:=’Strada’,

aggregate:=‘sum’,

expression:=length(intersection(geometry(@parent), $geometry)),

filter:= (“Tipo”=‘Nazionale’ AND intersects( $geometry,geometry(@parent)))

)

Ho provato a modificarla come segue, ma mi da errore all’esecuzione:

aggregate(

layer:=’Strada’,

aggregate:=‘sum’,

expression:=length(intersection(geometry(@parent), $geometry)) * ‘costo’,

filter:= (“Tipo”=‘Nazionale’ AND intersects( $geometry,geometry(@parent)))

)

Ringrazio anticipatamente per i suggerimenti

Fabio

Fabio Pifferini

Ingegnere SUP, Project manager PMP®

Membro di direzione

MASOTTI & ASSOCIATI SA

Via Mirasole 1 | CH-6501 Bellinzona | Tel. +41 (0)91 825 52 40 | Fax +41 (0)91 825 91 13 | info@masotti.ch | www.masotti.ch

…salvaguarda l’ambiente; stampa questo messaggio soltanto se è veramente necessario…

Il 30/08/2021 17:01, Fabio Pifferini ha scritto:

expression:=length(intersection(geometry(@parent), $geometry)) * ‘costo’,

Ciao Fabio,
i nomi dei campi vanno indicati fra doppi apici (o anche senza alcun apice, ma è sempre meglio usarli per evitare ambiguità) e non fra singoli apici.

Quindi dovresti riscrivere l'espressione come:
length(intersection(geometry(@parent), $geometry)) * "costo"

A presto.

Andrea

Grazie a tutti, in effetti l'inghippo stava solo nell'uso dell' "apice doppio"
Fabio

-----Messaggio originale-----
Da: Andrea Giudiceandrea <andreaerdna@libero.it>
Inviato: lunedì, 30 agosto 2021 18:52
A: Fabio Pifferini <Fabio.Pifferini@masotti.ch>
Oggetto: Re: [QGIS-it-user] Funzione "Aggregate" con espressione algebrica

Il 30/08/2021 17:01, Fabio Pifferini ha scritto:

expression:=length(intersection(geometry(@parent), $geometry)) *
'costo',

Ciao Fabio,
i nomi dei campi vanno indicati fra doppi apici (o anche senza alcun apice, ma è sempre meglio usarli per evitare ambiguità) e non fra singoli apici.

Quindi dovresti riscrivere l'espressione come:
length(intersection(geometry(@parent), $geometry)) * "costo"

A presto.

Andrea