Lewati ke konten
AI Agent
QGIS
Tutorial

Raster Calculator QGIS: Rumus Teruji dan 4 Jebakan Senyap

Diterbitkan

Buka Raster Calculator QGIS dari Raster > Raster Calculator (atau dari Processing Toolbox). Untuk NDVI Sentinel-2, pakai ("B08@1" - "B04@1") / ("B08@1" + "B04@1"): kalkulator di menu otomatis menghitung dalam Float32. Waspadai kalkulator GDAL yang membuat bilangan bulat tak bertanda "melingkar", mask * yang menulis 0 alih-alih nodata, dan alat slope yang rusak pada grid berderajat.

Saya menguji semua itu pada 7 November 2026 di QGIS 3.44.15, pada jendela 5 km kali 5 km berupa lahan pertanian berbukit di selatan Machado, Minas Gerais, Brasil (2.500 ha, 250.000 piksel beresolusi 10 m di UTM 23S, EPSG:32723). Saya memakai scene Sentinel-2 L2A tanggal 3 November 2026 dan DEM Copernicus GLO-30 30 m, lalu mengecek setiap hasil terhadap referensi numpy floating-point 64-bit di luar QGIS.

Apa itu Raster Calculator QGIS, dan yang mana yang Anda buka?

Raster calculator mengevaluasi ekspresi matematika atau boolean piksel demi piksel pada satu atau beberapa band raster, lalu menulis grid baru. Di QGIS, Anda menyebut band sebagai "layername@band" (misalnya "B08@1" untuk band 1 dari layer B08), menggabungkan band dengan +, -, *, /, <, >, AND, OR atau if(condition, true, false), lalu menulis hasilnya ke GeoTIFF atau ke layer virtual di memori.

Yang sering membingungkan, QGIS punya lima alat bernama "Raster calculator", dan tidak semuanya memakai mesin yang sama. Empat memakai parser ekspresi bawaan QGIS dan menghitung dalam floating point. Yang versi GDAL (di baliknya gdal_calc.py) memakai variabel huruf A/B/C dan mengevaluasi ekspresi numpy dalam tipe data asli band input.

Alat di QGIS 3.44Sintaks bandTipe outputPiksel meleset > 0,01 pada NDVI uint16 (dari 250.000)
Raster > Raster Calculator (QgsRasterCalculator)"B08@1"Float320
Processing: Raster calculator (native:rastercalc)"B08@1"Float320
Processing: Raster calculator (virtual) (native:virtualrastercalc)"B08@1"Float64 (di memori)0
Processing: Raster calculator (legacy) (qgis:rastercalculator)"B08@1"Float320
Processing: GDAL Raster calculator (gdal:rastercalculator)A, BFile Float32, hitungan dalam tipe input703 (0,28%, nilai hingga 126,7)

Kalau Anda hanya ingin rumus yang langsung jalan tanpa mengubah tipe data, pakai Raster > Raster Calculator dari menu atas, atau Raster calculator pertama di grup QGIS bawaan pada Processing.

Langkah demi langkah: menghitung NDVI di Raster Calculator QGIS

Kalau Anda perlu band Sentinel-2 dulu, panduan kami tentang cara mengunduh citra Sentinel-2 di QGIS membahas jalur lewat katalog STAC. Setelah band B04 (merah, 10 m) dan B08 (inframerah dekat, 10 m) ada di panel Layers, menghitung apa yang diukur NDVI cukup empat langkah.

Pilih layer yang menentukan grid output

Klik B08 di panel Layers sebelum membuka dialog. Saat Raster > Raster Calculator terbuka, dialog membaca extent output, sistem koordinat (CRS), lebar, dan tinggi dari layer raster yang sedang dipilih di panel Layers. Pastikan bagian atasnya menampilkan Extent (current: B08).

Masukkan ekspresi NDVI

Di Raster > Raster Calculator, klik dua kali B08@1 dan B04@1 di daftar Raster Bands (atau ketik dengan tanda kutip ganda) untuk menyusun:

("B08@1" - "B04@1") / ("B08@1" + "B04@1")

Pastikan catatan tepat di bawah kotak ekspresi berbunyi Expression valid. Di dialog ini Anda tidak perlu mengubah band Sentinel-2 16-bit tak bertanda menjadi float.

Pilih file output atau layer virtual

Isi Output layer dengan path .tif dan biarkan Output format pada GeoTIFF. Kalau Anda hanya ingin pratinjau cepat tanpa file di disk, centang Create on-the-fly raster instead of writing layer to disk (opsi ini menyimpan URI rumus di file proyek dengan path absolut ke input, dan hasilnya sama dengan file tertulis hingga 3e-8).

Jalankan dan atur gaya hasilnya

Klik OK. Pada jendela 500 kali 500 piksel kami, perhitungan selesai dalam 0,12 detik, dengan nilai dari -0.5507 sampai 0.9547 dan selisih maksimum 2.98e-8 terhadap numpy 64-bit. Buka Layer Properties > Symbology, ganti ke Singleband pseudocolor, pilih ramp RdYlGn, lalu atur min ke 0 dan max ke 0.9.

Berikut dialognya tepat sebelum mengklik OK, dengan extent diambil dari B08:

Dialog Raster Calculator QGIS dengan B04@1 dan B08@1 di daftar Raster Bands, path Output layer sudah terisi, Extent (current: B08) dengan 500 kolom dan 500 baris di EPSG:32723, dan rumus NDVI yang menampilkan Expression valid.
Dialog Raster > Raster Calculator mengambil extent awal, CRS, dan dimensi piksel dari layer yang dipilih di panel Layers.

Setelah diberi gaya RdYlGn, vegetasi rapat di sekitar Machado tampil hijau tua, tanah terbuka dan jalan tampil merah, dan 703 piksel tempat merah mengalahkan inframerah dekat (air dan titik gelap) bernilai negatif. Rata-rata NDVI di seluruh jendela adalah 0.727. Kalau kanopi Anda cukup rapat sampai NDVI jenuh, atau menyisakan tanah terbuka di antara barisan tanaman, lihat bagaimana rumusnya berubah dalam perbandingan kami tentang NDVI vs EVI, SAVI dan NDRE.

Kanvas peta QGIS yang menampilkan raster NDVI lahan pertanian Machado 5 km kali 5 km dengan ramp Merah-Kuning-Hijau dari 0 sampai 0,9, dengan panel Layers di kiri.
Output NDVI Float32 di atas Machado, diberi gaya dari 0 (merah) sampai 0,9 (hijau). Setiap piksel cocok dengan referensi 64-bit eksternal dalam batas 3e-8.

Kumpulan rumus Raster Calculator QGIS

Setiap ekspresi di bawah dijalankan di QGIS 3.44.15 (QgsRasterCalculator) pada dataset Machado dan dicek piksel demi piksel terhadap numpy. Salin sintaksnya dengan tanda kutip ganda di sekitar "layer@band".

TugasEkspresi yang diuji (Raster > Raster Calculator)Hasilnya pada jendela uji Machado
NDVI (Sentinel-2 10 m)("B08@1" - "B04@1") / ("B08@1" + "B04@1")Float32 dari -0.5507 sampai 0.9547 pada 250.000 piksel; error maks 2.98e-8.
NDWI (indeks air McFeeters)("B03@1" - "B08@1") / ("B03@1" + "B08@1")Float32; "ndwi@1" > 0 memisahkan 637 piksel air (6,4 ha kolam dan sungai kecil).
Mask di bawah ambang menjadi nodata"ndvi@1" / ("ndvi@1" > 0.3)Membagi dengan 0 saat salah, sehingga menulis nodata sungguhan (11,343 piksel dikecualikan; rata-rata 0.753).
Ganti bersyarat (if)if("ndvi@1" > 0.3, "ndvi@1", 0)Lolos parser dan mempertahankan nilai di atas 0.3, tetapi menulis 0 di tempat lain, sama seperti mask *.
Reklasifikasi DEM ke 5 kelas (jumlah boolean)("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) * 5Kode 1 sampai 5 pada 54.901 piksel DEM; identik di setiap piksel dengan native:reclassifybytable.
Reklasifikasi DEM ke 5 kelas (if bersarang)if("dem@1" < 800, 1, if("dem@1" < 850, 2, if("dem@1" < 900, 3, if("dem@1" < 1000, 4, 5))))5 kelas yang sama (96,9 ha, 1.089,4 ha, 1.323,1 ha, 1.759,7 ha, 582,7 ha).
Ambang slope"slope@1" > 15Menulis 1 di atas 15 derajat dan 0 pada atau di bawahnya (17,327 dari 52,979 piksel DEM UTM valid, 32,61%).
Elevasi meter ke kaki"dem@1" * 3.28084Error maks 0.98 ft (0.026% pada 1.168 m) kalau Anda memakai 3.28 dari manual QGIS alih-alih 3.28084.

Empat jebakan senyap yang menghasilkan angka salah (dan cara mengenalinya)

Tak satu pun dari empat kegagalan di bawah memunculkan peringatan di QGIS. Masing-masing selesai, menambahkan layer ke proyek Anda, dan memberi angka yang tampak masuk akal sampai Anda mengeceknya.

1. GDAL Raster Calculator membuat bilangan bulat tak bertanda melingkar pada NDVI negatif

Raster Calculator bawaan QGIS tidak pernah terkena bug pembagian bilangan bulat pada band Sentinel-2, tetapi GDAL Raster calculator di Processing (gdal:rastercalculator) mengevaluasi (A-B)/(A+B) dalam tipe data numpy asli file input dan merusak setiap piksel yang nilai Red-nya lebih tinggi dari NIR.

Band Sentinel-2 Level-2A dikirim sebagai bilangan bulat 16-bit tak bertanda (uint16). Di jendela 250.000 piksel kami, 703 piksel (0,28%, air dan titik gelap) punya B04 lebih besar dari B08. Saat gdal:rastercalculator mengurangkan B04 dari B08 dalam uint16, hasil negatifnya melingkar di 65.536, dan alat ini menulis 703 piksel itu ke file Float32 dengan nilai antara 0 dan 126.7 alih-alih NDVI negatif.

Peta QGIS yang menampilkan output NDVI GDAL raster calculator pada band uint16, dengan piksel magenta menandai nilai di atas 1 tempat merah melebihi inframerah dekat.
GDAL Raster Calculator pada band uint16 mentah. Magenta menandai nilai di atas 1: piksel yang seharusnya negatif justru melingkar di 65.536, hingga 126,7.

Kalau Anda memakai kalkulator GDAL, ubah tipenya di dalam ekspresi dengan (A.astype(numpy.float32)-B)/(A+B) (yang menurunkan piksel salah menjadi 0 dalam uji kami), atau pakai Raster Calculator bawaan QGIS saja. Dan jangan pernah mengatur tipe output GDAL ke Int16 atau Byte untuk sebuah indeks: memaksa Int16 membulatkan 249.973 dari 250.000 piksel kami (99,99%) menjadi hanya -1, 0 atau 1.

2. Mengalikan dengan kondisi (*) menulis 0, bukan nodata, dan menurunkan rata-rata

Mengalikan raster dengan kondisi boolean seperti ("ndvi@1" > 0.3) * "ndvi@1" membuat setiap piksel yang dikecualikan bernilai 0, bukan nodata, sehingga rata-rata NDVI area yang dipertahankan turun dari 0.753 ke 0.719.

Manual resmi QGIS mengajarkan ("elevation@1" >= 0) * "elevation@1" sebagai cara standar untuk me-mask raster. Pada layer NDVI Machado kami, 11,343 piksel bernilai 0.3 atau kurang. Saat Anda mengalikan dengan ("ndvi@1" > 0.3), ke-11,343 piksel itu ditulis sebagai angka valid 0.0, jadi statistik layer tetap menghitung 250.000 piksel dan memasukkan 11,343 nol ke setiap rata-rata, histogram, dan statistik zonal yang Anda jalankan berikutnya.

Ekspresi maskPiksel yang dikecualikan menjadiPiksel yang dihitung di statistik layerRata-rata NDVI area yang dipertahankan
("ndvi@1" > 0.3) * "ndvi@1"0.0 (dihitung sebagai data)250.0000.719 (error -0.034)
"ndvi@1" / ("ndvi@1" > 0.3)nodata (-3.40282e+38)238.6570.753 (tepat)

Untuk menulis nodata sungguhan dalam satu langkah, bagi dengan kondisi alih-alih mengalikan: "ndvi@1" / ("ndvi@1" > 0.3). Saat kondisinya benar (1), nilainya tidak berubah; saat salah (0), pembagian dengan nol menghasilkan nodata.

3. Menjalankan Slope pada DEM berderajat sebelum kalkulator menandai 100% peta Anda sebagai curam

Menjalankan alat Slope QGIS dengan pengaturan default pada DEM geografis (seperti Copernicus GLO-30 di EPSG:4326) sebelum memberi ambang "slope@1" > 15 menandai 100% lahan berbukit kami lebih curam dari 15 derajat, dengan rata-rata slope 89.99 derajat, padahal angka sebenarnya setelah di-warp ke UTM adalah 32.61%.

Copernicus GLO-30 dan DEM global gratis lainnya (lihat panduan kami tentang unduhan DEM gratis di QGIS) datang dalam derajat geografis (EPSG:4326) dengan elevasi dalam meter. Dengan Z factor default, alat Slope membaca kenaikan dalam meter terhadap langkah horizontal 0.000278 (lebar satu piksel dalam derajat), sehingga setiap lereng bukit tampak seperti tebing vertikal.

Cara Slope dihitung sebelum "slope@1" > 15Piksel > 15 derajatRata-rata slope
Slope bawaan pada DEM EPSG:4326, Z factor default 1100.00%89.99°
Slope GDAL pada DEM EPSG:4326, scale 1100.00%89.99°
Slope GDAL pada DEM EPSG:4326, scale 11112031.61%12.54°
Slope bawaan setelah DEM di-warp ke UTM 23S 30 m (referensi)32.61%12.68°
Slope GDAL setelah DEM di-warp ke UTM 23S 30 m32.71%12.71°

Bahkan jalan pintas skala 111120 meter per derajat meleset satu poin persentase penuh (31.61% vs 32.61%), karena pada 22°LS satu derajat bujur kira-kira 7% lebih pendek dari satu derajat lintang (cos 22° = 0.93). Selalu warp DEM Anda ke zona UTM setempat (Raster > Projections > Warp (Reproject), resampling bilinear, dan atur nilai nodata -9999 agar tepinya tidak memunculkan slope palsu 87°) sebelum menjalankan Slope dan Raster Calculator.

4. Mengurangi offset +1000 Sentinel-2 tanpa mengecek scene merusak 90,6% piksel

Mengurangi 1000 dari band Sentinel-2 L2A kami sebelum menghitung NDVI mendorong 226,413 dari 250,000 piksel (90,6%) keluar dari rentang valid [-1, 1], dengan nilai dari -1273 sampai 1217 dan rata-rata 1.39 alih-alih 0.727.

Processing baseline Sentinel-2 04.00 dari ESA dan versi sesudahnya menambahkan offset digital number +1000 agar piksel gelap tidak terpotong di nol, dan metadata STAC mencantumkan scale: 0.0001 dan offset: -0.1. Tetapi saat Anda mengambil Cloud-Optimized GeoTIFF dari Earth Search STAC API (seperti yang kami lakukan untuk scene S2A_23KLR_20261103_0_L2A, baseline 05.13), penyedia sudah menggeser nilainya dan mengisi earthsearch:boa_offset_applied: true di metadata item.

Di file B04 kami, 226,773 dari 250,000 piksel (90,7%) punya digital number mentah di bawah 1000 (minimum 59, median 491). Cek nilai minimum B04 di Layer Properties > Information sebelum menyentuh rumus: kalau piksel gelap ada di sekitar 50 sampai 300, offset sudah dihapus dan (B08 - B04) / (B08 + B04) mentah sudah tepat (pembagian dengan faktor skala 10,000 saling meniadakan dalam rasio). Kurangi 1000 hanya kalau piksel langit cerah tergelap Anda ada di atas 1000.

Bonus: arti sebenarnya "Expression valid" dan bilah error merah generik

Dua perilaku lain di Raster > Raster Calculator banyak membuang waktu debugging:

  • Resolusi campuran pada grid kasar tidak dirata-rata. Saat Anda menggabungkan band 10 m (B08) dan band 20 m (B11), kalkulator bawaan melakukan resampling langsung dengan nearest neighbour (kalkulator GDAL langsung berhenti dengan Error! Dimensions of file ... (250, 250) are different from other files (500, 500). Cannot proceed). Pada grid output 10 m, mengulang setiap piksel 20 m menjadi 2 kali 2 berjalan mulus. Pada grid output 20 m, kalkulator tidak merata-rata empat piksel 10 m: di 62,250 dari 62,500 sel, ia hanya mengambil piksel 10 m kanan atas dari setiap blok 2 kali 2, dengan selisih hingga 0.71 dari rata-rata 4 piksel pada (B08 - B11) / (B08 + B11).
  • "Expression valid" hanya mengecek sintaks, bukan nama band. Kalau Anda menyisakan operator di akhir seperti "B08@1" /, dialog menangkapnya (Expression invalid, tombol OK menjadi abu-abu).
Dialog Raster Calculator QGIS dengan rumus tidak lengkap yang diakhiri garis miring, menampilkan Expression invalid di kiri bawah dan tombol OK nonaktif.
Kesalahan sintaks langsung menonaktifkan tombol OK.

Tetapi kalau Anda mengetik layer atau band yang tidak ada di proyek (seperti "B04@2" atau "B02@1" saat B02 belum dimuat), labelnya tetap berbunyi Expression valid. Saat Anda mengklik OK, QGIS menulis GeoTIFF 500 kali 500 yang 100% berisi nodata, tidak menambahkan apa pun ke peta, dan menampilkan satu banner merah: Raster calculator: An error occurred while performing the calculation. Setiap kali melihat banner itu, cek setiap nama "layer@band" terhadap daftar Raster Bands.

Bilah error merah di atas kanvas peta QGIS bertuliskan Raster calculator: An error occurred while performing the calculation.
Salah ketik pada nama band lolos cek sintaks, gagal dengan bilah generik ini, dan meninggalkan GeoTIFF yang seluruhnya nodata di disk.

Melewati dialog: menjalankan perhitungan raster dengan meminta agen AI di QGIS

Kami membuat AI Agent, jadi bagian ini membahas plugin kami sendiri. Plugin ini menambahkan panel chat di dalam QGIS yang bisa mencari katalog STAC, me-warp DEM, menjalankan perhitungan raster di Python atau Processing, dan mengatur gaya hasilnya di peta Anda.

Untuk melihat apakah ia menghindari jebakan di atas pada data Machado yang persis sama, saya menggambar poligon lahan 120,07 ha (E 405300-406300, N 7594400-7595600 di UTM 23S) di atas proyek OpenStreetMap kosong dan mengirim tiga prompt satu pesan dengan effort Medium, izin Balanced, satu chat baru per tugas.

Uji 1: NDVI dalam 5 kelas dengan luas hektare per kelas

Saya mengetik:

Compute NDVI for this field from the latest cloud-free Sentinel-2 and class it in 5 classes with hectares per class

Agen mengecek katalog STAC, mencatat bahwa ada scene 6 November 2026 tetapi tertutup awan tebal, lalu memilih scene 3 November 2026 yang sama (tutupan awan tile 1.65%) yang saya pakai untuk uji manual. Ia mengambil B08 dan B04 pada 10 m, menghitung NDVI, membaginya ke lima interval, mengatur gaya layer, dan melaporkan luas per kelas pada grid metrik 10 m.

Kelas NDVILaporan AI AgentCek numpy independen saya (12.000 piksel yang sama)Selisih
-1 sampai < 00.76 ha0.76 ha0.0%
0 sampai < 0.223.85 ha23.84 ha< 0.1%
0.2 sampai < 0.49.27 ha9.27 ha0.0%
0.4 sampai < 0.68.70 ha8.69 ha0.1%
0.6 sampai 177.42 ha77.44 ha< 0.1%
Total area valid120.00 ha120.00 ha (dari poligon 120.07 ha)0.0%

Piksel demi piksel pada raster NDVI yang diekspornya, selisih absolut rata-rata terhadap referensi saya adalah 5e-5, dan raster kelasnya berbeda dari milik saya pada 4 dari 12.000 piksel.

Antarmuka QGIS yang menampilkan poligon lahan 120 ha dengan lima kelas NDVI dari merah ke hijau tua, panel Layers menampilkan luas hektare per kelas, dan panel AI Agent di kanan mencantumkan sumber Sentinel-2 3 November 2026 dan luas tiap kelas.
Satu pesan: agen melewati citra berawan 6 November, memakai scene 3 November, dan cocok dengan luas referensi kami dalam batas 0,1%.

Uji 2: Slope di atas 15 derajat (tanpa DEM di proyek)

Di chat baru dengan hanya poligon lahan yang dimuat, saya mengetik:

Show where slope is above 15 degrees on the farm layer

Agen mengambil DEM Copernicus 30 m, memproyeksikannya ulang ke grid metrik alih-alih menjalankan slope dalam derajat, lalu mengatur gaya layer dua kelas (15 degrees or less kuning pucat, above 15 degrees merah). Ia melaporkan 331 dari 1,320 piksel lahan di atas 15 derajat (25.08%, maks 29.15°). Referensi Slope bawaan saya sendiri yang di-warp ke UTM pada persegi panjang yang sama memberi 341 dari 1,360 piksel (25.07%, maks 29.29°), selisih 0.01 poin persentase.

Peta QGIS poligon lahan yang menampilkan slope di atas 15 derajat sebagai sel merah di atas OpenStreetMap, dengan panel chat AI Agent di kanan melaporkan 331 dari 1.320 piksel lahan di atas ambang dan maksimum 29,1 derajat dari DEM Copernicus 30 m.
Agen me-warp DEM Copernicus ke grid metrik sebelum memberi ambang, dan hasilnya hanya selisih 0,01 poin persentase dari referensi kami.

Uji 3: Di mana Anda tetap harus mengecek agen

Di chat ketiga, saya bertanya:

Mask out everything with NDVI below 0.3 on the farm layer and tell me the mean NDVI of what is left

Perhatikan bahwa saya tidak menulis "cloud-free" atau "latest" di prompt ini. Agen menghindari jebakan mask 0: ia menulis nodata -9999 untuk setiap piksel yang di-mask dan memberi rata-rata NDVI 0.552 pada 2,277 piksel yang tersisa. Rata-rata file outputnya 0.5515; milik saya pada scene dan aturan yang sama 0.5513.

Namun, ia mengambil scene Sentinel-2 tanggal 27 Oktober 2026, dan pada tanggal itu 80.5% lahan (9,656 dari 12,000 piksel di band Scene Classification) tertutup awan, bayangan, atau cirrus. Ia menyebut tanggalnya dalam jawaban, tetapi tidak pernah menyebut bahwa 0.552 hanya menggambarkan seperlima lahan yang cerah. Pada scene cerah 3 November, aturan yang sama memberi rata-rata 0.766 pada 8.785 piksel.

Patokan saya: entah Anda menjalankan Raster Calculator secara manual atau meminta agen di ekosistem AI QGIS, selalu periksa tanggal scene dan muat band warna asli atau band awan SCL sebelum memercayai angka ringkasan.

Cara kami mengukurnya. Semua pengujian berjalan pada 7 November 2026 di QGIS 3.44.15-Solothurn di macOS (GDAL 3.13.3, numpy 2.5.2) pada jendela 5 km kali 5 km di selatan Machado, Minas Gerais, Brasil (EPSG:32723, E 402000-407000, N 7591000-7596000), memakai scene Sentinel-2 L2A S2A_23KLR_20261103_0_L2A (dan scene 27 Oktober 2026 untuk uji 3) dari Earth Search dan tile Copernicus GLO-30 S22_00_W046_00. Kriteria keberhasilan untuk uji manual serta uji agen 1 dan 2 ditulis sebelum perhitungan raster apa pun dijalankan; kriteria untuk uji 3 ditulis setelah melihat uji 1 dan 2. Grid referensi dihitung dengan numpy float 64-bit di luar QGIS. AI Agent 1.9.4 berjalan dengan effort Medium dan izin Balanced, satu pesan per chat. Satu scene dan satu lokasi adalah benchmark satu kasus, bukan survei statistik lintas baseline.

Pertanyaan yang sering diajukan

Kenapa NDVI saya semuanya 0, -1 atau 1 di QGIS?

Anda memaksa tipe output bilangan bulat (Int16 atau Byte) di GDAL raster calculator, yang membulatkan setiap desimal antara -1 dan 1 menjadi -1, 0 atau 1 (99,99% piksel dalam uji kami). Biarkan tipe output pada Float32, atau pakai Raster > Raster Calculator dari menu atas, yang otomatis menghasilkan Float32.

Kenapa Raster Calculator QGIS gagal dengan 'An error occurred while performing the calculation' dan menghasilkan nodata?

Ada nama "layer@band" di rumus Anda yang tidak cocok dengan layer atau nomor band yang dimuat (misalnya mengetik "B04@2" pada file satu band, atau menyebut layer yang sudah Anda hapus). Pesan Expression valid di bawah kotak rumus hanya mengecek sintaks, bukan apakah band-nya ada. Masukkan ulang setiap band dengan mengklik dua kali di daftar Raster Bands.

Apa bedanya Raster > Raster Calculator dengan GDAL Raster Calculator di Processing?

Raster > Raster Calculator (dan Raster calculator bawaan di Processing) memakai parser milik QGIS dengan nama "layer@band" dan selalu menghitung dalam floating point. GDAL Raster calculator (gdal_calc.py) memakai variabel huruf (A, B) dan mengevaluasi perhitungan numpy dalam tipe data band input, sehingga pengurangan band bilangan bulat 16-bit tak bertanda membuat angka negatif melingkar di 65,536 kecuali Anda mengubah tipenya dengan A.astype(numpy.float32).

Bagaimana menulis kondisi IF atau mengubah nilai menjadi nodata di Raster Calculator QGIS?

Anda bisa menulis if("ndvi@1" > 0.3, "ndvi@1", 0) untuk mengganti nilai di bawah 0.3 dengan 0. Kalau Anda ingin piksel yang dikecualikan menjadi nodata sungguhan agar tidak menurunkan rata-rata layer, bagi dengan kondisinya: "ndvi@1" / ("ndvi@1" > 0.3). Saat kondisinya salah (0), pembagian dengan nol menulis nodata.

Coba AI Agent gratis

Kerjakan di QGIS cukup dengan memintanya

AI Agent menjalankan tugas yang Anda jelaskan, langsung di proyek QGIS Anda sendiri. Gratis, tanpa kartu.

Coba AI Agent gratis