BAB 5: Menghubungkan Data dari Lokasinya: Spatial Join dan Seleksi
#Studi kasus: "Titik panas itu milik petak yang mana?"
Daftar titik panas hanya berisi kode HS-001 sampai HS-012 dan koordinatnya. Kepala Seksi ingin tahu petak mana yang memuat tiap titik, jenis tanamannya apa, dan berapa titik per KPH. Daftar itu tidak punya kolom nama petak. Tetapi lokasinya ada. Dari lokasi, Anda bisa menghubungkan titik ke petak. Itulah spatial join.
#Konsep: spatial join dalam tiga kalimat
Spatial join menyalin atribut dari satu layer ke layer lain berdasarkan hubungan letak, bukan berdasarkan kolom yang sama. Bayangkan menempelkan label nama petak pada tiap titik, dengan aturan: "tempel label dari petak tempat titik itu berdiri". Bedanya dengan join tabel di Seri B2: di sana pencocokannya lewat nilai kolom, di sini lewat letak.
Istilah baru bab ini:
- Spatial join: join atribut menurut hubungan letak.
- Predikat geometri: aturan hubungan letak, misalnya intersect (beririsan) atau are within (berada di dalam).
- Satu-ke-banyak: satu objek bisa mendapat beberapa baris hasil bila cocok dengan beberapa objek.
- Seleksi berdasarkan lokasi (select by location): memilih objek karena letaknya terhadap layer lain.

Predikat adalah jantung bab ini. Dua yang paling sering dipakai:
- Intersect: cocok bila ada sentuhan sekecil apa pun, termasuk sisi yang hanya bersinggungan.
- Are within: cocok bila objek pertama berada sepenuhnya di dalam objek kedua.
#Bagian A: QGIS
#Bagian A: Spatial join di QGIS
Menyiapkan data. Tambahkan Batas_KPH.gpkg, Hotspot_Nasional.gpkg, Petak.gpkg, dan Jalan.gpkg.
1. Petak ke KPH: lihat jebakan predikat.
- Pilih Vector ► Data Management Tools ► Join Attributes by Location…
- Join to features in =
Petak. By comparing to =Batas_KPH. - Pada Features they (geometric predicate), centang intersect. Pada Fields to add, pilih hanya
NAMA_KPH. - Pada Join type, pilih Create separate feature for each matching feature (one-to-many). Klik Run.
- Buka tabel atribut hasilnya. Jumlah baris 30, padahal petak hanya 16.
Penyebabnya: petak yang berada di tepi KPH menyentuh KPH tetangganya. Dengan intersect, mereka cocok dengan dua KPH, sehingga muncul dua baris.
- Ulangi, tetapi di Features they hapus intersect dan centang are within. Hasilnya 16 baris, tepat satu per petak.
- Untuk hasil akhir, ganti Join type menjadi Take attributes of the first matching feature only (one-to-one). Beri nama
Petak_KPH. Isinya: KPH Alpha 4 petak, KPH Beta 4 petak, KPH Gamma 8 petak.
2. Titik panas ke petak: hitung per petak.
- Pilih Vector ► Analysis Tools ► Count Points in Polygon…
- Polygons =
Petak_KPH. Points =Hotspot_Nasional. Pada Count field name, ketikJML_TITIK. Klik Run. - Buka tabel atributnya. Dari 16 petak, 10 petak berisi titik. P07 berisi 3 titik, sembilan petak lain masing-masing 1 titik. Jumlahnya 12, sama dengan jumlah titik panas.
- Rekap per KPH (jumlahkan
JML_TITIKmenurutNAMA_KPH, misalnya dengan Statistics by categories dari Bab 4): KPH Alpha 2, KPH Beta 5, KPH Gamma 5.

3. Ringkasan lewat join: kebalikan arah.
- Cari Join attributes by location (summary) di Processing Toolbox. Join to features in =
Petak. By comparing to =Hotspot_Nasional. Pada Where the features, pilih intersect. Pada Fields to summarise, pilihID_Titik. Pada Summaries to calculate, pilih count. Klik Run. - Hasilnya kolom baru
ID_Titik_count. Jumlahnya sama: 12 titik. Alat ini lebih fleksibel daripada Count Points in Polygon karena bisa menghitung jumlah, rata-rata, dan statistik lain dari field titik.
4. Titik ke petak: ambil nama jenis.
- Jalankan Join Attributes by Location… dengan Join to features in =
Hotspot_Nasional, By comparing to =Petak, predikat are within, Fields to add =KODE_PETAKdanJENIS, Join type one-to-one. - Hasilnya: tiap titik punya kode petak dan jenis. Contoh: HS-004, HS-006, dan HS-011 semuanya di petak P07 (Sengon).
5. Seleksi berdasarkan lokasi.
Kadang Anda tidak butuh layer baru. Anda hanya ingin menandai petak tertentu.
- Pilih Vector ► Research Tools ► Select by Location…
- Select features from =
Petak. Where the features (geometric predicate) = intersect. By comparing to the features from =Hotspot_Nasional. Modify current selection by = creating new selection. - Klik Run. Sepuluh petak menyala kuning di peta: P03, P05, P06, P07, P08, P10, P11, P12, P13, dan P14. Jumlah terpilih tampil di bilah status.
Hasilnya: petak yang memuat titik panas terpilih. Untuk menyimpannya sebagai layer, klik kanan Petak ► Export ► Save Selected Features As… Atau pakai alat Extract by location, yang langsung membuat layer baru.
Seleksi bisa dipadukan. Pilihan Modify current selection by menyediakan adding to, selecting within current selection, dan removing from. Contoh: pilih petak yang memuat titik panas, lalu pilih selecting within current selection terhadap Sempadan_Sungai untuk menyisakan petak yang memuat titik panas dan kena sempadan.
Ada pula alat Select within distance (Processing Toolbox) bila Anda ingin memilih berdasarkan jarak, tanpa membuat buffer dulu.
6. Layer terdekat.
- Cari Join attributes by nearest. Input layer =
Hotspot_Nasional. Input layer 2 =Jalan. Layer 2 fields to copy =NAMA. Maximum nearest neighbors = 1. Klik Run. - Hasilnya kolom
NAMA(jalan terdekat) dandistance(jarak dalam meter). Titik terdekat ke jalan: HS-002, 12,1 m dari Jalan Inspeksi. Terjauh: HS-001, 225,2 m dari Jalan Inspeksi.
#Bagian B: ArcGIS Pro
#Bagian B: ArcGIS Pro
- Spatial Join ada di Analysis Tools ► Overlay. Target Features =
Petak, Join Features =Batas_KPH. [CEK] - Join Operation: Join one to one (satu baris per target, bawaan) atau Join one to many. Match Option: pilih Completely within atau Within untuk padanan are within, Intersect untuk intersect. Match Option juga menawarkan Largest overlap dan Closest. [CEK: nama persis opsi di versi Anda]
- Hasil Spatial Join otomatis menambah field Join_Count dan TARGET_FID. Pada Join one to many, juga JOIN_FID.
- Untuk menghitung titik per petak, pakai Summarize Within (Analysis Tools ► Statistics) atau Spatial Join dengan petak sebagai target dan titik sebagai join feature (Join_Count berisi jumlah titik). [CEK]
- Select By Location: tab Map ► Select By Location, atau alat di Data Management Tools ► Layers and Table Views. Pilih Input Feature Layer, Relationship (misalnya Intersect), Selecting Features, dan Selection type (New selection, Add to the current selection, dan seterusnya). [CEK]
- Near atau Generate Near Table (Analysis Tools ► Proximity) memberi jarak ke jalan terdekat. [CEK]
#Bagian C: ArcMap 10.8
#Bagian C: ArcMap 10.8
- Spatial Join ada di ArcToolbox ► Analysis Tools ► Overlay. Target Features =
Petak, Join Features =Batas_KPH. [CEK] - Join Operation: JOIN_ONE_TO_ONE atau JOIN_ONE_TO_MANY. Match Option: INTERSECT, WITHIN, COMPLETELY_WITHIN, CLOSEST, dan lainnya. [CEK]
- Select By Location ada di menu Selection ► Select By Location… Pilih Selection method, Target layer(s), Source layer, dan Spatial selection method (misalnya intersect). [CEK]
- Near (Analysis Tools ► Proximity) menambah jarak ke objek terdekat. [CEK]
- Rekap titik per petak: pakai Spatial Join, lalu baca Join_Count. [CEK]
#Cek paham
- Apa beda spatial join dengan join tabel biasa?
- Mengapa join dengan predikat intersect menghasilkan 30 baris, bukan 16?
- Kapan Anda memilih "select by location" dan kapan "join by location"?
Jawaban:
- Spatial join mencocokkan lewat letak. Join tabel mencocokkan lewat nilai kolom yang sama.
- Petak di tepi KPH menyentuh KPH tetangga. Intersect menganggap sentuhan sebagai cocok, sehingga petak itu muncul dua kali.
- Select by location bila hanya perlu menandai atau menyaring objek. Join by location bila perlu membawa atribut dari layer lain ke tabel.
#Kesalahan umum
- Memakai intersect untuk "berada di dalam". Objek tepi ikut dua kali. Pakai are within, atau pilih join satu-ke-satu.
- Lupa memilih join satu-ke-satu. Jumlah baris bertambah dan jumlah luas membengkak. Selalu cocokkan jumlah baris hasil dengan jumlah objek awal.
- Dua layer beda CRS. QGIS umumnya menyesuaikan sendiri, tetapi sebaiknya samakan CRS dulu. Hasil di tepi bisa meleset beberapa sentimeter. [kemungkinan]
- Lupa menghapus seleksi. Alat berikutnya dengan "Selected features only" hanya memproses yang terpilih. Hapus seleksi dengan Edit ► Select ► Deselect from All Layers atau tombol Deselect All (Ctrl+Alt+A). [CEK: pintasan]
#Ringkasan dan latihan
Ringkasan: spatial join menyalin atribut menurut letak. Predikat menentukan arti "cocok": intersect memasukkan sentuhan, are within hanya yang sepenuhnya di dalam. Selalu cek jumlah baris hasil. Select by location menandai objek tanpa membuat layer baru.
Latihan: hitung berapa titik panas yang jatuh di tiap jenis tanaman. Gabungkan titik ke petak (langkah 14), lalu hitung titik per JENIS dengan Statistics by categories. Hasil uji: Jati 4 titik (HS-001, HS-003, HS-005, HS-010), Sengon 4 titik (HS-004, HS-006, HS-007, HS-011), Mahoni 2 titik, Pinus 2 titik. Jumlahnya 12.
#Tabel perbandingan: spatial join dan seleksi
| Tugas | QGIS | ArcGIS Pro | ArcMap 10.8 |
|---|---|---|---|
| Join menurut letak | Join Attributes by Location | Spatial Join | Spatial Join |
| Satu atau banyak | Join type (one-to-one atau one-to-many) | Join Operation | Join Operation |
| Hitung titik per poligon | Count Points in Polygon | Summarize Within | Spatial Join (Join_Count) |
| Seleksi menurut letak | Select by Location | Select By Location | Select By Location |
| Objek terdekat | Join attributes by nearest | Generate Near Table | Near |