Pages: 1
- Sujet précédent - QGIS 2.14: Fonction Raster Calculator dans le Modeleur Graphique - Sujet suivant
#1 Tue 22 March 2016 18:19
- Julien Meillon
- Participant occasionnel
- Lieu: Brest
- Date d'inscription: 17 May 2010
- Messages: 16
QGIS 2.14: Fonction Raster Calculator dans le Modeleur Graphique
Bonjour,
Je souhaiterais mettre en place un processus dans le modeleur graphique basé sur la fonction "Raster calculator" du menu GDAL/OGR - [DGAL] DIvers ou du menu SAGA
L'idée est d'avoir en entrée une "Couche Raster" (un MNT) et deux "Nombre" (valeurs min et max que l'utilisateur pourra renseigner au moment de lancer le traitement).
Dans la formule de la fonction Raster calculator, j'aimerais pouvoir appliquer (comme on peut le faire avec la calculatrice raster de Qgis), une requête sur les pixels du raster pour ne garder que ceux compris entre les deux entrées "Nombre".
La formule que j'applique est la suivante A > min AND A < max
A = est le nom de la variable pour le raster
min et max sont les noms des deux valeurs numériques
2 problèmes à cela :
- visiblement, la fonction AND n'est pas comprise dans la formule. Il est possible d'y remédier en passant par 4 étapes au lieu d'une seule dans le process...
- le second problème est lui bloquant. min et max ne sont pas reconnus dans ma formule (c'est ce que dit le rapport de .log). Pourtant si j'utilise une fonction basique telle que la création d'une zone tampon et que j'utilise mon entrée "min" aucun problème.
Quelqu'un a-t-il déjà travaillé sur ces fonctionnalités du modeleur graphique sans rester bloqué comme moi ?
Ou si vous voyez une solution de contournement à mon problème, je suis évidemment preneur.
D'avance merci à vous,
Julien Meillon
Hors ligne
#2 Wed 23 March 2016 09:28
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS 2.14: Fonction Raster Calculator dans le Modeleur Graphique
Bonjour,
Attention les deux calculettes raster disponibles dans processing (SAGA et GDAL) diffèrent de celle de QGIS (menu raster), il faut donc adapter la syntaxe.
Avec SAGA ou gdal_calc, les opérateurs de comparaison renvoi 0 ou 1 donc à la limite on peut écrire ceci :
(Pour l'exemple j'ai choisi respectivement 400 et 500 pour min et max)
SAGA:
Code:
a * a>400 * a<500
GDAL
Code:
A*(A>400)*(A<500)
Ainsi, toutes les valeurs en dehors de l'interval seront alors mises à zéro, les autres seront conservée. Pour avoir uniquement 0 ou 1 on écrira simplement :
Code:
(A>400)*(A<500)
On note que la syntaxe pour GDAL est plus sensible : majuscule pour les lettres, pas d'espace, parenthèses.
Mais le mieux est d'utiliser les fonctions conditionnelles et d'assigner les valeurs en dehors de l'interval à du nodata
Avec SAGA il faut utiliser la fonction ifesle. L'expression 0/0 fait référence à la valeur nodata et comme il n'y a pas d'opérateur booléen on imbrique deux fonctions ifelse l'une dans l'autre.
Code:
ifelse(a<400, 0/0, ifelse(a>500, 0/0, a))
Avec gdal_calc il faut utiliser les fonctions de Numpy et en particulier la fonction where. L'opérateur logique AND s'écrit avec & et -9999 fait référence à la valeur nodata (a adapter selon la valeur définie dans les paramètres de l'outil).
Code:
numpy.where((A>400)&(A<500),A,-9999)
Malheureusement dans le modeleur il n'est pas possible d'utiliser une entrée utilisateur pour construire une formule, la seule solution et d'écrire le script en Python. Auparavant il était possible de convertir directement un model en script ce qui permettait de faire ce genre d'ajustement, mais cette option n'est plus disponible actuellement, il faut donc repartir de zero.
Dernière modification par dominique.lys (Wed 23 March 2016 09:36)
Hors ligne
#3 Wed 23 March 2016 14:01
- Julien Meillon
- Participant occasionnel
- Lieu: Brest
- Date d'inscription: 17 May 2010
- Messages: 16
Re: QGIS 2.14: Fonction Raster Calculator dans le Modeleur Graphique
Bonjour Dominique et merci beaucoup pour cette réponse complète. J'ai pu tester les 4 formules qui fonctionnent en effet parfaitement.
Quand tu dis :
Auparavant il était possible de convertir directement un model en script ce qui permettait de faire ce genre d'ajustement, mais cette option n'est plus disponible actuellement, il faut donc repartir de zero.
La disparition de cette option est-elle intervenue avec une nouvelle version de Qgis ? En travaillant à partir d'une version plus ancienne de Qgis ça ne résoudrait pas le problème ? J'avoue que de partir d'un script en partie rédigé serait mille fois plus simple !
Encore merci,
Julien
Hors ligne
#4 Wed 23 March 2016 14:58
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS 2.14: Fonction Raster Calculator dans le Modeleur Graphique
Je crois que l'option a disparu depuis la 2.6 suite à grosse mise à jour du modeleur, ce qui veut dire qu'un modèle réalisé sur une version récente ne s'ouvrira pas sur une ancienne et qu'il faudra le refaire entièrement. De la même façon, le script obtenu sera probablement incompatible avec les versions récentes.
Hors ligne
#5 Fri 10 June 2016 00:23
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS 2.14: Fonction Raster Calculator dans le Modeleur Graphique
Bonsoir,
je me permets de déterrer ce topic pour deux choses.
La première pour remercier dominique.lys pour les explications des plus claires sur l'utilisation de raster calculator dans le module de traitement.
La seconde pour le contredire sur la partie export de script en python sur la version 2.14.
En effet, lorsqu'on édite le modèle, le 5e icone permet d'exporter le script en python. Il me semble que la fonctionnalité est revenue dans la 2.12.
Bonne soirée,
Hors ligne
#6 Fri 10 June 2016 09:34
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS 2.14: Fonction Raster Calculator dans le Modeleur Graphique
Bien vu ! je cherchais toujours en faisant un clic droit sur le modèle dans l'arborescence.
Merci pour l'info, testé et approuvé.
Hors ligne
Pages: 1
- Sujet précédent - QGIS 2.14: Fonction Raster Calculator dans le Modeleur Graphique - Sujet suivant