BAB 6: Otomatisasi Alur Kerja & Atlas Dinamis Tingkat Lanjut
#Bagian A: QGIS
#6.1. Graphical Modeler dengan Percabangan Logika
Anda akan membangun mesin pemrosesan yang bisa berpikir.

#Langkah Eksekusi:
- Buka Processing > Graphical Modeler.
- Tambahkan Vector Layer (Input: Data Titik Panas/Hotspot) dan Vector Layer (Input: Batas KPH).
- Tambahkan Logika: Cari algoritma Conditional Branch. Atur: "JIKA jumlah titik panas > 0, MAKA jalankan algoritma Intersection dengan Batas KPH. JIKA TIDAK, hentikan proses."
- Simpan model sebagai "Kalkulator_Karhutla".
#6.2. Print Layout & Ekspor Laporan Otomatis (Atlas)
#Langkah Eksekusi (Desain & Pengaturan):
- Buka Project > New Print Layout. Beri nama "Laporan Kebakaran Hutan".
- Tambahkan Add Map.
- Di panel kanan, buka Atlas, centang Generate an Atlas. Pilih Coverage Layer: Batas_KPH.
- Klik peta di kanvas. Pada Item Properties, centang Controlled by atlas dan atur margin 15% agar peta menyesuaikan bentuk setiap KPH.

#6.3. Teks Dinamis Berbasis Expression Builder (Inti Laporan)
Tambahkan Add Label. Masukkan kode ekspresi ini. Kode ini menghitung secara dinamis Hotspot (titik api) yang jatuh di dalam poligon KPH pada halaman yang sedang aktif.
'LAPORAN KEBAKARAN HUTAN KPH ' || upper("NAMA_KPH") || '\n' ||
'-----------------------------------' || '\n' ||
'Total Luas KPH: ' || round($area / 10000, 2) || ' Ha \n' ||
'Jumlah Titik Api Aktif: ' ||
aggregate(
layer:= 'Hotspot_Nasional',
aggregate:= 'count',
expression:= "ID_Titik",
filter:= intersects($geometry, geometry(@parent))
) || ' Titik.'#6.4. Ekspor Massal Laporan Sektoral
- Di panel Atlas generation, atur Output filename expression menjadi "NAMA_KPH" || '_Laporan_Bulan_Ini'.
- Klik ikon Export Atlas as PDF di atas layar.
- Pergilah ke kantin dan minum kopi. Saat Anda kembali, QGIS sudah membuat 50 halaman PDF berisi peta yang di-zoom ke tiap KPH, lengkap dengan angka luas dan deteksi yang akurat di setiap halaman.
#Bagian B: ArcGIS Pro
#6.1. Model dengan Percabangan Logika (ArcGIS Pro)
Padanan Graphical Modeler adalah ModelBuilder. Percabangan dibuat dengan alat yang menghasilkan nilai Boolean, lalu Boolean itu dipasang sebagai precondition bagi alat berikutnya.

#Langkah Eksekusi:
- Buka ModelBuilder dan buat model baru. [CEK]
- Tambahkan dua masukan: layer titik panas (Hotspot_Nasional) dan batas KPH (Batas_KPH). Jadikan keduanya parameter model.
- Tambahkan Get Count pada layer titik panas. Keluarannya adalah jumlah baris (bilangan bulat).
- Tambahkan If Value Is dengan syarat lebih besar dari 0. Alat ini menghasilkan dua keluaran Boolean: True dan False.
- Jadikan keluaran True sebagai precondition untuk Intersect antara titik panas dan Batas_KPH. Bila titik panas nol, Intersect tidak berjalan.
- Simpan model sebagai "Kalkulator_Karhutla".
#6.2. Print Layout dan Ekspor Laporan Otomatis (ArcGIS Pro)
Padanan Atlas adalah Map Series: satu halaman layout untuk setiap fitur pada layer indeks.
#Langkah Eksekusi (Desain dan Pengaturan):
- Buat layout baru dengan nama "Laporan Kebakaran Hutan". [CEK]
- Tambahkan bingkai peta (map frame).
- Aktifkan Map Series bertipe spasial dan pilih layer indeks Batas_KPH. [CEK]
- Atur agar peta menyesuaikan bentuk tiap KPH dengan margin sekitar 15 persen. [CEK]
#6.3. Teks Dinamis (ArcGIS Pro)
Pada QGIS, jumlah titik api dihitung di dalam ekspresi teks dengan fungsi aggregate(). Pada ArcGIS, jumlah itu dihitung lebih dulu, lalu dipakai sebagai atribut KPH.
- Jalankan Spatial Join dengan target Batas_KPH dan join Hotspot_Nasional (JOIN_ONE_TO_ONE, KEEP_ALL, INTERSECT). Jumlah titik per KPH tersimpan di field Join_Count. [CEK] untuk nama field di Pro.
- Tambahkan field Luas_Ha berisi luas KPH dalam hektar, misalnya dengan Calculate Geometry. [CEK]
- Pakai Batas_KPH hasil Spatial Join sebagai layer indeks Map Series.
- Tambahkan elemen Dynamic Text pada layout dan pilih atribut layer indeks (NAMA_KPH, Luas_Ha, dan Join_Count). [CEK]

#6.4. Ekspor Massal Laporan Sektoral (ArcGIS Pro)
Pro mengekspor Map Series lewat dialog ekspor layout. Untuk satu berkas PDF per KPH dengan nama dari field NAMA_KPH, pakai skrip berikut:
# [SKRIP 6.1-Pro: Ekspor PDF per KPH dari Map Series]
# Penulis: Badar Mubarok Yogaswara
# [CEK] Cocokkan dengan versi Anda.
import os
import arcpy
aprx = arcpy.mp.ArcGISProject("CURRENT")
lyt = aprx.listLayouts("Laporan Kebakaran Hutan")[0]
ms = lyt.mapSeries
folder_out = r"D:\Laporan"
for no in range(1, ms.pageCount + 1):
ms.currentPageNumber = no
nama = ms.pageRow.NAMA_KPH
lyt.exportToPDF(os.path.join(folder_out, f"{nama}_Laporan_Bulan_Ini.pdf"))
print(f"Selesai: {nama}")#Bagian C: ArcMap 10.8
#6.1. Model dengan Percabangan Logika (ArcMap)
ModelBuilder di ArcMap juga mendukung percabangan lewat nilai Boolean sebagai precondition. Alat If Value Is tidak ditemukan di ArcMap, sehingga Boolean dihasilkan dengan Calculate Value.

- Buat model baru dengan dua masukan: Hotspot_Nasional dan Batas_KPH.
- Tambahkan Get Count pada layer titik panas.
- Tambahkan Calculate Value yang menguji apakah jumlahnya lebih dari 0, dengan tipe keluaran Boolean. [CEK] untuk bentuk ekspresinya.
- Jadikan Boolean itu precondition untuk Intersect antara titik panas dan Batas_KPH.
- Simpan model sebagai "Kalkulator_Karhutla".
#6.2. Print Layout dan Ekspor Laporan Otomatis (ArcMap)
Padanan Atlas adalah Data Driven Pages. Fitur ini hanya dapat diekspor dari tampilan layout.
- Buka tampilan layout dan siapkan peta.
- Atur Data Driven Pages: pilih layer indeks Batas_KPH dan field nama NAMA_KPH. [CEK]
- Atur agar peta menyesuaikan bentuk tiap KPH dengan margin sekitar 15 persen. [CEK]
#6.3. Teks Dinamis (ArcMap)
ArcMap memakai dynamic text berbentuk tag mirip HTML. Atribut layer indeks dipanggil dengan tag di bawah ini. Seperti pada Bagian B, jumlah titik api dihitung lebih dulu dengan Spatial Join (field Join_Count), dan luas disimpan di field Luas_Ha (misalnya dengan Calculate Geometry). [CEK]

Tambahkan elemen teks pada layout dan isi dengan teks berikut:
LAPORAN KEBAKARAN HUTAN KPH <dyn type="page" property="attribute" field="NAMA_KPH"/>
-----------------------------------
Total Luas KPH: <dyn type="page" property="attribute" field="Luas_Ha"/> Ha
Jumlah Titik Api Aktif: <dyn type="page" property="attribute" field="Join_Count"/> Titik.#6.4. Ekspor Massal Laporan Sektoral (ArcMap)
Lewat menu File > Export Map dan format PDF, tab Pages memilih halaman yang diekspor, tetapi hasilnya satu berkas. Untuk satu PDF per KPH, pakai skrip berikut:
# [SKRIP 6.1-ArcMap: Ekspor PDF per KPH dari Data Driven Pages]
# Penulis: Badar Mubarok Yogaswara
# [CEK] Cocokkan dengan versi Anda.
from __future__ import print_function # agar print() berlaku di Python 2.7
import os
import arcpy
mxd = arcpy.mapping.MapDocument("CURRENT")
ddp = mxd.dataDrivenPages
folder_out = r"D:\Laporan"
for no in range(1, ddp.pageCount + 1):
ddp.currentPageID = no
nama = ddp.pageRow.getValue("NAMA_KPH")
arcpy.mapping.ExportToPDF(mxd, os.path.join(folder_out, nama + "_Laporan_Bulan_Ini.pdf"))
print("Selesai: {}".format(nama))
del mxd#Ringkasan, Latihan, dan Bantuan Bab 6
#Ringkasan
- Graphical Modeler dapat bercabang: proses berjalan hanya bila syarat terpenuhi.
- Atlas membuat satu halaman peta untuk setiap fitur pada layer cakupan.
- Fungsi aggregate() menghitung titik panas yang jatuh di dalam tiap KPH.
- [ArcGIS Pro] ModelBuilder dengan Get Count dan If Value Is; Map Series; jumlah titik dihitung lebih dulu dengan Spatial Join; ekspor lewat skrip ArcPy.
- [ArcMap] ModelBuilder dengan Get Count dan Calculate Value; Data Driven Pages dengan tag dynamic text; ekspor lewat skrip ArcPy Python 2.7.
#Latihan
- Buat model sederhana dengan percabangan: bila jumlah titik panas 0, hentikan proses.
- Buat atlas untuk 3 KPH contoh dan ekspor menjadi PDF.
- Ubah ekspresi nama berkas keluaran agar memuat tanggal hari ini, misalnya dengan format_date(now(), 'yyyy-MM-dd'). [CEK]
- [ArcGIS Pro / ArcMap] Buat Map Series atau Data Driven Pages untuk 3 KPH contoh, lalu jalankan skrip ekspor dan periksa nama berkas PDF.
#Jika terjadi masalah
- Label menampilkan 0 titik padahal ada titik api: periksa bahwa nama layer persis Hotspot_Nasional dan kedua layer memakai CRS yang sama.
- PDF hanya berisi satu halaman: Atlas belum diaktifkan atau Coverage Layer belum dipilih.
- [ArcGIS Pro / ArcMap] Join_Count bernilai 0 padahal ada titik api: periksa bahwa kedua layer memakai CRS yang sama dan opsi kecocokan Spatial Join adalah INTERSECT. [CEK]
- [ArcGIS Pro / ArcMap] Skrip ekspor gagal: pastikan layout atau Data Driven Pages sudah aktif dan nama field indeks sesuai.
- [ArcMap] Intersect tidak dapat dijalankan penuh: lisensi Basic dan Standard membatasinya.
#Tabel Perbandingan Bab 6: QGIS, ArcGIS Pro, dan ArcMap 10.8
Kolom Status menjelaskan seberapa pasti padanan itu. Terbukti: dokumentasi resmi sudah dibaca penulis. Kemungkinan: berdasarkan informasi umum. [CEK]: perlu dicoba di perangkat lunaknya.
| Langkah | QGIS | ArcGIS Pro | ArcMap 10.8 | Status |
|---|---|---|---|---|
| 6.1 Alat model | Graphical Modeler | ModelBuilder | ModelBuilder | Terbukti ada di Pro dan ArcMap |
| 6.1 Percabangan | Conditional Branch | Get Count + If Value Is + precondition | Get Count + Calculate Value (Boolean) + precondition | Terbukti: Pro (If Value Is hanya di ModelBuilder); ArcMap: tanpa If Value Is [CEK] |
| 6.1 Overlay | Intersection | Intersect (Basic/Standard: maks. dua masukan) | Intersect (terbatas di Basic/Standard) | Terbukti ada |
| 6.2 Laporan per fitur | Print Layout > Atlas | Layout > Map Series | Data Driven Pages | Terbukti dari panduan migrasi Esri; letak menu [CEK] |
| 6.3 Teks dinamis | Ekspresi dengan aggregate() | Dynamic Text dari atribut indeks (Join_Count dihitung dulu) | Tag <dyn type="page" property="attribute" field="..."/> | ArcMap: terbukti dari dokumentasi; Pro: kemungkinan [CEK] |
| 6.4 Ekspor massal | Export Atlas as PDF | Dialog ekspor + skrip MapSeries | Export Map + skrip DataDrivenPages | Terbukti: properti kelas ada; skrip perlu Anda coba [CEK] |
