# -*- coding: utf-8 -*-
"""Uji Processing script lewat PyQGIS (provider sementara). Jalankan: python-qgis.bat uji_processing.py"""
import os, sys
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
from qgis.core import QgsApplication, QgsVectorLayer, QgsProcessingProvider
app = QgsApplication([], False); app.initQgis()
sys.path.append(r"C:/Program Files/QGIS 4.0.2/apps/qgis/python/plugins")
import processing
from processing.core.Processing import Processing
Processing.initialize()
AQ = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, AQ)
from kerapatan_hotspot import KerapatanHotspot
class Penyedia(QgsProcessingProvider):
    def id(self): return "m4"
    def name(self): return "Latihan M4"
    def loadAlgorithms(self): self.addAlgorithm(KerapatanHotspot())
pv = Penyedia(); QgsApplication.processingRegistry().addProvider(pv)
D = os.path.abspath(os.path.join(AQ, "..", "..", "..", "data-sintetis"))
petak = QgsVectorLayer(D + "/paket-m4/Petak_KPH.gpkg", "p", "ogr")
titik = QgsVectorLayer(D + "/paket-data/Hotspot_Nasional.gpkg", "t", "ogr")
print("valid:", petak.isValid(), titik.isValid())
r = processing.run("m4:kerapatan_hotspot", {"PETAK": petak, "TITIK": titik, "BATAS": 0.5, "HASIL": "memory:"})
out = r["HASIL"]
tot = 0; rawan = 0
for f in out.getFeatures():
    print(f["ID_Petak"], f["NAMA_KPH"], f["Jml_Titik"], f["Titik_per_Ha"], f["Rawan"])
    tot += f["Jml_Titik"]; rawan += f["Rawan"]
print("TOTAL titik di petak:", tot, "| petak rawan:", rawan, "| fields:", [x.name() for x in out.fields()])
app.exitQgis()
