Calculatrice raster QGIS : formules testées et 4 pièges silencieux
Publié le
Ouvrez la calculatrice raster de QGIS depuis Raster > Raster Calculator (Raster > Calculatrice Raster en français), ou depuis la boîte à outils de traitement. Pour le NDVI Sentinel-2, utilisez ("B08@1" - "B04@1") / ("B08@1" + "B04@1") : la calculatrice du menu calcule automatiquement en Float32. Attention à trois pièges : la calculatrice GDAL qui fait déborder les entiers non signés, les masques * qui écrivent 0 au lieu de nodata, et les outils de pente qui déraillent sur des grilles en degrés.
J’ai testé tout cela le 7 novembre 2026 dans QGIS 3.44.15, sur une fenêtre de 5 km sur 5 km de terres agricoles vallonnées au sud de Machado, dans le Minas Gerais, au Brésil (2 500 ha, 250 000 pixels de 10 m en UTM 23S, EPSG:32723). J’ai utilisé une scène Sentinel-2 L2A du 3 novembre 2026 et un MNT Copernicus GLO-30 à 30 m, et j’ai comparé chaque sortie à une référence numpy en virgule flottante 64 bits, calculée hors de QGIS.
Qu’est-ce que la calculatrice raster de QGIS, et laquelle ouvrez-vous ?
Une calculatrice raster évalue une expression mathématique ou booléenne pixel par pixel sur une ou plusieurs bandes raster, puis écrit une nouvelle grille. Dans QGIS, on désigne une bande par "layername@band" (par exemple "B08@1" pour la bande 1 de la couche B08), on combine les bandes avec +, -, *, /, <, >, AND, OR ou if(condition, true, false), et on écrit le résultat dans un GeoTIFF ou dans une couche virtuelle en mémoire.
Ce qui piège les gens, c’est que QGIS fournit cinq outils appelés « Raster calculator », et qu’ils ne tournent pas tous sur le même moteur. Quatre utilisent l’analyseur d’expressions natif de QGIS et calculent en virgule flottante. Celui de GDAL (gdal_calc.py en coulisses) utilise des variables lettres A/B/C et évalue des expressions numpy dans le type de données de la bande d’entrée.
| Outil dans QGIS 3.44 | Syntaxe des bandes | Type de sortie | Pixels faux de plus de 0,01 sur un NDVI uint16 (sur 250 000) |
|---|---|---|---|
Raster > Raster Calculator (QgsRasterCalculator) | "B08@1" | Float32 | 0 |
Processing: Raster calculator (native:rastercalc) | "B08@1" | Float32 | 0 |
Processing: Raster calculator (virtual) (native:virtualrastercalc) | "B08@1" | Float64 (en mémoire) | 0 |
Processing: Raster calculator (legacy) (qgis:rastercalculator) | "B08@1" | Float32 | 0 |
Processing: GDAL Raster calculator (gdal:rastercalculator) | A, B | Fichier Float32, calcul dans le type d’entrée | 703 (0,28 %, valeurs jusqu’à 126,7) |
Si vous voulez simplement une formule qui marche sans convertir les types, utilisez Raster > Raster Calculator dans le menu du haut, ou le premier Raster calculator du groupe natif QGIS dans la boîte à outils de traitement.
Pas à pas : calculer le NDVI dans la calculatrice raster de QGIS
S’il vous faut d’abord des bandes Sentinel-2, notre guide pour télécharger des images Sentinel-2 dans QGIS explique la méthode par le catalogue STAC. Une fois les bandes B04 (rouge, 10 m) et B08 (proche infrarouge, 10 m) dans le panneau Couches, calculer ce que mesure le NDVI prend quatre étapes.
Sélectionnez la couche qui fixe la grille de sortie
Cliquez sur B08 dans le panneau Couches avant d’ouvrir la fenêtre. À l’ouverture, Raster > Raster Calculator lit l’emprise, le système de coordonnées (SCR), la largeur et la hauteur de sortie sur la couche raster sélectionnée à ce moment dans le panneau Couches. Vérifiez que l’en-tête indique Extent (current: B08).
Saisissez l’expression NDVI
Dans Raster > Raster Calculator, double-cliquez sur B08@1 et B04@1 dans la liste Raster Bands (ou tapez-les entre guillemets doubles) pour construire :
("B08@1" - "B04@1") / ("B08@1" + "B04@1")
Vérifiez que la mention juste sous la zone d’expression indique Expression valid. Dans cette fenêtre, inutile de convertir en flottant les bandes Sentinel-2 en entiers non signés 16 bits.
Choisissez un fichier de sortie ou une couche virtuelle
Indiquez un chemin .tif dans Output layer et laissez Output format sur GeoTIFF. Si vous voulez juste un aperçu rapide sans fichier sur le disque, cochez Create on-the-fly raster instead of writing layer to disk (cela enregistre dans le projet une URI de formule avec les chemins absolus des entrées, et le résultat correspond au fichier écrit à 3e-8 près).
Lancez le calcul et stylisez le résultat
Cliquez sur OK. Sur notre fenêtre de 500 sur 500 pixels, le calcul a pris 0,12 seconde, avec des valeurs de -0.5507 à 0.9547 et un écart maximal de 2.98e-8 par rapport à numpy 64 bits. Ouvrez Layer Properties > Symbology, passez en Singleband pseudocolor, choisissez la rampe RdYlGn, et réglez le minimum sur 0 et le maximum sur 0.9.
Voici la fenêtre juste avant de cliquer sur OK, avec l’emprise reprise de B08 :

Une fois stylisé avec RdYlGn, la végétation dense autour de Machado apparaît en vert foncé, le sol nu et les routes en rouge, et les 703 pixels où le rouge dépasse le proche infrarouge (eau et zones sombres) passent en négatif. Le NDVI moyen sur toute la fenêtre est de 0.727. Si votre couvert est assez dense pour saturer le NDVI, ou laisse du sol nu entre les rangs, voyez comment la formule change dans notre comparaison NDVI, EVI, SAVI et NDRE.

Recueil de formules pour la calculatrice raster de QGIS
Chaque expression ci-dessous a été lancée dans QGIS 3.44.15 (QgsRasterCalculator) sur le jeu de données de Machado et vérifiée pixel par pixel avec numpy. Recopiez la syntaxe avec les guillemets doubles autour de "layer@band".
| Tâche | Expression testée (Raster > Raster Calculator) | Résultat sur la fenêtre test de Machado |
|---|---|---|
| NDVI (Sentinel-2 10 m) | ("B08@1" - "B04@1") / ("B08@1" + "B04@1") | Float32 de -0.5507 à 0.9547 sur 250 000 pixels ; erreur max 2.98e-8. |
| NDWI (indice d’eau de McFeeters) | ("B03@1" - "B08@1") / ("B03@1" + "B08@1") | Float32 ; "ndwi@1" > 0 a isolé 637 pixels d’eau (6,4 ha d’étangs et de ruisseaux). |
| Masquer sous un seuil en nodata | "ndvi@1" / ("ndvi@1" > 0.3) | Divise par 0 là où la condition est fausse, ce qui écrit un vrai nodata (11,343 pixels exclus ; moyenne 0.753). |
Remplacement conditionnel (if) | if("ndvi@1" > 0.3, "ndvi@1", 0) | Passe l’analyse et garde les valeurs au-dessus de 0.3, mais écrit 0 ailleurs, comme le masque *. |
| Reclasser un MNT en 5 classes (somme booléenne) | ("dem@1" < 800) * 1 + ("dem@1" >= 800 AND "dem@1" < 850) * 2 + ("dem@1" >= 850 AND "dem@1" < 900) * 3 + ("dem@1" >= 900 AND "dem@1" < 1000) * 4 + ("dem@1" >= 1000) * 5 | Codes 1 à 5 sur 54 901 pixels du MNT ; identique sur chaque pixel à native:reclassifybytable. |
Reclasser un MNT en 5 classes (if imbriqués) | if("dem@1" < 800, 1, if("dem@1" < 850, 2, if("dem@1" < 900, 3, if("dem@1" < 1000, 4, 5)))) | Les mêmes 5 classes (96,9 ha, 1 089,4 ha, 1 323,1 ha, 1 759,7 ha, 582,7 ha). |
| Seuil de pente | "slope@1" > 15 | Écrit 1 au-dessus de 15 degrés et 0 à 15 ou moins (17,327 sur 52,979 pixels valides du MNT en UTM, 32,61 %). |
| Altitude de mètres en pieds | "dem@1" * 3.28084 | Erreur max de 0.98 ft (0.026% à 1 168 m) si vous prenez le 3.28 du manuel QGIS au lieu de 3.28084. |
Quatre pièges silencieux qui donnent de faux chiffres (et comment les repérer)
Aucun des quatre échecs ci-dessous ne déclenche d’avertissement dans QGIS. Chacun va jusqu’au bout, ajoute une couche à votre projet et vous livre des chiffres qui semblent plausibles tant que vous ne les vérifiez pas.
1. La calculatrice raster GDAL fait déborder les entiers non signés sur les NDVI négatifs
La calculatrice raster native de QGIS ne tombe jamais sur un bug de division entière avec les bandes Sentinel-2, mais la GDAL Raster calculator de la boîte à outils de traitement (gdal:rastercalculator) évalue (A-B)/(A+B) dans le type de données numpy du fichier d’entrée, et corrompt chaque pixel où le rouge dépasse le proche infrarouge.
Les bandes Sentinel-2 de niveau 2A sont livrées en entiers non signés 16 bits (uint16). Dans notre fenêtre de 250 000 pixels, 703 pixels (0,28 %, eau et zones sombres) ont un B04 plus grand que B08. Quand gdal:rastercalculator soustrait B04 de B08 en uint16, le résultat négatif repart de 65 536, et l’outil écrit ces 703 pixels dans un fichier Float32 avec des valeurs entre 0 et 126.7 au lieu d’un NDVI négatif.

Si vous utilisez la calculatrice GDAL, convertissez dans l’expression avec (A.astype(numpy.float32)-B)/(A+B) (ce qui a ramené les pixels faux à 0 dans notre test), ou utilisez plutôt la calculatrice raster native de QGIS. Et ne réglez jamais le type de sortie GDAL sur Int16 ou Byte pour un indice : forcer Int16 a arrondi 249 973 de nos 250 000 pixels (99,99 %) à seulement -1, 0 ou 1.
2. Multiplier par une condition (*) écrit 0, pas nodata, et tire votre moyenne vers le bas
Multiplier un raster par une condition booléenne comme ("ndvi@1" > 0.3) * "ndvi@1" met chaque pixel exclu à 0 au lieu de nodata, ce qui a fait baisser le NDVI moyen de la zone conservée de 0.753 à 0.719.
Le manuel officiel de QGIS enseigne ("elevation@1" >= 0) * "elevation@1" comme méthode standard pour masquer un raster. Sur notre couche NDVI de Machado, 11,343 pixels sont à 0.3 ou moins. Quand vous multipliez par ("ndvi@1" > 0.3), ces 11,343 pixels sont tous écrits avec la valeur valide 0.0, si bien que les statistiques de la couche comptent toujours les 250 000 pixels et incluent 11,343 zéros dans chaque moyenne, histogramme et statistique zonale que vous lancerez ensuite.
| Expression de masque | Ce que deviennent les pixels exclus | Pixels comptés dans les statistiques | NDVI moyen de la zone conservée |
|---|---|---|---|
("ndvi@1" > 0.3) * "ndvi@1" | 0.0 (compté comme donnée) | 250 000 | 0.719 (erreur de -0.034) |
"ndvi@1" / ("ndvi@1" > 0.3) | nodata (-3.40282e+38) | 238 657 | 0.753 (exact) |
Pour écrire un vrai nodata en une seule étape, divisez par la condition au lieu de multiplier : "ndvi@1" / ("ndvi@1" > 0.3). Là où la condition est vraie (1), la valeur reste inchangée ; là où elle est fausse (0), la division par zéro produit nodata.
3. Calculer la pente sur un MNT en degrés avant la calculatrice classe 100 % de la carte en pente forte
Lancer l’outil Slope de QGIS avec ses réglages par défaut sur un MNT géographique (comme Copernicus GLO-30 en EPSG:4326) avant de seuiller "slope@1" > 15 a classé 100 % de nos terres vallonnées comme plus raides que 15 degrés, avec une pente moyenne de 89.99 degrés, alors que le vrai chiffre après reprojection en UTM est de 32.61%.
Copernicus GLO-30 et les autres MNT mondiaux gratuits (voir notre guide sur les téléchargements de MNT gratuits dans QGIS) arrivent en degrés géographiques (EPSG:4326) avec des altitudes en mètres. Avec le facteur Z par défaut, l’outil Slope lit une dénivelée en mètres face à un pas horizontal de 0.000278 (la largeur d’un pixel en degrés), si bien que chaque versant ressemble à une falaise verticale.
Méthode de calcul de la pente avant "slope@1" > 15 | Pixels > 15 degrés | Pente moyenne |
|---|---|---|
Slope natif sur un MNT en EPSG:4326, facteur Z par défaut 1 | 100.00% | 89.99° |
Slope GDAL sur un MNT en EPSG:4326, échelle 1 | 100.00% | 89.99° |
Slope GDAL sur un MNT en EPSG:4326, échelle 111120 | 31.61% | 12.54° |
| Slope natif après reprojection du MNT en UTM 23S 30 m (référence) | 32.61% | 12.68° |
| Slope GDAL après reprojection du MNT en UTM 23S 30 m | 32.71% | 12.71° |
Même le raccourci d’échelle à 111120 mètres par degré tombe un point entier trop bas (31.61% contre 32.61%), car à 22°S un degré de longitude est environ 7 % plus court qu’un degré de latitude (cos 22° = 0.93). Reprojetez toujours votre MNT dans sa zone UTM locale (Raster > Projections > Warp (Reproject), rééchantillonnage bilinéaire, et une valeur nodata de -9999 pour que le bord ne produise pas de fausses pentes à 87°) avant de lancer Slope et la calculatrice raster.
4. Soustraire le décalage Sentinel-2 de +1000 sans vérifier la scène fausse 90,6 % des pixels
Soustraire 1000 de nos bandes Sentinel-2 L2A avant de calculer le NDVI a poussé 226,413 pixels sur 250,000 (90,6 %) hors de la plage valide [-1, 1], avec des valeurs de -1273 à 1217 et une moyenne de 1.39 au lieu de 0.727.
La ligne de traitement Sentinel-2 04.00 de l’ESA et les suivantes ont ajouté un décalage de +1000 sur les comptes numériques pour que les pixels sombres ne soient pas écrêtés à zéro, et les métadonnées STAC indiquent scale: 0.0001 et offset: -0.1. Mais quand vous récupérez des Cloud-Optimized GeoTIFF depuis l’API STAC d’Earth Search (comme nous l’avons fait pour la scène S2A_23KLR_20261103_0_L2A, ligne de traitement 05.13), le fournisseur a déjà décalé les valeurs et indique earthsearch:boa_offset_applied: true dans les métadonnées de l’item.
Dans notre fichier B04, 226,773 pixels sur 250,000 (90,7 %) avaient des comptes numériques bruts inférieurs à 1000 (minimum 59, médiane 491). Vérifiez la valeur minimale de B04 dans Layer Properties > Information avant de toucher à la formule : si les pixels sombres tournent autour de 50 à 300, le décalage est déjà retiré et la formule brute (B08 - B04) / (B08 + B04) est exacte (la division par le facteur d’échelle 10,000 s’annule dans le rapport). Ne soustrayez 1000 que si vos pixels les plus sombres par ciel clair sont au-dessus de 1000.
Bonus : ce que veulent vraiment dire « Expression valid » et la barre d’erreur rouge générique
Deux autres comportements de Raster > Raster Calculator font perdre beaucoup de temps au débogage :
- Des résolutions mélangées sur une grille grossière ne sont pas moyennées. Quand vous combinez une bande à 10 m (
B08) et une bande à 20 m (B11), la calculatrice native rééchantillonne à la volée au plus proche voisin (la calculatrice GDAL s’arrête aussitôt avecError! Dimensions of file ... (250, 250) are different from other files (500, 500). Cannot proceed). Sur une grille de sortie à 10 m, répéter chaque pixel de 20 m en 2 sur 2 fonctionne proprement. Sur une grille de sortie à 20 m, la calculatrice ne fait pas la moyenne des quatre pixels de 10 m : dans62,250cellules sur62,500, elle a simplement pris le pixel de 10 m en haut à droite de chaque bloc de 2 sur 2, avec un écart allant jusqu’à0.71par rapport à la moyenne des 4 pixels dans(B08 - B11) / (B08 + B11). - « Expression valid » ne vérifie que la syntaxe, pas les noms de bandes. Si vous laissez un opérateur en fin de formule, comme
"B08@1" /, la fenêtre le repère (Expression invalid, bouton OK grisé).

Mais si vous tapez une couche ou une bande absente du projet (comme "B04@2", ou "B02@1" quand B02 n’est pas chargée), le libellé indique toujours Expression valid. Quand vous cliquez sur OK, QGIS écrit un GeoTIFF de 500 sur 500 rempli à 100 % de nodata, n’ajoute rien à la carte et affiche une seule bannière rouge : Raster calculator: An error occurred while performing the calculation. Chaque fois que vous voyez cette bannière, comparez chaque nom "layer@band" à la liste Raster Bands.

Se passer de la fenêtre : faire ses calculs raster en le demandant à un agent IA dans QGIS
Nous développons AI Agent, donc cette section parle de notre propre plugin. Il ajoute dans QGIS un panneau de discussion qui peut chercher dans des catalogues STAC, reprojeter des MNT, faire des calculs raster en Python ou via la boîte à outils de traitement, et styliser le résultat sur votre carte.
Pour voir s’il évite les pièges ci-dessus sur exactement les mêmes données de Machado, j’ai dessiné un polygone de ferme de 120,07 ha (E 405300-406300, N 7594400-7595600 en UTM 23S) sur un projet OpenStreetMap vide, et envoyé trois demandes en un seul message chacune, en effort Medium et permissions Balanced, avec une nouvelle discussion par tâche.
Test 1 : NDVI en 5 classes avec les hectares par classe
J’ai tapé :
Compute NDVI for this field from the latest cloud-free Sentinel-2 and class it in 5 classes with hectares per class
L’agent a consulté le catalogue STAC, a noté qu’une scène du 6 novembre 2026 existait mais était très nuageuse, et a choisi la même scène du 3 novembre 2026 (1.65% de couverture nuageuse sur la tuile) que celle de mon test manuel. Il a récupéré B08 et B04 à 10 m, calculé le NDVI, l’a classé en cinq intervalles, a stylisé la couche et a donné la surface de chaque classe sur la grille métrique à 10 m.
| Classe NDVI | Résultat d’AI Agent | Ma vérification numpy indépendante (les mêmes 12 000 pixels) | Écart |
|---|---|---|---|
-1 à < 0 | 0.76 ha | 0.76 ha | 0.0% |
0 à < 0.2 | 23.85 ha | 23.84 ha | < 0.1% |
0.2 à < 0.4 | 9.27 ha | 9.27 ha | 0.0% |
0.4 à < 0.6 | 8.70 ha | 8.69 ha | 0.1% |
0.6 à 1 | 77.42 ha | 77.44 ha | < 0.1% |
| Surface valide totale | 120.00 ha | 120.00 ha (sur un polygone de 120.07 ha) | 0.0% |
Pixel par pixel sur le raster NDVI qu’il a exporté, l’écart absolu moyen avec ma référence était de 5e-5, et son raster de classes différait du mien sur 4 pixels sur 12 000.

Test 2 : pente au-dessus de 15 degrés (sans MNT dans le projet)
Dans une nouvelle discussion, avec seulement le polygone de la ferme chargé, j’ai tapé :
Show where slope is above 15 degrees on the farm layer
L’agent a récupéré le MNT Copernicus à 30 m, l’a reprojeté sur une grille métrique au lieu de calculer la pente en degrés, et a stylisé une couche en deux classes (15 degrees or less en jaune pâle, above 15 degrees en rouge). Il a trouvé 331 pixels de la ferme sur 1,320 au-dessus de 15 degrés (25.08%, max 29.15°). Ma propre référence Slope native, sur un MNT reprojeté en UTM et le même rectangle, a donné 341 pixels sur 1,360 (25.07%, max 29.29°), soit un écart de 0.01 point de pourcentage.

Test 3 : là où il faut encore vérifier l’agent
Dans une troisième discussion, j’ai demandé :
Mask out everything with NDVI below 0.3 on the farm layer and tell me the mean NDVI of what is left
Notez que je n’ai écrit ni « cloud-free » ni « latest » dans cette demande. L’agent a évité le piège du masque à 0 : il a écrit un nodata -9999 pour chaque pixel masqué et a donné un NDVI moyen de 0.552 sur 2,277 pixels conservés. La moyenne de son fichier de sortie était de 0.5515 ; la mienne, sur la même scène avec la même règle, de 0.5513.
En revanche, il a pris la scène Sentinel-2 du 27 octobre 2026, et ce jour-là 80.5% de la ferme (9,656 pixels sur 12,000 dans la bande Scene Classification) était couvert de nuages, d’ombres ou de cirrus. Il a cité la date dans sa réponse, mais n’a jamais signalé que 0.552 ne décrivait que le cinquième dégagé de la parcelle. Sur la scène dégagée du 3 novembre, la même règle donne une moyenne de 0.766 sur 8 785 pixels.
Ma règle : que vous lanciez la calculatrice raster à la main ou que vous le demandiez à un agent de l’écosystème IA de QGIS, vérifiez toujours la date de la scène et chargez la bande en couleurs naturelles ou la bande nuages SCL avant de vous fier à un chiffre de synthèse.
Comment nous avons mesuré. Tous les tests ont eu lieu le 7 novembre 2026 dans QGIS 3.44.15-Solothurn sous macOS (GDAL 3.13.3, numpy 2.5.2), sur une fenêtre de 5 km sur 5 km au sud de Machado, dans le Minas Gerais, au Brésil (EPSG:32723, E 402000-407000, N 7591000-7596000), avec la scène Sentinel-2 L2A S2A_23KLR_20261103_0_L2A (et la scène du 27 octobre 2026 pour le test 3) d’Earth Search, et la tuile Copernicus GLO-30 S22_00_W046_00. Les critères de réussite des tests manuels et des tests 1 et 2 d’AI Agent ont été écrits avant tout calcul raster ; ceux du test 3 ont été écrits après avoir vu les tests 1 et 2. Les grilles de référence ont été calculées avec numpy en flottant 64 bits, hors de QGIS. AI Agent 1.9.4 tournait en effort Medium et permissions Balanced, un message par discussion. Une scène et un site forment un banc d’essai sur un seul cas, pas une étude statistique sur plusieurs lignes de traitement.
Questions fréquentes
Pourquoi mon NDVI ne vaut que 0, -1 ou 1 dans QGIS ?
Vous avez forcé un type de sortie entier (Int16 ou Byte) dans la calculatrice raster GDAL, ce qui arrondit chaque décimale entre -1 et 1 à -1, 0 ou 1 (99,99 % des pixels dans notre test). Laissez le type de sortie sur Float32, ou utilisez Raster > Raster Calculator dans le menu du haut, qui sort automatiquement du Float32.
Pourquoi la calculatrice raster de QGIS échoue-t-elle avec « An error occurred while performing the calculation » et ne produit que du nodata ?
Un nom "layer@band" de votre formule ne correspond à aucune couche chargée ou à aucun numéro de bande (par exemple "B04@2" sur un fichier à une seule bande, ou une couche que vous avez retirée). La mention Expression valid sous la zone de formule ne vérifie que la syntaxe, pas l’existence des bandes. Réinsérez chaque bande en double-cliquant dessus dans la liste Raster Bands.
Quelle différence entre Raster > Raster Calculator et la calculatrice raster GDAL de la boîte à outils de traitement ?
Raster > Raster Calculator (et le Raster calculator natif de la boîte à outils de traitement) utilise l’analyseur propre à QGIS avec des noms "layer@band" et calcule toujours en virgule flottante. La GDAL Raster calculator (gdal_calc.py) utilise des variables lettres (A, B) et évalue les calculs numpy dans le type de données de la bande d’entrée : soustraire des bandes en entiers non signés 16 bits fait donc repartir les nombres négatifs de 65,536, sauf si vous convertissez avec A.astype(numpy.float32).
Comment écrire une condition IF ou mettre des valeurs en nodata dans la calculatrice raster de QGIS ?
Vous pouvez écrire if("ndvi@1" > 0.3, "ndvi@1", 0) pour remplacer par 0 les valeurs inférieures à 0.3. Si vous voulez que les pixels exclus deviennent un vrai nodata pour qu’ils ne fassent pas baisser la moyenne de la couche, divisez plutôt par la condition : "ndvi@1" / ("ndvi@1" > 0.3). Là où la condition est fausse (0), la division par zéro écrit nodata.
À lire ensuiteQu’est-ce que le NDVI ? Définition, valeurs, formule
Faites-le dans QGIS en le demandant
AI Agent réalise la tâche que vous décrivez, dans votre propre projet QGIS. Gratuit, sans carte bancaire.
depuis Raster > Raster Calculator (Raster > Calculatrice Raster en français), ou depuis la boîte à outils de traitement. Pour le NDVI Sentinel-2, utilisez 

