#1 Sun 23 February 2025 09:35
- guibouvier
- Participant actif
- Date d'inscription: 23 Jan 2007
- Messages: 111
QGIS/Calculatrice Raster: Erreur de syntaxe avec Nodata
Bonjour
j'ai parcouru les fils de discussion qui traitent des soucis de calculatrice raster avec des conditions et du no_data. Malgré tout, je ne parviens pas à mes fins.
J'ai deux rasters qui sont deux MNT à deux dates d'intervalle du meme secteur. J'ai pu les soustraire pour obtenir un nouveau raster ("mon_raster") qui donne les écarts altimétriques ( de -2,5m à +7,5m de différence entre ces deux dates).
J'aimerai désormais obtenir un nouveau raster qui ne conserve que les données entre -0,2m et +0,2m et donc qui:
* classe les pixels avec valeurs inférieures à -0,2m en no_data
* conserve les valeurs des pixels comprises entre -0,2m et +0,2m
* classe les pixels avec les valeurs supérieurs à +0,2m en no_data
Voici la formule que j'ai tenté dans la calculatrice raster mais qui me renvoie un "erreur parsing formule"
Code:
("mon_raster"<-0,2)*no_data + (("mon_raster">-0,2 AND mon_raster<0,2)*"mon_raster") + ("mon_raster">0,2)*no_data
Je précise que je suis sous Qgis 3.34
Merci d'avance pour votre aide, Gui
Hors ligne
#2 Sun 23 February 2025 23:02
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 4119
Re: QGIS/Calculatrice Raster: Erreur de syntaxe avec Nodata
Bonsoir,
Je pense que ce devrait être mon_raster@1 (indiquant la bande concernée), que le texte no_data n'est pas une valeur numérique (multipliable donc) et m'interroge sur la virgule coe séparateur décial. Je vous invite à étudier les exemples de la documentation et tester quelque chose du style :
Code:
if("mon_raster@1">-0.2 AND "mon_raster@1"<0.2, "mon_raster@1", -999)
utilisant -999 comme représentation du no_data, mais peut-être que cette deuxième valeur n'est pas requise...?
Hors ligne
#3 Mon 24 February 2025 17:31
- guibouvier
- Participant actif
- Date d'inscription: 23 Jan 2007
- Messages: 111
Re: QGIS/Calculatrice Raster: Erreur de syntaxe avec Nodata
Bonsoir,
Je pense que ce devrait être mon_raster@1 (indiquant la bande concernée), que le texte no_data n'est pas une valeur numérique (multipliable donc) et m'interroge sur la virgule coe séparateur décial. Je vous invite à étudier les exemples de la documentation et tester quelque chose du style :Code:
if("mon_raster@1">-0.2 AND "mon_raster@1"<0.2, "mon_raster@1", -999)utilisant -999 comme représentation du no_data, mais peut-être que cette deuxième valeur n'est pas requise...?
Bonjour
Vous aviez raison sur toute la ligne !
En appliquant votre formule, cela fonctionne parfaitement.
Merci de votre aide
Hors ligne