banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#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

 

Pied de page des forums

Powered by FluxBB