# [SKRIP 2.1-ArcMap: Validasi Titik Ground-Truth vs Poligon Klasifikasi dengan ArcPy]
# Penulis: Badar Mubarok Yogaswara
# [CEK] Cocokkan dengan versi Anda. Spatial Join tersedia pada semua level lisensi.
from __future__ import print_function   # agar print() berlaku di Python 2.7
import arcpy

arcpy.env.workspace = r"C:\data_kph\Survei.gdb"      # ganti dengan lokasi Anda
arcpy.env.overwriteOutput = True

survei = "Titik_Survei"
klasifikasi = "Poligon_Sawah"
hasil = "Validasi_Hasil"

print("Memulai validasi lapangan otomatis...")

# 1. Spatial Join: tarik atribut poligon ke titik survei yang berada di dalamnya
arcpy.SpatialJoin_analysis(survei, klasifikasi, hasil,
                           "JOIN_ONE_TO_ONE", "KEEP_ALL", "", "INTERSECT")

# 2. Hitung akurasi: bandingkan Kondisi dengan Kelas_Citra
total_titik = 0
titik_cocok = 0
with arcpy.da.SearchCursor(hasil, ["Kondisi", "Kelas_Citra"]) as kursor:
    for kondisi, kelas in kursor:
        total_titik += 1
        if str(kondisi).lower() == str(kelas).lower():
            titik_cocok += 1

akurasi = (float(titik_cocok) / total_titik) * 100 if total_titik > 0 else 0
print("Laporan Validasi: {} dari {} titik cocok.".format(titik_cocok, total_titik))
print("Akurasi Keseluruhan (Overall Accuracy): {:.2f}%".format(akurasi))
