[Utenti] Calcolatore Raster QGIS - Istruzioni condizionali

Alessandro Sarretta alessandro.sarretta a gmail.com
Lun 4 Gen 2016 11:58:29 CET


Ciao Totò,

On 03/01/2016 16:20, Totò Fiandaca wrote:
> da ricerche sul web scopro che il calcolatore di qgis non permette 
> l'uso di istruzioni condizionali (tipo IF, con, ecc..).
non è così immediato e documentato, ma invece si può.
> con([slope]<=10,10, con([slope]<=30, -9.00/20.00*[slope]+14.5,1))
In una mia vita precedente, quando usavo anche altri software, ho 
pubblicato questo semplice articolo sull'utilizzo di algoritmi di map 
algebra per il calcolo di mappe di distribuzione di granulometria di 
sedimenti: http://onlinelibrary.wiley.com/doi/10.1002/esp.1464/abstract
Siccome l'accesso al paper non è libero, qui si può trovare una copia ad 
accesso aperto: https://dx.doi.org/10.6084/m9.figshare.2060061.v1

Nella tabella 2 a pag. 17 trovi l'algoritmo per creare un raster 
riclassificato da 3 raster diversi (sand, silt, clay) usando ArcView:

con([sand] >= 75, 1,
[silt] >= 75, 4,
[clay] >= 75, 7,
[clay] < 20 & [sand] < 75 & [sand] >= [silt] & [silt] >= [clay], 2,
[clay] < 20 & [silt] < 75 & [silt] >= [sand] & [clay] < [sand], 3,
[sand] < 20 & [silt] < 75 & [silt] >= [clay] & [clay] > [sand], 5,
[sand] < 20 & [clay] < 75 & [clay] > [silt] & [silt] > [sand], 6,
[silt] < 20 & [clay] < 75 & [clay] > [sand] & [sand] > [silt], 8,
[silt] < 20 & [sand] < 75 & [sand] > [clay] & [clay] > [silt], 9,
[clay] > 20 & [sand] > 20 & [silt] > 20, 10, 0)


Ti copio qui sotto il corrispondente algoritmo rifatto per QGIS:

("sand a 1" >= 75) * 1 +
("silt a 1" >= 75) * 4 +
("clay a 1" >= 75) * 7 +
(("clay a 1" < 20) AND ("sand a 1" < 75) AND ("sand a 1" >= "silt a 1") AND 
("silt a 1" >= "clay a 1")) * 2 +
(("clay a 1" < 20) AND ("silt a 1" < 75) AND ("silt a 1" >= "sand a 1") AND 
("clay a 1" < "sand a 1")) * 3 +
(("sand a 1" < 20) AND ("silt a 1" < 75) AND ("silt a 1" >= "clay a 1") AND 
("clay a 1" > "sand a 1")) * 5 +
(("sand a 1" < 20) AND ("clay a 1" < 75) AND ("clay a 1" > "silt a 1") AND 
("silt a 1" > "sand a 1")) * 6 +
(("silt a 1" < 20) AND ("clay a 1" < 75) AND ("clay a 1" > "sand a 1") AND 
("sand a 1" > "silt a 1")) * 8 +
(("silt a 1" < 20) AND ("sand a 1" < 75) AND ("sand a 1" > "clay a 1") AND 
("clay a 1" > "silt a 1")) * 9 +
(("clay a 1" > 20) AND ("sand a 1" > 20) AND ("silt a 1" > 20)) * 10

L'ho testato l'anno scorso, spero sia ancora valido... confido di 
trovare il tempo di scrivere una paginetta a riguardo...
Penso tu possa prendere ispirazione per il tuo esempio.

Ale

-- 
-- 

Alessandro Sarretta

skype/twitter: alesarrett
Web: ilsarrett.wordpress.com <http://ilsarrett.wordpress.com>

Research information:

  * Google scholar profile
    <http://scholar.google.it/citations?user=IsyXargAAAAJ&hl=it>
  * ORCID <http://orcid.org/0000-0002-1475-8686>
  * Research Gate <https://www.researchgate.net/profile/Alessandro_Sarretta>
  * Impactstory <https://impactstory.org/AlessandroSarretta>

-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.qgis.it/pipermail/utenti/attachments/20160104/f20b2620/attachment-0001.html>


Maggiori informazioni sulla lista Utenti