# Buku "Python untuk GIS", Bab 28: Pola dan Improvisasi: Kerangka Siap Salin dan Cara Mengubahnya
# Pola 28.2: Loop fitur
import os
from qgis.core import QgsVectorLayer, QgsFeatureRequest

DATA = os.environ.get("PY_DATA", r"D:/Latihan")
petak = QgsVectorLayer(DATA + "/paket-b2/Petak_KPH.gpkg|layername=Petak", "Petak", "ogr")
assert petak.isValid(), "Layer tidak terbuka. Cek DATA dan nama berkas."

# Tiap petak diperiksa satu per satu; hasilnya dikumpulkan ke kamus
luas_per_kph = {}
for f in petak.getFeatures():
    kph = f["NAMA_KPH"]
    ha = f.geometry().area() / 10000
    luas_per_kph[kph] = luas_per_kph.get(kph, 0) + ha
for kph, ha in sorted(luas_per_kph.items()):
    print("%-10s %6.2f ha" % (kph, ha))

# Hanya fitur yang memenuhi syarat
syarat = QgsFeatureRequest().setFilterExpression('"TAHUN_TANAM" < 2010')
tua = [f["KODE_PETAK"] for f in petak.getFeatures(syarat)]
print("Ditanam sebelum 2010:", tua)
