Lewati ke isi
Profil penulisSeri Buku GIS Kehutanan dan Pertanian/ B2
Tampilkan bagian untuk:

BAB 2: Pilih yang Anda Butuhkan: Query dan Seleksi

#Studi kasus: "Hanya jati yang tua, tolong"

Kepala Seksi ingin daftar petak jati yang ditanam sebelum 2010. Ia juga ingin tahu plot ukur mana yang sehat dan berdiameter besar. Menyisir 16 baris dengan mata memang bisa, tetapi lambat dan mudah keliru. Bayangkan bila petaknya 1.600. Bab ini mengajarkan cara menyuruh GIS memilih objek berdasarkan syarat.

#Konsep: query dan seleksi dalam tiga kalimat

Seleksi adalah menandai objek yang Anda butuhkan, seperti memberi stabilo pada baris tertentu di daftar. Query (ekspresi) adalah kalimat syarat yang dibaca GIS untuk memutuskan baris mana yang distabilo, misalnya "jenis sama dengan Jati dan tahun tanam kurang dari 2010". Hasil seleksi bisa Anda hitung, simpan sendiri, atau pakai sebagai bahan alat berikutnya.

Istilah baru bab ini:

  • Seleksi: menandai objek terpilih tanpa mengubah datanya.
  • Query/ekspresi: kalimat syarat yang dievaluasi untuk tiap baris.
  • Operator logika: kata penghubung syarat (AND, OR, NOT).
  • Filter: menyembunyikan objek yang tidak memenuhi syarat.
  • Seleksi menurut lokasi: memilih objek berdasarkan letaknya terhadap objek lain.
Ilustrasi 2.1: Tiga ekspresi dan hasil seleksinya
Skema: tiga peta empat kali empat petak, tiap peta menunjukkan petak terpilih untuk satu ekspresi

#Cara menulis syarat

Tiga aturan menghemat banyak galat:

  1. Nama field ditulis dengan tanda kutip ganda: "JENIS".
  2. Nilai teks ditulis dengan tanda kutip tunggal: 'Jati'.
  3. Angka ditulis tanpa tanda kutip: 2010.

Beberapa pola yang akan Anda pakai:

MaksudEkspresi
Sama dengan"JENIS" = 'Jati'
Tidak sama dengan"JENIS" <> 'Jati'
Lebih kecil"TAHUN_TANAM" < 2010
Salah satu dari"JENIS" IN ('Jati','Mahoni')
Diawali huruf tertentu"JENIS" LIKE 'S%'
Kedua syarat benar"JENIS" = 'Jati' AND "TAHUN_TANAM" < 2010
Salah satu syarat benar"JENIS" = 'Jati' OR "STATUS" = 'Lindung'
Isi kosong"CATATAN" IS NULL

Tanda % pada LIKE berarti "huruf apa saja". LIKE membedakan huruf besar dan kecil. Bila tidak ingin dibedakan, pakai ILIKE. NULL berarti sel kosong. Untuk memeriksanya, pakai IS NULL, bukan = NULL.

#Angka dari data latihan

Hasil di bawah diuji dengan skrip 2.1 di QGIS 4.0.2.

SyaratPetak terpilih
"JENIS" = 'Jati' AND "TAHUN_TANAM" < 20104 petak: P-01, P-02, P-05, P-13
"STATUS" = 'Produksi' AND "JENIS" <> 'Jati'8 petak
"JENIS" LIKE 'S%' OR "STATUS" = 'Lindung'6 petak: P-04, P-06, P-07, P-11, P-13, P-15
Balikkan seleksi baris di atas10 petak

Pada lapisan Titik_Plot (24 titik): 22 titik berada di dalam petak dan 2 di luar (PL-23 dan PL-24). Dari 22 titik itu, 5 plot berstatus Sehat dengan diameter 30 cm ke atas.

Ilustrasi 2.2: Seleksi titik menurut lokasi
Skema: lima titik merah berada di dalam poligon petak, dua titik abu-abu di luar

#Bagian A: QGIS

#Bagian A: Memilih objek di QGIS

#Seleksi dengan ekspresi

  1. Tambahkan Petak_KPH.gpkg (layer Petak) dan Titik_Plot.gpkg. Klik layer Petak.
  2. Buka Select Features by Expression (menu Edit ► Select ► Select Features by Expression…, atau Ctrl+F3) [CEK: letak menu]. Tombol yang sama ada di tabel atribut.
  3. Ketik ekspresi di kotak atas:
ekspresi
"JENIS" = 'Jati' AND "TAHUN_TANAM" < 2010
  1. Klik Select Features, lalu Close. Peta menyalakan empat petak. Pada bar bawah tabel atribut tertulis jumlah terpilih: 4.
  2. Buka tabel atribut (F6). Klik Show Selected Features di kiri bawah tabel agar hanya baris terpilih yang tampil. Anda melihat P-01, P-02, P-05, P-13.
  3. Untuk menggabungkan syarat baru dengan seleksi lama, pilih menu kecil di sebelah tombol Select Features: Select Features, Add to Current Selection, Remove from Current Selection, atau Select Within Selection. Contoh: setelah langkah 4, pilih Select Within Selection dan ketik "NAMA_KPH" = 'KPH Alpha' untuk mempersempit. [CEK: teks pilihan]
  4. Balikkan seleksi dengan Ctrl+R (Invert selection). Lepas dengan Ctrl+Shift+A.

#Seleksi dengan nilai (tanpa menulis ekspresi)

Bila syaratnya sederhana, buka Select Features by Value di tabel atribut atau toolbar [CEK: letak tombol]. Isi nilai pada field yang diinginkan, lalu pilih. Cara ini cepat untuk pencarian sederhana. Untuk syarat berlapis, ekspresi lebih fleksibel.

#Memfilter layer

Seleksi hanya menandai. Filter benar-benar menyembunyikan objek lain.

  1. Klik kanan layer Petak, lalu pilih Filter…. Jendela Query Builder terbuka. [CEK: nama menu]
  2. Ketik "JENIS" = 'Jati', lalu klik OK.
  3. Layer kini hanya menampilkan 5 petak jati, baik di peta maupun di tabel. Ikon corong muncul di samping nama layer.
  4. Untuk melepas filter, buka lagi Filter…, kosongkan kotak, klik OK. Layer kembali ke 16 petak.

#Seleksi menurut lokasi

  1. Buka Processing ► Toolbox, ketik Select by location, lalu klik dua kali alat itu.
  2. Select features from: Titik_Plot. Where the features (predikat geometri): centang are within. By comparing to the features from: Petak. Modify current selection by: creating new selection. Klik Run.
  3. Peta menyalakan 22 titik. Dua titik di luar area tidak ikut. Jumlah terpilih terlihat di tabel atribut Titik_Plot: 22 dari 24.
  4. Persempit dengan ekspresi: buka Select Features by Expression di layer Titik_Plot, ketik berikut, lalu pilih Select Within Selection.
ekspresi
"KONDISI" = 'Sehat' AND "DIAMETER_CM" >= 30
  1. Hasilnya 5 plot: sehat, berdiameter 30 cm ke atas, dan berada di dalam petak.

#Menyimpan hasil seleksi

Klik kanan layer, pilih Export ► Save Selected Features As… [CEK: letak menu]. Pilih format GeoPackage, beri nama berkas, centang Save only selected features, lalu OK. Anda mendapat layer baru berisi hanya objek terpilih.

#Pilihan: seleksi lewat Python

Skrip 2.1 (skrip/b2_02_seleksi.py) mengulang semua langkah di atas.

python
petak.selectByExpression("\"JENIS\" = 'Jati' AND \"TAHUN_TANAM\" < 2010")
print(petak.selectedFeatureCount())          # 4

processing.run("native:selectbylocation",
    {"INPUT": plot, "PREDICATE": [6], "INTERSECT": petak, "METHOD": 0})   # 6 = are within
print(plot.selectedFeatureCount())           # 22

Hasil uji: 4, 8, 6, 10, lalu 22 dan 5, sesuai tabel di atas. Setelah filter Jati, layer menampilkan 5 baris.

#Bagian B: ArcGIS Pro

#Bagian B: ArcGIS Pro

  1. Pilih layer Petak. Pada tab Map, grup Selection, klik Select By Attributes. [CEK: letak tombol]
  2. Atur Input Rows ke Petak. Buat syarat dengan tombol pilihan field, operator, dan nilai, atau tulis dalam mode SQL: JENIS = 'Jati' AND TAHUN_TANAM < 2010. Perhatikan: SQL di sini menulis nama field tanpa tanda kutip ganda. [CEK]
  3. Klik OK. Petak terpilih menyala. Jumlahnya tampil di tabel atribut.
  4. Untuk filter, klik kanan layer ► Properties ► tab Definition Query, lalu buat syarat yang sama. [CEK]
  5. Untuk seleksi menurut lokasi, pakai Select By Location di grup yang sama. Isi layer masukan Titik_Plot, hubungan Within atau Completely within, dan layer pembanding Petak. [CEK: nama hubungan]

#Bagian C: ArcMap 10.8

#Bagian C: ArcMap 10.8

  1. Menu Selection ► Select By Attributes…. Pilih layer Petak, lalu bentuk syarat dengan klik pada daftar field dan operator. Contoh: "JENIS" = 'Jati' AND "TAHUN_TANAM" < 2010 (untuk geodatabase file atau Shapefile, nama field memakai tanda kutip ganda). [CEK]
  2. Klik Apply. Petak terpilih menyala.
  3. Untuk filter, klik kanan layer ► Properties ► tab Definition Query. [CEK]
  4. Menu Selection ► Select By Location… untuk seleksi menurut lokasi. [CEK]

#Cek paham

  1. Mengapa 'Jati' memakai kutip tunggal, sedangkan "JENIS" kutip ganda?
  2. Apa beda seleksi dan filter?
  3. Bagaimana memilih petak yang kolom CATATAN-nya kosong?

Jawaban:

  1. Kutip tunggal menandai nilai teks. Kutip ganda menandai nama field. Tertukar akan membuat ekspresi galat atau salah arti.
  2. Seleksi menandai objek tetapi semua objek tetap tampil. Filter menyembunyikan objek yang tidak memenuhi syarat.
  3. Dengan "CATATAN" IS NULL. Jangan memakai = NULL, karena hasilnya selalu kosong.

#Kesalahan umum

  • Kutip tertukar. "Jati" dibaca sebagai nama field, bukan nilai. Gunakan 'Jati'.
  • Salah huruf besar atau kecil. LIKE 'jati' tidak menemukan Jati. Pakai ILIKE atau samakan hurufnya.
  • Lupa tanda kurung pada gabungan `AND` dan `OR`. A OR B AND C dibaca A OR (B AND C). Beri kurung sesuai maksud: (A OR B) AND C. Pada data latihan, Sengon atau Akasia berstatus Produksi memberi 5 petak bila dikurung, tetapi 7 petak bila lupa dikurung.
  • Mengira seleksi ikut tersimpan. Seleksi hilang saat proyek ditutup. Ekspor hasilnya.
  • Lupa melepas seleksi lama. Alat berikutnya hanya bekerja pada objek terpilih. Lepas dengan Ctrl+Shift+A.

#Ringkasan dan latihan

Ringkasan: seleksi menandai, filter menyembunyikan. Syarat ditulis sebagai ekspresi dengan AND, OR, NOT. Pilih objek menurut letaknya dengan Select by location. Simpan hasil dengan mengekspor objek terpilih.

Latihan: tuliskan ekspresi untuk "petak Sengon atau Akasia yang statusnya Produksi". Berapa petak yang terpilih? (Petunjuk: ("JENIS" = 'Sengon' OR "JENIS" = 'Akasia') AND "STATUS" = 'Produksi'. Jawaban: 5 petak, yaitu P-04, P-07, P-08, P-12, P-16. Perhatikan P-11 dan P-15 berstatus Rehabilitasi, jadi tidak ikut.)

#Tabel perbandingan: seleksi dan filter

TugasQGISArcGIS ProArcMap 10.8
Seleksi dengan syaratSelect Features by ExpressionSelect By AttributesSelection ► Select By Attributes
Seleksi menurut lokasiAlat Select by locationSelect By LocationSelection ► Select By Location
Menyembunyikan objekFilter… (Query Builder)Definition QueryDefinition Query
Menyimpan hasilExport ► Save Selected Features AsExport Features [CEK]Data ► Export Data [CEK]
Membalik seleksiCtrl+RSwitch Selection [CEK]Selection ► Switch Selection [CEK]