# Skrip 3.1: hillshade, kemiringan, arah lereng, dan kontur dari DEM. Penulis: Badar Mubarok Yogaswara
import os
import processing

DATA = os.environ.get("B3_DATA", r"C:/KPH_Contoh/paket-b3")
OUT = os.environ.get("B3_OUT", r"C:/kerja_b3")
os.makedirs(OUT, exist_ok=True)
dem = DATA + "/DEM_KPH.tif"

st = processing.run("native:rasterlayerstatistics", {"INPUT": dem, "BAND": 1})
print("Elevasi min/maks (m):", round(st["MIN"], 2), "/", round(st["MAX"], 2))

processing.run("native:hillshade", {"INPUT": dem, "Z_FACTOR": 1, "AZIMUTH": 300, "V_ANGLE": 40,
                                    "OUTPUT": OUT + "/Hillshade.tif"})
processing.run("native:slope", {"INPUT": dem, "Z_FACTOR": 1, "OUTPUT": OUT + "/Lereng_derajat.tif"})
processing.run("native:aspect", {"INPUT": dem, "Z_FACTOR": 1, "OUTPUT": OUT + "/Arah_lereng.tif"})
processing.run("gdal:contour", {"INPUT": dem, "BAND": 1, "INTERVAL": 5, "FIELD_NAME": "ELEV",
                                "OUTPUT": OUT + "/Kontur_5m.gpkg"})

sl = processing.run("native:rasterlayerstatistics", {"INPUT": OUT + "/Lereng_derajat.tif", "BAND": 1})
print("Lereng min/maks/rata-rata (derajat):", round(sl["MIN"], 2), "/", round(sl["MAX"], 2), "/", round(sl["MEAN"], 2))
