Vai al contenuto

Classificare specie

Una colonna taxa contiene una serie di specie separate da #. Come creare una nuova colonna che restituisce una somma di valori, in base alla specie, definiti in un'altra tabella. Sotto un esempio:

di seguito alcuni esempi di valori per specie:

taxon value
Calluna_vulgaris 1
Baeomyces_rufus 1
Porpidia_crustulata 2
Rhizocarpon_reductum 2
Micarea_erratica 2
Hypnum_jutlandicum 0.333
Erica_tetralix 2
Carex_pilulifera 1.5

esempio di cosa ottenere: se la colonna taxa contenesse Calluna_vulgaris#Porpidia_crustulata#Micarea_erratica la nuova colonna devobbe contenere 5 (1+2+2).

Prima soluzione

array_sum(
  array_foreach(
    string_to_array("taxa",'#'),
    to_real(attribute(get_feature('taxon','taxon',@element),'value'))))

questa soluzione fa uso di un layer taxon che contiene l'elenco delle specie e i relativi valori.

Seconda soluzione

array_sum(
  array_foreach(
  string_to_array("taxa",'#'),
  map_get(
    map(
        'Calluna_vulgaris',1,
        'Baeomyces_rufus',1,
        'Porpidia_crustulata',2,
        'Rhizocarpon_reductum',2,
        'Micarea_erratica',2,
        'Hypnum_jutlandicum',0.333,
        'Erica_tetralix',2,
        'Carex_pilulifera',1.5),
@element)))

questa soluzione fa uso di un dizionario (mappe valori) che contiene l'elenco e i valori delle specie.

output

Prova tu

Geopackage è qui

idea presa da qui


Funzioni e variabili utilizzate: