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

BAB 6: Periksa Dulu Sebelum Dipercaya: Kualitas Data

#Studi kasus: "Angka finalnya berapa?"

Tim pulang membawa 61 titik survei. Kepala Seksi ingin angka final untuk rapat. Sebelum menghitung, Anda memeriksa data. Hasilnya mengejutkan: hanya 44 dari 61 baris yang lolos semua pemeriksaan. Ada kondisi yang kosong, tinggi pohon 250 m, tiga titik yang jatuh di luar petak, dan satu nomor survei yang muncul dua kali.

Menghitung dari data mentah itu sama saja dengan menyajikan angka yang keliru. Bab ini mengajarkan cara memeriksa data yang masuk, seperti petugas gudang yang memeriksa barang datang sebelum dimasukkan ke rak.

#Konsep: kualitas data dalam tiga kalimat

Kualitas data adalah seberapa layak data dipakai untuk tujuannya. Anda memeriksanya dengan aturan yang tegas, seperti daftar periksa barang masuk: ada yang kosong, ada yang di luar rentang, ada yang ganda, ada yang letaknya aneh. Aturan yang ditulis sekali dapat dijalankan setiap kali data baru datang.

Istilah baru bagian ini:

  • Kualitas data: kelayakan data untuk tujuannya.
  • Kelengkapan: apakah isian yang wajib sudah terisi.
  • Keabsahan: apakah nilainya ada di daftar atau rentang yang sah.
  • Konsistensi: apakah bagian-bagian data saling cocok, misalnya label petak dan letak titik.
  • Keunikan: apakah ada baris ganda.

#Enam pemeriksaan dan temuannya

Tabel berikut memakai Survei_Lapangan.gpkg. Jumlah temuan dihitung oleh skrip I3.6 dan I3.8, dan cocok dengan hasil_diharapkan.json. [terbukti: QGIS 4.0.2]

PemeriksaanPertanyaanAturanTemuan
KelengkapanApakah kondisi terisi?Kondisi tidak kosong2 baris (SV-031, SV-040)
Keabsahan nilaiApakah ejaan baku?Kondisi ada di daftar baku3 baris (SV-005, SV-012, SV-020)
Keabsahan rentangApakah tinggi wajar?Tinggi_Phn antara 0 dan 602 baris (SV-007, SV-033)
KeunikanAdakah ID atau koordinat kembar?ID_Survei unik1 ID ganda (SV-049, 2 baris); 4 baris berkoordinat kembar
KonsistensiApakah label petak cocok dengan letak?Titik berada di petak yang tertulis2 baris (SV-010, SV-025)
LetakApakah titik di dalam batas?Titik berada di salah satu petak3 baris (SV-059, SV-060, SV-061)

Dua pemeriksaan tambahan memakai batas yang Anda tetapkan sendiri: akurasi GNSS lebih dari 5 m (2 baris: SV-015, SV-044) dan tanggal di luar periode survei 1 sampai 12 September 2026 (1 baris: SV-050).

Ilustrasi 6.1: Temuan mutu
Skema batang: jumlah baris bermasalah untuk tiap aturan dalam data survei latihan

#Aturan sebagai ekspresi

Setiap aturan di tabel bisa ditulis sebagai ekspresi untuk Select by Expression. Skrip I3.8 menghitung semuanya dan mencocokkan hasilnya.

AturanEkspresiHasil uji
Kondisi kosong"Kondisi" IS NULL2
Kondisi tidak baku"Kondisi" IS NOT NULL AND "Kondisi" NOT IN ('Sehat','Terserang Hama','Tebangan Liar')3
Tinggi di luar rentang"Tinggi_Phn" NOT BETWEEN 0 AND 602
Akurasi buruk"Akurasi_m" > 52
Tanggal di luar periode"Tgl_Survei" NOT BETWEEN to_date('2026-09-01') AND to_date('2026-09-12')1
ID gandacount("ID_Survei", group_by:="ID_Survei") > 12 baris
Di luar semua petakNOT overlay_within('Batas_KPH')3
Label petak tidak cocokoverlay_within('Batas_KPH', "NAMA_KPH")[0] <> "KPH"2

Dua ekspresi terakhir memakai layer Batas_KPH, jadi layer itu harus ada di proyek dengan nama persis seperti itu.

Anda bisa menggabungkan semuanya menjadi satu kolom virtual Status_Mutu yang berisi nama masalah pertama yang ditemukan, atau OK. Pada data latihan, hasilnya:

Status_MutuBaris
OK44
Kondisi tidak baku3
Di luar semua petak3
Tinggi di luar 0-602
Akurasi lebih dari 5 m2
Kondisi kosong2
Label KPH tidak sesuai2
ID ganda2
Tanggal di luar periode1

Jumlahnya 61. Satu baris hanya diberi satu status, yaitu aturan pertama yang terlanggar.

#Memperbaiki dengan aman

  1. Jangan menimpa data mentah. Simpan salinan asli. Perbaikan dilakukan pada salinan kerja.
  2. Perbaiki yang pasti. Ejaan sehat atau Sehat jelas maksudnya Sehat. Setelah perbaikan, Kondisi = 'Sehat' menjangkau 34 baris, bukan 32.
  3. Jangan menebak yang tidak pasti. Tinggi 250 m mungkin salah ketik 25,0, tetapi mungkin juga 2,5. Kembalikan ke surveyor atau tandai.
  4. Titik di luar petak biasanya perlu ukur ulang atau konfirmasi, bukan digeser tangan.
  5. Catat perbaikan: apa yang diubah, oleh siapa, kapan, dan alasannya.
  6. Jalankan lagi seluruh pemeriksaan setelah memperbaiki.

#Bagian A: QGIS

#Bagian A: Memeriksa data di QGIS

  1. Tambahkan Titik_Survei dan Batas_KPH dari Survei_Lapangan.gpkg lewat Layer ► Data Source Manager. Jangan ganti nama layer.
  2. Pilih layer Titik_Survei, lalu buka Select by Expression (Ctrl+F3). Tempel ekspresi pertama dari tabel di atas, lalu klik Select Features. Hasil yang akan terlihat: jumlah terseleksi di bilah status, sama dengan kolom "Hasil uji".
  3. Ulangi untuk tiap aturan. Bila angkanya berbeda, periksa ejaan nama layer dan field.
  4. Buat kolom virtual: buka Field Calculator, centang Create virtual field, beri nama Status_Mutu, tipe Text, dan tempel ekspresi di bawah. Hasil yang akan terlihat: kolom baru di tabel atribut. Saring baris yang bukan OK untuk melihat daftar kerjanya.
EKSPRESI
CASE
  WHEN "Kondisi" IS NULL THEN 'Kondisi kosong'
  WHEN "Kondisi" NOT IN ('Sehat','Terserang Hama','Tebangan Liar') THEN 'Kondisi tidak baku'
  WHEN "Tinggi_Phn" NOT BETWEEN 0 AND 60 THEN 'Tinggi di luar 0-60'
  WHEN "Akurasi_m" > 5 THEN 'Akurasi lebih dari 5 m'
  WHEN "Tgl_Survei" NOT BETWEEN to_date('2026-09-01') AND to_date('2026-09-12') THEN 'Tanggal di luar periode'
  WHEN count("ID_Survei", group_by:="ID_Survei") > 1 THEN 'ID ganda'
  WHEN NOT overlay_within('Batas_KPH') THEN 'Di luar semua petak'
  WHEN overlay_within('Batas_KPH', "NAMA_KPH")[0] <> "KPH" THEN 'Label KPH tidak sesuai'
  ELSE 'OK'
END
  1. Sebagai alternatif, jalankan skrip I3.6 (Python Console) yang hanya membaca data dan mencetak daftar ID bermasalah. Hasil uji (QGIS 4.0.2):
HASIL
Jumlah baris diperiksa: 61
Kondisi kosong                    2  SV-031, SV-040
Kondisi tidak baku                3  SV-005, SV-012, SV-020
Tinggi di luar rentang            2  SV-007, SV-033
Tanggal di luar periode           1  SV-050
Akurasi lebih dari 5 m            2  SV-015, SV-044
ID ganda                          1  SV-049
Koordinat kembar                  4  SV-049, SV-049, SV-051, SV-058
Di luar semua petak               3  SV-059, SV-060, SV-061
Label KPH tidak sesuai letak      2  SV-010, SV-025
  1. Perbaiki ejaan pada salinan layer. Buka Field Calculator, perbarui field yang ada Kondisi, dengan ekspresi berikut. Hasil yang akan terlihat: Sehat untuk dua baris yang tadinya sehat dan Sehat .
EKSPRESI
CASE
  WHEN lower(trim("Kondisi")) = 'sehat' THEN 'Sehat'
  WHEN lower(trim("Kondisi")) = 'terserang hama' THEN 'Terserang Hama'
  WHEN lower(trim("Kondisi")) = 'tebangan liar' THEN 'Tebangan Liar'
  ELSE "Kondisi"
END
  1. Jalankan lagi pemeriksaan. Baris Kondisi tidak baku seharusnya menjadi 0.

#Bagian B: ArcGIS Pro

#Bagian B: ArcGIS Pro

Alat berikut ada di Pro. Cocokkan dengan versi Anda. [CEK]

  1. Select Layer By Attribute dengan klausa SQL, misalnya Kondisi IS NULL OR Kondisi NOT IN ('Sehat', 'Terserang Hama', 'Tebangan Liar'). Perhatikan bahwa pola IS NULL tetap perlu, seperti di QGIS.
  2. Frequency (Analysis ► Statistics) pada field Kondisi untuk menghitung tiap nilai. Ini mirip dengan GROUP BY di Bab 7.
  3. Find Identical pada ID_Survei untuk menemukan baris ganda.
  4. Select Layer By Location dengan hubungan Within terhadap Batas_KPH, lalu balikkan seleksi (Switch Selection) untuk menemukan titik di luar petak.
  5. Aturan yang berjalan terus di dalam geodatabase memakai Attribute Rules, yang tidak dikenali ArcMap. [kemungkinan: dokumentasi Esri]

#Bagian C: ArcMap 10.8

#Bagian C: ArcMap 10.8

  1. Select By Attributes (menu Selection) dengan klausa SQL yang sama seperti Pro. [CEK]
  2. Frequency dan Find Identical dari ArcToolbox. Ketersediaan lisensi untuk Find Identical belum diperiksa. [CEK]
  3. Select By Location dengan hubungan Are within, lalu balikkan seleksi. [CEK]

Tidak ada padanan: ArcMap tidak punya Attribute Rules. Pemeriksaan harus dijalankan secara berkala lewat skrip atau alat di atas. [kemungkinan]

#Cek paham

  1. Mengapa "Kondisi" NOT IN (...) saja tidak cukup untuk menemukan semua nilai tidak sah?
  2. Apa beda keabsahan dan konsistensi?
  3. Mengapa perbaikan sebaiknya dilakukan pada salinan, bukan data mentah?

Jawaban:

  1. Karena baris yang berisi NULL tidak ikut terpilih oleh NOT IN. Perlu pemeriksaan IS NULL tersendiri.
  2. Keabsahan menilai satu nilai terhadap daftar atau rentang. Konsistensi menilai kecocokan antar bagian data, seperti label petak dan letak titik.
  3. Agar Anda selalu bisa kembali ke data asli, dan perubahan dapat ditelusuri.

#Kesalahan umum

  • Menghitung dulu, memeriksa kemudian. Periksa dulu, hitung belakangan.
  • Menebak nilai yang meragukan. Tandai dan tanyakan ke surveyor.
  • Melupakan NULL. Kosong berperilaku khusus dalam perbandingan.
  • Memeriksa hanya sekali. Jalankan pemeriksaan tiap kali ada data baru.
  • Tidak mencatat perbaikan. Tanpa catatan, orang lain tidak tahu apa yang berubah.

#Ringkasan dan latihan

Ringkasan: periksa kelengkapan, keabsahan, keunikan, konsistensi, letak, akurasi, dan tanggal. Tulis aturan sebagai ekspresi agar bisa diulang. Waspadai NULL. Perbaiki pada salinan, hanya yang pasti, dan catat.

Latihan: tambahkan satu aturan baru ke Status_Mutu: diameter batang di luar 5 sampai 100 cm. Jalankan, lalu catat jumlah temuannya. Dalam data latihan, seharusnya tidak ada yang melanggar aturan ini. Mengapa tetap berguna menambahkannya?

Jawaban yang diharapkan: temuan 0 berarti data lolos, dan aturan itu siap menangkap data baru yang bermasalah.

#Tabel perbandingan: memeriksa kualitas data

TugasQGISArcGIS ProArcMap 10.8
Cari nilai kosong atau salahSelect by ExpressionSelect Layer By AttributeSelect By Attributes
Hitung per nilaiStatistik atau SQL (Bab 7)FrequencyFrequency
Cari baris gandacount(...group_by) atau SQLFind IdenticalFind Identical [CEK]
Titik di luar petakoverlay_withinSelect Layer By Location (Within) lalu balikkanSelect By Location lalu balikkan
Aturan yang berjalan terusConstraint di formulir, triggerAttribute RulesTidak ada padanan