saga grid calculator

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

saga grid calculator

stefano campus
Administrator
vi sottopongo un problemino perchè vorrei capire se la mia soluzione è troppo macchinosa oppure (come spero) esiste una via più diretta.
ho due raster, uno rappresenta la vulnerabilità degli edifici (numeri naturali da 1 a 3) e l'altro il campo di inondazione.
vorrei incrociare i due raster per ottenere il danno atteso, tenendo conto che si producono differenti classi di danno in funzione della classe di vulnerabilità e dell'altezza dell'acqua, come spiegato nella tabella che vi allego.

non sono riuscito a capire se il grid calculator prevede l'utilizzo di operatori AND - OR, pechè quello che vorrei fare è:
se nel grid A c'è 1 e nel grid B l'altezza dell'acqua è maggiore di 3.8, allora scrivi 6, altrimenti se nel grid B l'altezza dell'acqua è maggiore di 2.6, allora scrivi 4 e così via.

dopo molte prove sono riuscito a capire che si possono fare dei successivi controlli di ifelse ma solo se riferito ad una sola condizione di esistenza del valore della cella (cioè indipendentemente dal valore che essa assume).
per questo dal grid della vulnerabilità ho estratto tre grid corrisposndenti ai soli valori di 1, 2 e 3 ed applicato il controllo uno per uno per poi rimettere insieme i tre grid parziali per ottenere ildanno totale

ad esempio per il grid di vulnerabilità 3:
ifelse(gt(a,3.8),6, (ifelse(gt(a,2.6),5, (ifelse(gt(a,2.2),4, (ifelse(gt(a,1.8),3,(ifelse(gt(a,0),2, (ifelse(eq(a,0),1,-99999)))))))))))

come si vede, non c'è il controllo sul valore della cella nel grid a. in ogni caso si applica questa condizione.

esiste dunque la possibilità di inserire inizialmente un controllo sul valore della cella di a e poi far applicare la classificazione corretta?

sigh...spero di essere stato chiaro
grazie mille....Clipboard01.png