# Buku "Python untuk GIS", Bab 28: Pola dan Improvisasi: Kerangka Siap Salin dan Cara Mengubahnya
# Pola 28.7: Baca dan tulis berkas CSV dan JSON
import os, csv, json

DATA = os.environ.get("PY_DATA", r"D:/Latihan")
HASIL = os.environ.get("PY_HASIL", r"D:/Latihan/hasil")
os.makedirs(HASIL, exist_ok=True)

# Baca: jumlahkan volume per regu
volume = {}
with open(DATA + "/paket-b2/Inventarisasi.csv", encoding="utf-8") as fh:
    for baris in csv.DictReader(fh):
        regu = baris["REGU"]
        volume[regu] = volume.get(regu, 0) + float(baris["VOLUME_M3"])

# Tulis: CSV
with open(HASIL + "/volume_per_regu.csv", "w", newline="", encoding="utf-8") as fh:
    tulis = csv.writer(fh)
    tulis.writerow(["REGU", "VOLUME_M3"])
    for regu, v in sorted(volume.items()):
        tulis.writerow([regu, round(v, 1)])

# Tulis: JSON
volume = {regu: round(v, 1) for regu, v in volume.items()}
with open(HASIL + "/volume_per_regu.json", "w", encoding="utf-8") as fh:
    json.dump(volume, fh, ensure_ascii=False, indent=2)
print(volume)
