[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