QGIS Raster Calculator (Rasterrechner): Getestete Formeln und 4 stille Fallen
Veröffentlicht am
Öffne den QGIS Raster Calculator über Raster > Raster Calculator (deutsche Oberfläche: Raster > Rasterrechner) oder über die Processing Toolbox. Für NDVI aus Sentinel-2 nimmst du ("B08@1" - "B04@1") / ("B08@1" + "B04@1"): Der Rechner im Menü rechnet automatisch in Float32. Achte auf drei Dinge: Der GDAL-Rechner lässt vorzeichenlose Ganzzahlen überlaufen, Masken mit * schreiben 0 statt nodata, und Hangneigungs-Werkzeuge versagen auf Rastern in Grad.
Ich habe all das am 7. November 2026 in QGIS 3.44.15 getestet, auf einem 5 km mal 5 km großen Ausschnitt hügeligen Ackerlands südlich von Machado, Minas Gerais, Brasilien (2.500 ha, 250.000 Pixel mit 10 m in UTM 23S, EPSG:32723). Ich habe eine Sentinel-2-L2A-Szene vom 3. November 2026 und ein 30-m-DEM Copernicus GLO-30 verwendet und jedes Ergebnis außerhalb von QGIS mit einer numpy-Referenz in 64-Bit-Gleitkomma verglichen.
Was ist der QGIS Raster Calculator, und welchen öffnest du gerade?
Ein Rasterrechner wertet einen mathematischen oder booleschen Ausdruck Pixel für Pixel über ein oder mehrere Rasterbänder aus und schreibt ein neues Raster. In QGIS sprichst du ein Band als "layername@band" an (zum Beispiel "B08@1" für Band 1 des Layers B08), kombinierst Bänder mit +, -, *, /, <, >, AND, OR oder if(condition, true, false) und schreibst das Ergebnis als GeoTIFF oder als virtuellen Layer in den Speicher.
Was viele stolpern lässt: QGIS bringt fünf Werkzeuge mit dem Namen "Raster calculator" mit, und nicht alle nutzen dieselbe Engine. Vier verwenden den nativen QGIS-Ausdrucksparser und rechnen in Gleitkomma. Das GDAL-Werkzeug (intern gdal_calc.py) arbeitet mit den Buchstabenvariablen A/B/C und wertet numpy-Ausdrücke im Datentyp des Eingabebands aus.
| Werkzeug in QGIS 3.44 | Band-Syntax | Ausgabetyp | Pixel mit Abweichung > 0,01 bei uint16-NDVI (von 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 (im Speicher) | 0 |
Processing: Raster calculator (legacy) (qgis:rastercalculator) | "B08@1" | Float32 | 0 |
Processing: GDAL Raster calculator (gdal:rastercalculator) | A, B | Float32-Datei, Rechnung im Eingabetyp | 703 (0,28 %, Werte bis 126,7) |
Wenn du einfach eine Formel willst, die ohne Typumwandlung funktioniert, nimm Raster > Raster Calculator aus dem Hauptmenü oder den ersten Raster calculator in der nativen QGIS-Gruppe in Processing.
Schritt für Schritt: NDVI im QGIS Raster Calculator berechnen
Falls du zuerst Sentinel-2-Bänder brauchst, erklärt unser Leitfaden, wie du Sentinel-2-Bilder in QGIS herunterlädst, den Weg über den STAC-Katalog. Sobald die Bänder B04 (Rot, 10 m) und B08 (nahes Infrarot, 10 m) in deinem Layers-Panel liegen, brauchst du vier Schritte, um zu berechnen, was NDVI misst.
Wähle den Layer, der dein Ausgaberaster festlegt
Klicke im Layers-Panel auf B08, bevor du den Dialog öffnest. Beim Öffnen liest Raster > Raster Calculator Ausdehnung, Koordinatenbezugssystem (KBS), Breite und Höhe aus dem Rasterlayer, der gerade im Layers-Panel ausgewählt ist. Prüfe, dass oben Extent (current: B08) steht.
Gib den NDVI-Ausdruck ein
Doppelklicke in Raster > Raster Calculator auf B08@1 und B04@1 in der Liste Raster Bands (oder tippe sie mit doppelten Anführungszeichen), um Folgendes aufzubauen:
("B08@1" - "B04@1") / ("B08@1" + "B04@1")
Prüfe, dass der Hinweis direkt unter dem Ausdrucksfeld Expression valid lautet. In diesem Dialog musst du die vorzeichenlosen 16-Bit-Bänder von Sentinel-2 nicht in Gleitkomma umwandeln.
Wähle eine Ausgabedatei oder einen virtuellen Layer
Setze Output layer auf einen .tif-Pfad und lass Output format auf GeoTIFF. Wenn du nur eine schnelle Vorschau ohne Datei auf der Festplatte willst, aktiviere Create on-the-fly raster instead of writing layer to disk (das speichert eine Formel-URI mit absoluten Pfaden zu den Eingaben in der Projektdatei und stimmt bis auf 3e-8 mit der geschriebenen Datei überein).
Ausführen und das Ergebnis darstellen
Klicke auf OK. Auf unserem Ausschnitt von 500 mal 500 Pixeln war die Berechnung nach 0,12 Sekunden fertig, mit Werten von -0.5507 bis 0.9547 und einer maximalen Abweichung von 2.98e-8 gegenüber numpy in 64 Bit. Öffne Layer Properties > Symbology, wechsle zu Singleband pseudocolor, wähle den Farbverlauf RdYlGn und setze Minimum auf 0 und Maximum auf 0.9.
So sieht der Dialog direkt vor dem Klick auf OK aus, mit der Ausdehnung von B08:

Mit RdYlGn dargestellt erscheint dichte Vegetation rund um Machado dunkelgrün, offener Boden und Straßen rot, und die 703 Pixel, in denen Rot das nahe Infrarot übertrifft (Wasser und dunkle Stellen), werden negativ. Der mittlere NDVI über den ganzen Ausschnitt liegt bei 0.727. Wenn dein Bestand so dicht ist, dass NDVI sättigt, oder zwischen den Reihen offener Boden liegt, lies in unserem Vergleich NDVI vs EVI, SAVI und NDRE, wie sich die Formel ändert.

Formelsammlung für den QGIS Raster Calculator
Jeder Ausdruck unten lief in QGIS 3.44.15 (QgsRasterCalculator) auf dem Machado-Datensatz und wurde Pixel für Pixel mit numpy verglichen. Übernimm die Syntax mit doppelten Anführungszeichen um "layer@band".
| Aufgabe | Getesteter Ausdruck (Raster > Raster Calculator) | Ergebnis auf dem Machado-Testausschnitt |
|---|---|---|
| NDVI (Sentinel-2 10 m) | ("B08@1" - "B04@1") / ("B08@1" + "B04@1") | Float32 von -0.5507 bis 0.9547 über 250.000 Pixel; maximaler Fehler 2.98e-8. |
| NDWI (Wasserindex nach McFeeters) | ("B03@1" - "B08@1") / ("B03@1" + "B08@1") | Float32; "ndwi@1" > 0 isolierte 637 Wasserpixel (6,4 ha Teiche und Bäche). |
| Unter Schwellenwert auf nodata maskieren | "ndvi@1" / ("ndvi@1" > 0.3) | Teilt durch 0, wo die Bedingung falsch ist, und schreibt echtes nodata (11,343 Pixel ausgeschlossen; Mittelwert 0.753). |
Bedingtes Ersetzen (if) | if("ndvi@1" > 0.3, "ndvi@1", 0) | Wird geparst und behält Werte über 0.3, schreibt aber sonst 0, wie die *-Maske. |
| DEM in 5 Klassen reklassifizieren (boolesche Summe) | ("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 bis 5 über 54.901 DEM-Pixel; auf jedem Pixel identisch mit native:reclassifybytable. |
DEM in 5 Klassen reklassifizieren (verschachteltes if) | if("dem@1" < 800, 1, if("dem@1" < 850, 2, if("dem@1" < 900, 3, if("dem@1" < 1000, 4, 5)))) | Dieselben 5 Klassen (96,9 ha, 1.089,4 ha, 1.323,1 ha, 1.759,7 ha, 582,7 ha). |
| Schwellenwert für Hangneigung | "slope@1" > 15 | Schreibt 1 über 15 Grad und 0 bei 15 Grad oder darunter (17,327 von 52,979 gültigen UTM-DEM-Pixeln, 32,61 %). |
| Höhe von Metern in Fuß | "dem@1" * 3.28084 | Maximaler Fehler 0.98 ft (0.026% bei 1.168 m), wenn du statt 3.28084 die 3.28 aus dem QGIS-Handbuch nimmst. |
Vier stille Fallen, die falsche Werte liefern (und wie du sie erkennst)
Keiner der vier Fehler unten löst in QGIS eine Warnung aus. Jeder läuft durch, fügt deinem Projekt einen Layer hinzu und liefert Werte, die plausibel aussehen, bis du sie prüfst.
1. Der GDAL Raster Calculator lässt vorzeichenlose Ganzzahlen bei negativem NDVI überlaufen
Der native QGIS Raster Calculator stößt bei Sentinel-2-Bändern nie auf einen Fehler bei der Ganzzahldivision, aber der GDAL Raster calculator in Processing (gdal:rastercalculator) rechnet (A-B)/(A+B) im numpy-Datentyp der Eingabedatei und verfälscht jedes Pixel, in dem Rot höher ist als NIR.
Sentinel-2-Bänder der Stufe 2A werden als vorzeichenlose 16-Bit-Ganzzahlen (uint16) geliefert. In unserem Ausschnitt von 250.000 Pixeln haben 703 Pixel (0,28 %, Wasser und dunkle Stellen) einen größeren Wert in B04 als in B08. Wenn gdal:rastercalculator B04 in uint16 von B08 abzieht, läuft das negative Ergebnis um 65.536 über, und das Werkzeug schreibt diese 703 Pixel mit Werten zwischen 0 und 126.7 statt negativem NDVI in eine Float32-Datei.

Wenn du den GDAL-Rechner verwendest, wandle im Ausdruck mit (A.astype(numpy.float32)-B)/(A+B) um (das brachte die falschen Pixel in unserem Test auf 0), oder nimm stattdessen den nativen QGIS Raster Calculator. Und setze den GDAL-Ausgabetyp bei einem Index nie auf Int16 oder Byte: Mit erzwungenem Int16 wurden 249.973 unserer 250.000 Pixel (99,99 %) auf nur -1, 0 oder 1 gerundet.
2. Multiplizieren mit einer Bedingung (*) schreibt 0 statt nodata und drückt deinen Mittelwert
Multiplizierst du ein Raster mit einer booleschen Bedingung wie ("ndvi@1" > 0.3) * "ndvi@1", wird jedes ausgeschlossene Pixel auf 0 statt auf nodata gesetzt. Das drückte den mittleren NDVI der behaltenen Fläche von 0.753 auf 0.719.
Das offizielle QGIS-Handbuch lehrt ("elevation@1" >= 0) * "elevation@1" als Standardweg, ein Raster zu maskieren. In unserem NDVI-Layer von Machado liegen 11,343 Pixel bei 0.3 oder darunter. Multiplizierst du mit ("ndvi@1" > 0.3), werden alle 11,343 Pixel als gültige Zahl 0.0 geschrieben. Die Layerstatistik zählt also weiter alle 250.000 Pixel und rechnet 11,343 Nullen in jeden Mittelwert, jedes Histogramm und jede Zonenstatistik ein, die du danach ausführst.
| Maskenausdruck | Was aus ausgeschlossenen Pixeln wird | In der Layerstatistik gezählte Pixel | Mittlerer NDVI der behaltenen Fläche |
|---|---|---|---|
("ndvi@1" > 0.3) * "ndvi@1" | 0.0 (als Daten gezählt) | 250.000 | 0.719 (Fehler -0.034) |
"ndvi@1" / ("ndvi@1" > 0.3) | nodata (-3.40282e+38) | 238.657 | 0.753 (exakt) |
Um in einem Schritt echtes nodata zu schreiben, teile durch die Bedingung, statt mit ihr zu multiplizieren: "ndvi@1" / ("ndvi@1" > 0.3). Wo die Bedingung wahr ist (1), bleibt der Wert unverändert; wo sie falsch ist (0), erzeugt die Division durch null nodata.
3. Slope auf einem DEM in Grad vor dem Rechner markiert 100 % deiner Karte als steil
Lief das QGIS-Werkzeug Slope mit Standardeinstellungen auf einem geografischen DEM (etwa Copernicus GLO-30 in EPSG:4326), bevor ich mit "slope@1" > 15 den Schwellenwert setzte, wurden 100 % unseres hügeligen Ackerlands als steiler als 15 Grad markiert, bei einer mittleren Neigung von 89.99 Grad. Der echte Wert nach dem Umprojizieren nach UTM liegt bei 32.61%.
Copernicus GLO-30 und andere freie globale DEMs (siehe unseren Leitfaden zu kostenlosen DEM-Downloads in QGIS) kommen in geografischen Grad (EPSG:4326) mit Höhen in Metern. Mit dem Standard-Z-Faktor liest das Werkzeug Slope einen Anstieg in Metern gegen einen horizontalen Schritt von 0.000278 (eine Pixelbreite in Grad), sodass jeder Hang wie eine senkrechte Klippe aussieht.
Wie Slope vor "slope@1" > 15 berechnet wurde | Pixel > 15 Grad | Mittlere Neigung |
|---|---|---|
Natives Slope auf DEM in EPSG:4326, Standard-Z-Faktor 1 | 100.00% | 89.99° |
GDAL Slope auf DEM in EPSG:4326, Maßstab 1 | 100.00% | 89.99° |
GDAL Slope auf DEM in EPSG:4326, Maßstab 111120 | 31.61% | 12.54° |
| Natives Slope nach Umprojizieren des DEM nach UTM 23S 30 m (Referenz) | 32.61% | 12.68° |
| GDAL Slope nach Umprojizieren des DEM nach UTM 23S 30 m | 32.71% | 12.71° |
Selbst die Abkürzung mit 111120 Metern pro Grad landet einen ganzen Prozentpunkt zu niedrig (31.61% gegen 32.61%), weil ein Längengrad bei 22° S etwa 7 % kürzer ist als ein Breitengrad (cos 22° = 0.93). Projiziere dein DEM immer in seine lokale UTM-Zone um (Raster > Projections > Warp (Reproject), bilineare Interpolation, und setze einen nodata-Wert von -9999, damit der Rand nicht mit falschen 87°-Neigungen ausfranst), bevor du Slope und den Raster Calculator ausführst.
4. Den Sentinel-2-Offset von +1000 abzuziehen, ohne die Szene zu prüfen, zerstört 90,6 % der Pixel
Als ich vor der NDVI-Berechnung 1000 von unseren Sentinel-2-L2A-Bändern abzog, landeten 226,413 von 250,000 Pixeln (90,6 %) außerhalb des gültigen Bereichs [-1, 1], mit Werten von -1273 bis 1217 und einem Mittelwert von 1.39 statt 0.727.
Mit der Sentinel-2-Prozessierungs-Baseline 04.00 hat die ESA einen Offset von +1000 auf die Digitalwerte eingeführt, damit dunkle Pixel nicht bei null abgeschnitten werden, und die STAC-Metadaten nennen scale: 0.0001 und offset: -0.1. Holst du aber Cloud-Optimized GeoTIFFs aus der Earth Search STAC API (wie wir für die Szene S2A_23KLR_20261103_0_L2A, Baseline 05.13), hat der Anbieter die Werte bereits verschoben und setzt earthsearch:boa_offset_applied: true in den Metadaten des Items.
In unserer B04-Datei hatten 226,773 von 250,000 Pixeln (90,7 %) rohe Digitalwerte unter 1000 (Minimum 59, Median 491). Prüfe den Minimalwert von B04 unter Layer Properties > Information, bevor du die Formel anfasst: Liegen dunkle Pixel bei etwa 50 bis 300, ist der Offset schon entfernt und das rohe (B08 - B04) / (B08 + B04) ist exakt (die Division durch den Skalierungsfaktor 10,000 kürzt sich im Verhältnis heraus). Zieh 1000 nur ab, wenn deine dunkelsten wolkenfreien Pixel über 1000 liegen.
Bonus: was "Expression valid" und der allgemeine rote Fehlerbalken wirklich bedeuten
Zwei weitere Verhaltensweisen von Raster > Raster Calculator kosten viel Zeit bei der Fehlersuche:
- Gemischte Auflösungen auf einem groben Raster werden nicht gemittelt. Wenn du ein 10-m-Band (
B08) und ein 20-m-Band (B11) kombinierst, resampelt der native Rechner direkt per nächstem Nachbarn (der GDAL-Rechner bricht sofort ab mitError! Dimensions of file ... (250, 250) are different from other files (500, 500). Cannot proceed). Auf einem 10-m-Ausgaberaster funktioniert das saubere Wiederholen jedes 20-m-Pixels 2 mal 2. Auf einem 20-m-Ausgaberaster mittelt der Rechner die vier 10-m-Pixel nicht: In62,250von62,500Zellen nahm er einfach das obere rechte 10-m-Pixel jedes 2-mal-2-Blocks und wich bei(B08 - B11) / (B08 + B11)um bis zu0.71von einem Mittel aus 4 Pixeln ab. - "Expression valid" prüft nur die Syntax, nicht die Bandnamen. Wenn du einen Operator am Ende stehen lässt wie bei
"B08@1" /, fängt der Dialog das ab (Expression invalid, OK ausgegraut).

Tippst du aber einen Layer oder ein Band, das nicht im Projekt ist (etwa "B04@2" oder "B02@1", wenn B02 nicht geladen ist), steht dort weiter Expression valid. Klickst du auf OK, schreibt QGIS ein GeoTIFF von 500 mal 500 Pixeln, das zu 100 % aus nodata besteht, fügt der Karte nichts hinzu und zeigt einen roten Balken: Raster calculator: An error occurred while performing the calculation. Wann immer du diesen Balken siehst, prüfe jeden "layer@band"-Namen gegen die Liste Raster Bands.

Ohne Dialog: Rasterrechnung per Anfrage an einen KI-Agenten in QGIS
Wir entwickeln AI Agent, in diesem Abschnitt geht es also um unser eigenes Plugin. Es dockt ein Chat-Panel in QGIS an, das STAC-Kataloge durchsuchen, DEMs umprojizieren, Rasterrechnungen in Python oder Processing ausführen und das Ergebnis auf deiner Karte darstellen kann.
Um zu sehen, ob es die Fallen oben auf genau denselben Machado-Daten vermeidet, habe ich über einem leeren OpenStreetMap-Projekt ein Betriebspolygon von 120,07 ha gezeichnet (E 405300-406300, N 7594400-7595600 in UTM 23S) und drei Prompts mit je einer Nachricht geschickt, auf Medium effort und Balanced permissions, ein neuer Chat pro Aufgabe.
Test 1: NDVI in 5 Klassen mit Hektar pro Klasse
Ich habe getippt:
Compute NDVI for this field from the latest cloud-free Sentinel-2 and class it in 5 classes with hectares per class
Der Agent durchsuchte den STAC-Katalog, stellte fest, dass es eine Szene vom 6. November 2026 gab, die aber stark bewölkt war, und wählte dieselbe Szene vom 3. November 2026 (1.65% Wolkenbedeckung der Kachel), die ich für den manuellen Test genutzt hatte. Er holte B08 und B04 mit 10 m, berechnete NDVI, teilte es in fünf Intervalle ein, stellte den Layer dar und meldete die Fläche pro Klasse auf dem metrischen 10-m-Raster.
| NDVI-Klasse | Bericht von AI Agent | Meine unabhängige numpy-Prüfung (dieselben 12.000 Pixel) | Abweichung |
|---|---|---|---|
-1 bis < 0 | 0.76 ha | 0.76 ha | 0.0% |
0 bis < 0.2 | 23.85 ha | 23.84 ha | < 0.1% |
0.2 bis < 0.4 | 9.27 ha | 9.27 ha | 0.0% |
0.4 bis < 0.6 | 8.70 ha | 8.69 ha | 0.1% |
0.6 bis 1 | 77.42 ha | 77.44 ha | < 0.1% |
| Gültige Gesamtfläche | 120.00 ha | 120.00 ha (von 120.07 ha Polygon) | 0.0% |
Pixel für Pixel auf seinem exportierten NDVI-Raster lag die mittlere absolute Abweichung gegenüber meiner Referenz bei 5e-5, und sein Klassenraster wich auf 4 von 12.000 Pixeln von meinem ab.

Test 2: Hangneigung über 15 Grad (ohne DEM im Projekt)
In einem neuen Chat, in dem nur das Betriebspolygon geladen war, habe ich getippt:
Show where slope is above 15 degrees on the farm layer
Der Agent holte das 30-m-DEM von Copernicus, projizierte es auf ein metrisches Raster um, statt die Neigung in Grad zu berechnen, und stellte einen Layer mit zwei Klassen dar (15 degrees or less in Blassgelb, above 15 degrees in Rot). Er meldete 331 von 1,320 Betriebspixeln über 15 Grad (25.08%, Maximum 29.15°). Meine eigene Referenz mit nativem Slope auf UTM-umprojiziertem DEM für dasselbe Rechteck ergab 341 von 1,360 Pixeln (25.07%, Maximum 29.29°), eine Abweichung von 0.01 Prozentpunkten.

Test 3: Wo du den Agenten noch prüfen musst
In einem dritten Chat habe ich gefragt:
Mask out everything with NDVI below 0.3 on the farm layer and tell me the mean NDVI of what is left
Beachte, dass ich in diesem Prompt weder "cloud-free" noch "latest" geschrieben habe. Der Agent umging die 0-Maskenfalle: Er schrieb für jedes maskierte Pixel -9999 als nodata und gab einen mittleren NDVI von 0.552 über 2,277 behaltene Pixel zurück. Der Mittelwert seiner Ausgabedatei lag bei 0.5515; meiner auf derselben Szene mit derselben Regel bei 0.5513.
Allerdings nahm er die Sentinel-2-Szene vom 27. Oktober 2026, und an diesem Tag waren 80.5% des Betriebs (9,656 von 12,000 Pixeln im Scene Classification Band) von Wolken, Schatten oder Zirren bedeckt. Er nannte das Datum in seiner Antwort, erwähnte aber nie, dass 0.552 nur das wolkenfreie Fünftel des Feldes beschrieb. Auf der klaren Szene vom 3. November ergibt dieselbe Regel einen Mittelwert von 0.766 über 8.785 Pixel.
Meine Faustregel: Ob du den Raster Calculator von Hand bedienst oder einen Agenten aus dem QGIS-KI-Ökosystem fragst, prüfe immer das Datum der Szene und lade das Echtfarbbild oder das SCL-Wolkenband, bevor du einer zusammenfassenden Zahl vertraust.
So haben wir gemessen. Alle Tests liefen am 7. November 2026 in QGIS 3.44.15-Solothurn auf macOS (GDAL 3.13.3, numpy 2.5.2) über einem 5 km mal 5 km großen Ausschnitt südlich von Machado, Minas Gerais, Brasilien (EPSG:32723, E 402000-407000, N 7591000-7596000), mit der Sentinel-2-L2A-Szene S2A_23KLR_20261103_0_L2A (und der Szene vom 27. Oktober 2026 für Test 3) von Earth Search sowie der Copernicus-GLO-30-Kachel S22_00_W046_00. Die Erfolgskriterien für die manuellen Tests und die Agenten-Tests 1 und 2 wurden festgelegt, bevor irgendeine Rasterberechnung lief; die Kriterien für Test 3 erst nach Tests 1 und 2. Die Referenzraster wurden außerhalb von QGIS in numpy mit 64-Bit-Gleitkomma berechnet. AI Agent 1.9.4 lief auf Medium effort und Balanced permissions, eine Nachricht pro Chat. Eine Szene und ein Standort sind ein Einzelfall-Benchmark, keine statistische Erhebung über mehrere Baselines.
Häufig gestellte Fragen
Warum ist mein NDVI in QGIS überall 0, -1 oder 1?
Du hast im GDAL Raster Calculator einen Ganzzahl-Ausgabetyp erzwungen (Int16 oder Byte), der jede Dezimalzahl zwischen -1 und 1 auf -1, 0 oder 1 rundet (99,99 % der Pixel in unserem Test). Lass den Ausgabetyp auf Float32 oder nimm Raster > Raster Calculator aus dem Hauptmenü, das automatisch Float32 ausgibt.
Warum scheitert der QGIS Raster Calculator mit 'An error occurred while performing the calculation' und gibt nur nodata aus?
Ein "layer@band"-Name in deiner Formel passt zu keinem geladenen Layer oder keiner Bandnummer (zum Beispiel "B04@2" bei einer einbandigen Datei oder ein Layer, den du entfernt hast). Der Hinweis Expression valid unter dem Formelfeld prüft nur die Syntax, nicht, ob die Bänder existieren. Füge jedes Band neu ein, indem du es in der Liste Raster Bands doppelklickst.
Was ist der Unterschied zwischen Raster > Raster Calculator und dem GDAL Raster Calculator in Processing?
Raster > Raster Calculator (und der native Raster calculator in Processing) nutzt den eigenen Parser von QGIS mit "layer@band"-Namen und rechnet immer in Gleitkomma. Der GDAL Raster calculator (gdal_calc.py) nutzt Buchstabenvariablen (A, B) und rechnet in numpy im Datentyp des Eingabebands. Beim Subtrahieren vorzeichenloser 16-Bit-Ganzzahlbänder laufen negative Zahlen daher um 65,536 über, wenn du nicht mit A.astype(numpy.float32) umwandelst.
Wie schreibe ich eine IF-Bedingung oder setze Werte im QGIS Raster Calculator auf nodata?
Mit if("ndvi@1" > 0.3, "ndvi@1", 0) ersetzt du Werte unter 0.3 durch 0. Wenn ausgeschlossene Pixel echtes nodata werden sollen, damit sie deinen Layer-Mittelwert nicht drücken, teile stattdessen durch die Bedingung: "ndvi@1" / ("ndvi@1" > 0.3). Wo die Bedingung falsch ist (0), schreibt die Division durch null nodata.
WeiterlesenWas ist NDVI? Bedeutung, Werte und Formel
Erledigen Sie es in QGIS, indem Sie darum bitten
AI Agent führt die beschriebene Aufgabe in Ihrem eigenen QGIS-Projekt aus. Kostenlos, ohne Karte.
Raster Calculator über Raster > Raster Calculator (deutsche Oberfläche: Raster > Rasterrechner) oder über die Processing Toolbox. Für NDVI aus Sentinel-2 nimmst du 

