# Skrip 2.1: menumpuk empat band menjadi satu raster multiband. Penulis: Badar Mubarok Yogaswara
import os
import processing
from qgis.core import QgsRasterLayer

DATA = os.environ.get("B3_DATA", r"C:/KPH_Contoh/paket-b3")
OUT = os.environ.get("B3_OUT", r"C:/kerja_b3")          # folder hasil (dibuat otomatis bila belum ada)
os.makedirs(OUT, exist_ok=True)

# Urutan penting: band 1 = biru (B02), 2 = hijau (B03), 3 = merah (B04), 4 = inframerah dekat (B08)
urut = [DATA + "/Citra_B02.tif", DATA + "/Citra_B03.tif", DATA + "/Citra_B04.tif", DATA + "/Citra_B08.tif"]
HASIL = OUT + "/Citra_4band.tif"
if os.path.exists(HASIL):
    os.remove(HASIL)          # gdal:merge tidak menimpa hasil lama
hasil = processing.run("gdal:merge", {
    "INPUT": urut,
    "SEPARATE": True,        # satu berkas = satu band
    "DATA_TYPE": 2,          # 2 = UInt16, sama dengan data asal
    "OUTPUT": OUT + "/Citra_4band.tif"})
stack = QgsRasterLayer(hasil["OUTPUT"], "Citra_4band")
if not stack.isValid():
    raise SystemExit("Citra_4band.tif tidak terbentuk. Periksa DATA dan OUT.")
print("Jumlah band:", stack.bandCount(), "| tipe:", stack.dataProvider().dataType(1).name)
print("Warna asli  : merah=band 3, hijau=band 2, biru=band 1")
print("Warna palsu : merah=band 4, hijau=band 3, biru=band 2")
