33 KiB
SPESIFIKASI KEBUTUHAN PERANGKAT LUNAK
(SKPL / Software Requirements Specification)
WebGIS Pemetaan Kemiskinan Berbasis
Partisipasi Rumah Ibadah
(Studi Kasus: Masjid di Kota Pontianak)
Versi 1.0 | Pontianak, 2025
Disusun sebagai pemenuhan tugas mata kuliah
Sistem Informasi Geografis (SIG)
BAB 1 – PENDAHULUAN
1.1 Tujuan Dokumen
Dokumen Spesifikasi Kebutuhan Perangkat Lunak (SKPL) ini mendeskripsikan secara lengkap kebutuhan fungsional dan non-fungsional dari sistem WebGIS Pemetaan Kemiskinan Berbasis Partisipasi Rumah Ibadah. Dokumen ini menjadi acuan bagi pengembang, penguji, dan seluruh pemangku kepentingan dalam proses pengembangan sistem.
1.2 Latar Belakang dan Deskripsi Sistem
Kemiskinan merupakan masalah sosial yang memerlukan penanganan terkoordinasi dan berbasis data. Di tingkat komunitas, rumah ibadah — khususnya masjid — memegang peran sentral sebagai pusat kegiatan sosial masyarakat. Masjid secara aktif mengelola program zakat, infak, sedekah (ZIS), dan berbagai bantuan sosial lainnya. Namun, distribusi bantuan tersebut seringkali tidak optimal karena ketiadaan data spasial mengenai sebaran keluarga miskin di sekitar masjid.
Sistem yang dibangun adalah sebuah WebGIS (Web-based Geographic Information System) yang memungkinkan pemetaan interaktif titik-titik kemiskinan dan lokasi masjid di wilayah Kota Pontianak. Dengan fitur radius layanan masjid yang dapat dikonfigurasi, sistem ini secara visual menunjukkan keluarga miskin mana yang berada dalam jangkauan layanan sosial suatu masjid dan mana yang belum terjangkau, sehingga membantu perencanaan distribusi bantuan yang lebih tepat sasaran.
Sistem ini dibangun menggunakan teknologi Leaflet.js untuk peta interaktif, PHP sebagai backend, dan MySQL sebagai basis data, yang dapat diakses melalui browser web tanpa instalasi khusus.
1.3 Lingkup Masalah
Sistem ini mencakup:
• Pemetaan dan pengelolaan data titik kemiskinan (keluarga miskin) secara spasial.
• Pemetaan dan pengelolaan data masjid sebagai representasi Rumah Ibadah.
• Visualisasi radius jangkauan layanan sosial masjid terhadap sebaran titik kemiskinan.
• Analisis visual untuk mendukung perencanaan distribusi bantuan berbasis lokasi.
Sistem ini TIDAK mencakup:
• Pengelolaan transaksi keuangan, zakat, atau distribusi bantuan secara langsung.
• Integrasi dengan sistem informasi pemerintah (DTKS, BPJS, dsb.) pada versi ini.
• Rumah ibadah selain masjid (gereja, pura, vihara) — merupakan rencana pengembangan lanjutan.
1.4 Definisi, Akronim, dan Istilah
| Istilah / Akronim | Definisi |
|---|---|
| WebGIS | Web-based Geographic Information System – sistem informasi geografis berbasis web browser |
| SKPL / SRS | Spesifikasi Kebutuhan Perangkat Lunak / Software Requirements Specification |
| SIG | Sistem Informasi Geografis |
| Kemiskinan (entitas) | Data spasial yang merepresentasikan lokasi dan atribut keluarga miskin dalam sistem |
| KK | Kepala Keluarga |
| Masjid (entitas) | Data spasial lokasi masjid beserta atribut dan radius layanannya dalam sistem |
| PIC Masjid | Person In Charge – pengurus/penanggung jawab masjid yang terdaftar dalam sistem |
| Radius Layanan | Jangkauan area pelayanan sosial masjid, divisualisasikan sebagai lingkaran pada peta (100–5000 m) |
| Leaflet.js | Library JavaScript open-source untuk peta interaktif berbasis web |
| OSM | OpenStreetMap – penyedia basemap peta dasar bersifat open-source |
| CRUD | Create, Read, Update, Delete – operasi dasar pengelolaan data |
| Marker | Ikon titik pada peta yang merepresentasikan lokasi suatu entitas |
| Mode View | Mode tampil saja (read-only); semua fungsi edit dinonaktifkan |
| Mode Edit | Mode aktif yang memungkinkan operator menambah, menghapus, dan memperbarui data |
| ZIS | Zakat, Infak, Sedekah – program sosial berbasis rumah ibadah |
1.5 Referensi
• Leaflet.js Documentation – https://leafletjs.com/
• OpenStreetMap – https://www.openstreetmap.org/
• IEEE Std 830-1998: IEEE Recommended Practice for Software Requirements Specifications
• Peraturan Presiden No. 15 Tahun 2010 tentang Percepatan Penanggulangan Kemiskinan
• Undang-Undang No. 13 Tahun 2011 tentang Penanganan Fakir Miskin
• BPS – Data Kemiskinan Kota Pontianak
BAB 2 – DESKRIPSI UMUM SISTEM
2.1 Perspektif Produk
WebGIS ini adalah aplikasi perangkat lunak berbasis browser yang berdiri mandiri (standalone). Sistem ini menggantikan proses manual pencatatan dan pemetaan data kemiskinan yang selama ini tidak memiliki komponen spasial. Sistem beroperasi pada arsitektur client-server:
• Client: Browser web modern (Chrome, Firefox, Edge) — tidak memerlukan instalasi tambahan
• Server: PHP (built-in server untuk pengembangan, Apache/Nginx untuk produksi)
• Database: MySQL untuk penyimpanan data atribut dan koordinat
• Basemap: Tile peta OpenStreetMap (memerlukan koneksi internet)
Sistem ini dirancang sebagai alat bantu pengambilan keputusan (Decision Support Tool) bagi:
• Pengurus masjid: untuk mengetahui sebaran keluarga miskin dalam radius layanannya
• Aparat kelurahan/kecamatan: untuk pemetaan kemiskinan di wilayah administratif
• Relawan sosial: untuk perencanaan rute dan target distribusi bantuan
2.2 Fungsi Produk
| No | Fungsi Utama | Deskripsi |
|---|---|---|
| 1 | Pemetaan Kemiskinan | Input, tampil, dan hapus titik lokasi keluarga miskin beserta atribut nama KK, jumlah anggota keluarga, dan alamat |
| 2 | Pemetaan Masjid | Input, tampil, dan hapus data masjid beserta nama PIC dan alamat |
| 3 | Radius Layanan Masjid | Visualisasi lingkaran jangkauan layanan masjid yang dapat dikonfigurasi (100–5000 m) untuk analisis cakupan terhadap titik kemiskinan |
| 4 | Filter Layer | Toggle tampil/sembunyikan layer kemiskinan dan masjid secara independen |
| 5 | Mode View / Edit | Pemisahan mode tampil (publik) dan mode edit (operator) untuk kontrol akses sederhana |
| 6 | Visualisasi Tematik | Simbologi warna berbeda untuk marker kemiskinan (oranye) dan masjid (biru) agar mudah dibedakan |
| 7 | Fokus Lokasi | Klik card di sidebar untuk menavigasi peta ke lokasi entitas terpilih |
2.3 Karakteristik Pengguna
| Tipe Pengguna | Karakteristik | Hak Akses dalam Sistem |
|---|---|---|
| Operator | Pengurus masjid, staf kelurahan, atau relawan yang bertanggung jawab atas kebenaran data. Memiliki kemampuan dasar penggunaan browser dan peta digital. | Mode View + Mode Edit (CRUD penuh: tambah, lihat, hapus, update radius) |
| Masyarakat / Publik | Warga atau pihak yang ingin melihat peta sebaran kemiskinan dan masjid. Tidak perlu login. | Mode View saja (hanya lihat dan navigasi peta) |
Catatan: Versi 1.0 belum mengimplementasikan sistem autentikasi berbasis akun. Pemisahan akses dilakukan melalui mode UI (View/Edit). Implementasi login merupakan kebutuhan pengembangan lanjutan.
2.4 Batasan Sistem
• Belum terdapat sistem autentikasi/login pada versi 1.0.
• Koordinat disimpan sebagai nilai desimal (DECIMAL), bukan tipe spasial MySQL POINT.
• Analisis spasial terbatas pada visualisasi radius buffer — belum ada query "titik dalam radius" secara otomatis.
• Tidak mendukung export data ke format GIS (Shapefile, GeoJSON, KML).
• Hanya mendukung rumah ibadah jenis masjid; rumah ibadah lain merupakan rencana pengembangan.
• Memerlukan koneksi internet untuk memuat tile peta OpenStreetMap.
• Tidak mendukung pengeditan bersamaan oleh banyak pengguna (no concurrent editing).
2.5 Asumsi dan Ketergantungan
• Server menjalankan PHP versi 7.4 atau lebih baru dengan ekstensi mysqli aktif.
• MySQL versi 5.7 atau lebih baru tersedia dan dapat diakses oleh PHP.
• Browser pengguna mendukung ES6, Fetch API, dan Leaflet.js.
• Koordinat menggunakan sistem referensi WGS84 (EPSG:4326).
• Data titik kemiskinan diperoleh dari survei lapangan oleh relawan yang terlatih.
BAB 3 – KEBUTUHAN FUNGSIONAL
Kebutuhan fungsional didefinisikan per modul. Setiap kebutuhan memiliki ID unik, deskripsi, spesifikasi input-proses-output, dan tingkat prioritas.
3.1 Modul Peta Interaktif
KF-01 – Inisialisasi Peta
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-01 |
| Nama | Inisialisasi Peta Interaktif |
| Deskripsi | Sistem menampilkan peta interaktif berbasis Leaflet.js dengan tile basemap OpenStreetMap, terpusat pada koordinat Kota Pontianak. |
| Input | Koordinat pusat default (Pontianak), zoom level awal |
| Proses | Inisialisasi map container Leaflet, muat tile OSM, set viewport awal |
| Output | Peta interaktif tampil di browser; pengguna dapat zoom, pan, dan klik peta |
| Prioritas | Tinggi (Critical) |
KF-02 – Toggle Layer Tematik
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-02 |
| Nama | Manajemen Visibilitas Layer |
| Deskripsi | Pengguna dapat menampilkan atau menyembunyikan layer Kemiskinan dan layer Masjid secara independen melalui kontrol overlay Leaflet dan checkbox di sidebar. |
| Input | Klik checkbox sidebar atau overlay control di pojok peta |
| Proses | Tambah atau hapus layer group dari map object; sinkronisasi state checkbox dengan layer control |
| Output | Layer tampil atau hilang dari peta secara real-time tanpa reload halaman |
| Prioritas | Tinggi |
3.2 Modul Data Kemiskinan
KF-03 – Tambah Data Keluarga Miskin
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-03 |
| Nama | Input Titik Lokasi Keluarga Miskin |
| Deskripsi | Operator menambahkan data keluarga miskin dengan mengklik titik lokasi di peta dan mengisi formulir atribut. Sistem menyimpan data dan menampilkan marker di peta. |
| Input | Nama kepala keluarga (teks), jumlah KK (angka positif), alamat (teks), koordinat latitude/longitude (dari klik peta) |
| Proses | Validasi input tidak kosong → POST ke create_kemiskinan.php → INSERT ke tabel kemiskinan → refresh layer kemiskinan |
| Output | Marker oranye muncul di lokasi yang diklik; card data muncul di sidebar; data tersimpan di database |
| Prioritas | Tinggi |
KF-04 – Lihat Daftar Data Kemiskinan
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-04 |
| Nama | Tampil Semua Data Keluarga Miskin |
| Deskripsi | Sistem memuat seluruh data kemiskinan dari database dan menampilkannya sebagai marker di peta beserta daftar card di sidebar secara otomatis saat halaman dibuka. |
| Input | Request load halaman atau aksi refresh data |
| Proses | GET read_kemiskinan.php → parse JSON response → render marker per record → render sidebar card per record |
| Output | Semua titik kemiskinan tampil sebagai marker oranye di peta; daftar card tampil di sidebar dengan atribut nama KK, jumlah KK, dan alamat |
| Prioritas | Tinggi |
KF-05 – Fokus ke Lokasi Keluarga Miskin
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-05 |
| Nama | Navigasi Peta ke Lokasi Keluarga Miskin |
| Deskripsi | Pengguna mengklik tombol 'Fokus' pada card di sidebar, dan peta secara otomatis berpindah serta memperbesar tampilan ke lokasi keluarga miskin tersebut. |
| Input | Klik tombol Fokus pada card keluarga miskin di sidebar |
| Proses | Ambil nilai latitude/longitude dari data card → panggil map.setView(koordinat, zoom) |
| Output | Peta bergerak dan memperbesar ke koordinat keluarga miskin yang dipilih |
| Prioritas | Sedang |
KF-06 – Hapus Data Keluarga Miskin
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-06 |
| Nama | Hapus Titik Lokasi Keluarga Miskin |
| Deskripsi | Operator (dalam Mode Edit) menghapus data keluarga miskin dari sistem. Tombol hapus hanya aktif dalam Mode Edit. |
| Input | Klik tombol 'Hapus' pada card di sidebar (hanya aktif di Mode Edit) |
| Proses | Konfirmasi penghapusan → POST ke delete_kemiskinan.php dengan id → DELETE dari database → hapus marker dari layer peta → hapus card dari sidebar |
| Output | Marker hilang dari peta, card hilang dari sidebar, data terhapus permanen dari database |
| Prioritas | Tinggi |
3.3 Modul Data Masjid
KF-07 – Tambah Data Masjid
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-07 |
| Nama | Input Lokasi dan Data Masjid |
| Deskripsi | Operator menambahkan data masjid dengan mengklik lokasi di peta dan mengisi formulir. Sistem menampilkan marker masjid beserta lingkaran radius layanannya. |
| Input | Nama masjid (teks), nama PIC/pengurus (teks), alamat (teks), radius layanan awal (integer, default 500 m, range 100–5000), koordinat lat/lng dari klik peta |
| Proses | Validasi input → POST ke create_masjid.php → INSERT ke tabel masjid → render marker biru + L.circle radius di peta → render card di sidebar |
| Output | Marker biru dan lingkaran radius muncul di peta; card masjid muncul di sidebar dengan tombol update radius |
| Prioritas | Tinggi |
KF-08 – Lihat Daftar Data Masjid
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-08 |
| Nama | Tampil Semua Data Masjid dan Radius Layanan |
| Deskripsi | Sistem memuat seluruh data masjid dari database dan menampilkannya sebagai marker biru beserta lingkaran radius layanan di peta, serta daftar card di sidebar. |
| Input | Request load halaman atau aksi refresh data |
| Proses | GET read_masjid.php → parse JSON → render marker biru per masjid → render L.circle sesuai nilai radius → render card sidebar |
| Output | Semua masjid tampil sebagai marker biru; lingkaran radius masing-masing masjid tampil di peta; sidebar menampilkan nama, PIC, alamat, dan nilai radius saat ini |
| Prioritas | Tinggi |
KF-09 – Fokus ke Lokasi Masjid
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-09 |
| Nama | Navigasi Peta ke Lokasi Masjid |
| Deskripsi | Pengguna mengklik tombol 'Fokus' pada card masjid di sidebar untuk menavigasi peta ke lokasi masjid tersebut. |
| Input | Klik tombol Fokus pada card masjid di sidebar |
| Proses | Ambil koordinat masjid → panggil map.setView(koordinat, zoom) |
| Output | Peta bergerak dan memperbesar ke lokasi masjid yang dipilih |
| Prioritas | Sedang |
KF-10 – Perbarui Radius Layanan Masjid
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-10 |
| Nama | Update Radius Jangkauan Layanan Masjid |
| Deskripsi | Operator mengubah nilai radius layanan masjid untuk memperbarui visualisasi lingkaran cakupan di peta. Fitur ini krusial untuk analisis apakah keluarga miskin tertentu berada dalam jangkauan layanan masjid. |
| Input | ID masjid, nilai radius baru (integer, range 100–5000 meter) |
| Proses | Validasi range nilai radius → POST ke update_masjid_radius.php → UPDATE kolom radius di database → re-render L.circle dengan radius baru di peta |
| Output | Lingkaran radius masjid di peta berubah ukuran secara real-time sesuai nilai radius yang diperbarui |
| Prioritas | Tinggi |
KF-11 – Hapus Data Masjid
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-11 |
| Nama | Hapus Data Masjid |
| Deskripsi | Operator (dalam Mode Edit) menghapus data masjid beserta lingkaran radiusnya dari sistem. |
| Input | Klik tombol 'Hapus' pada card masjid di sidebar (hanya aktif di Mode Edit) |
| Proses | Konfirmasi penghapusan → POST ke delete_masjid.php dengan id → DELETE dari database → hapus marker dan lingkaran radius dari peta → hapus card dari sidebar |
| Output | Marker dan lingkaran radius masjid hilang dari peta; card hilang dari sidebar; data terhapus dari database |
| Prioritas | Tinggi |
3.4 Modul Mode Sistem
KF-12 – Mode View (Tampil)
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-12 |
| Nama | Mode View / Tampil |
| Deskripsi | Mode default saat sistem dibuka. Semua kontrol edit (tambah data, hapus, update radius) dinonaktifkan. Pengguna hanya dapat melihat peta, membaca data di sidebar, menggunakan filter layer, dan navigasi fokus lokasi. |
| Input | Klik tombol/toggle 'View Mode' atau kondisi awal sistem |
| Proses | Set state mode = 'view' → disable tombol tambah, hapus, update radius → sembunyikan alat gambar |
| Output | UI dalam keadaan read-only; tombol edit tampak abu-abu/nonaktif |
| Prioritas | Tinggi |
KF-13 – Mode Edit
| Atribut | Deskripsi |
|---|---|
| ID Kebutuhan | KF-13 |
| Nama | Mode Edit |
| Deskripsi | Mode aktif yang memungkinkan operator melakukan operasi CRUD. Semua kontrol input dan hapus diaktifkan. |
| Input | Klik tombol/toggle 'Edit Mode' |
| Proses | Set state mode = 'edit' → enable tombol tambah data, hapus, update radius |
| Output | UI dalam keadaan edit aktif; klik pada peta memicu input form data baru; tombol hapus dan update radius aktif |
| Prioritas | Tinggi |
BAB 4 – KEBUTUHAN NON-FUNGSIONAL
4.1 Performa
| ID | Kebutuhan | Metrik Target |
|---|---|---|
| KNF-01 | Waktu muat peta awal | < 5 detik pada koneksi internet 10 Mbps |
| KNF-02 | Waktu respons operasi CRUD | < 2 detik per operasi pada jaringan lokal |
| KNF-03 | Kapasitas render data | Mampu menampilkan hingga 500 marker tanpa penurunan performa signifikan |
4.2 Keamanan
| ID | Kebutuhan | Keterangan |
|---|---|---|
| KNF-04 | Validasi Input Server-side | Semua input dari client divalidasi dan di-sanitasi di sisi PHP sebelum diteruskan ke database untuk mencegah SQL Injection dan XSS. |
| KNF-05 | Prepared Statement | Seluruh query ke database menggunakan mysqli prepared statements atau PDO. |
| KNF-06 | Autentikasi (Pengembangan Lanjutan) | Versi mendatang wajib mengimplementasikan sistem login berbasis session/JWT untuk memisahkan akses Operator dan Publik. |
| KNF-07 | HTTPS di Produksi | Sistem di-deploy menggunakan protokol HTTPS di lingkungan produksi. |
4.3 Kemudahan Penggunaan (Usability)
| ID | Kebutuhan | Keterangan |
|---|---|---|
| KNF-08 | Antarmuka Intuitif | Navigasi peta mengikuti konvensi WebGIS standar (zoom scroll, drag pan, klik untuk detail). |
| KNF-09 | Resolusi Minimum | Antarmuka dapat digunakan dengan baik pada resolusi layar minimal 1280x720 piksel. |
| KNF-10 | Feedback Aksi | Setiap operasi CRUD memberikan notifikasi sukses atau pesan error yang informatif. |
| KNF-11 | Konsistensi Simbologi | Warna marker konsisten di seluruh sesi: oranye = kemiskinan, biru = masjid. |
4.4 Reliabilitas
| ID | Kebutuhan | Keterangan |
|---|---|---|
| KNF-12 | Integritas Data | Setiap perubahan data langsung disimpan ke database; tidak ada state yang hanya tersimpan di memori browser. |
| KNF-13 | Penanganan Error | Jika koneksi database gagal atau tile peta tidak termuat, sistem menampilkan pesan error yang informatif — tidak memunculkan halaman kosong atau crash. |
4.5 Portabilitas
| ID | Kebutuhan | Keterangan |
|---|---|---|
| KNF-14 | Lintas Browser | Berjalan normal di Chrome 90+, Firefox 88+, dan Edge 90+. |
| KNF-15 | Lintas OS Server | Dapat di-deploy di Linux (Ubuntu/Debian) maupun Windows Server dengan PHP dan MySQL. |
| KNF-16 | Kemudahan Instalasi | Untuk pengembangan, sistem dapat dijalankan dengan satu perintah: php -S localhost:8000. |
BAB 5 – ANTARMUKA EKSTERNAL
5.1 Antarmuka Pengguna (UI)
Sistem menggunakan antarmuka single-page dengan tiga area utama:
5.1.1 Toolbar Atas
• Tombol toggle Mode (View / Edit)
• Tombol switch tipe data aktif (Kemiskinan / Masjid)
• Judul dan identitas aplikasi
5.1.2 Sidebar Kiri
• Checkbox filter layer: Kemiskinan dan Masjid (sinkron dengan overlay control Leaflet)
• Daftar card untuk setiap entitas yang termuat dari database
• Card Kemiskinan berisi: nama KK, jumlah KK, alamat, tombol Fokus, tombol Hapus (aktif di Edit Mode)
• Card Masjid berisi: nama masjid, nama PIC, alamat, radius saat ini, tombol Fokus, input + tombol Update Radius (aktif di Edit Mode), tombol Hapus (aktif di Edit Mode)
5.1.3 Area Peta Utama
• Peta interaktif Leaflet dengan basemap OpenStreetMap
• Marker oranye untuk titik kemiskinan; marker biru untuk masjid
• Lingkaran radius layanan di setiap masjid (dapat dikonfigurasi)
• Overlay control di pojok kanan atas untuk toggle layer
• Pop-up atribut saat marker diklik
5.2 Antarmuka Perangkat Lunak
| Komponen Eksternal | Versi | Peran |
|---|---|---|
| Leaflet.js | 1.x | Library peta interaktif utama — render marker, lingkaran radius, kontrol peta |
| OpenStreetMap Tiles | N/A | Penyedia basemap — tile server eksternal, memerlukan koneksi internet |
| PHP (Backend) | 7.4+ | Menangani logika bisnis, validasi input, dan komunikasi dengan database |
| MySQL | 5.7+ | Penyimpanan data atribut kemiskinan dan masjid |
| Fetch API (Browser) | ES6+ | Mekanisme komunikasi asinkron antara frontend JavaScript dan endpoint PHP |
5.3 Antarmuka Komunikasi (API Endpoint)
| Endpoint | Method | Fungsi | Format Respons |
|---|---|---|---|
| php/read_kemiskinan.php | GET | Ambil semua data keluarga miskin | JSON Array |
| php/create_kemiskinan.php | POST | Tambah data keluarga miskin baru | Text (success/error) |
| php/delete_kemiskinan.php | POST | Hapus data keluarga miskin berdasarkan ID | Text (success/error) |
| php/read_masjid.php | GET | Ambil semua data masjid | JSON Array |
| php/create_masjid.php | POST | Tambah data masjid baru | Text (success/error) |
| php/update_masjid_radius.php | POST | Perbarui radius layanan masjid | Text (success/error) |
| php/delete_masjid.php | POST | Hapus data masjid berdasarkan ID | Text (success/error) |
5.4 Skema Basis Data
Tabel: kemiskinan
| Kolom | Tipe Data | Keterangan |
|---|---|---|
| id | INT AUTO_INCREMENT (PK) | Primary key, unik per record |
| nama_kepala_keluarga | VARCHAR(255) NOT NULL | Nama kepala keluarga miskin |
| jumlah_kk | INT NOT NULL | Jumlah anggota keluarga (angka positif) |
| alamat | TEXT NOT NULL | Alamat lengkap tempat tinggal |
| latitude | DECIMAL(10,8) NOT NULL | Koordinat lintang (WGS84, range -90 hingga +90) |
| longitude | DECIMAL(11,8) NOT NULL | Koordinat bujur (WGS84, range -180 hingga +180) |
| created_at | TIMESTAMP DEFAULT NOW() | Waktu pencatatan data |
Tabel: masjid
| Kolom | Tipe Data | Keterangan |
|---|---|---|
| id | INT AUTO_INCREMENT (PK) | Primary key, unik per record |
| nama_masjid | VARCHAR(255) NOT NULL | Nama lengkap masjid |
| pic_masjid | VARCHAR(255) NOT NULL | Nama pengurus/penanggung jawab masjid |
| alamat | TEXT NOT NULL | Alamat lengkap masjid |
| latitude | DECIMAL(10,8) NOT NULL | Koordinat lintang (WGS84) |
| longitude | DECIMAL(11,8) NOT NULL | Koordinat bujur (WGS84) |
| radius | INT DEFAULT 500 | Radius layanan dalam meter (range valid: 100–5000) |
| created_at | TIMESTAMP DEFAULT NOW() | Waktu pencatatan data |
BAB 6 – ANALISIS BISNIS PROSES DAN KONTRIBUSI PENGENTASAN KEMISKINAN
6.1 Konteks dan Permasalahan
Pengentasan kemiskinan di tingkat komunitas memerlukan dua elemen kunci: data yang akurat tentang siapa dan di mana keluarga miskin berada, serta jaringan distribusi bantuan yang efisien. Masjid sebagai lembaga sosial komunitas memiliki kapasitas distribusi tersebut melalui program ZIS, namun seringkali tidak memiliki peta sebaran penerima manfaat.
Permasalahan utama yang diselesaikan sistem ini:
• Tidak adanya data spasial mengenai sebaran keluarga miskin di sekitar masjid.
• Distribusi bantuan bersifat reaktif (menunggu yang datang) bukan proaktif (mendatangi yang membutuhkan).
• Potensi tumpang tindih cakupan antar masjid yang berdekatan, atau sebaliknya, ada wilayah yang tidak terjangkau masjid manapun (coverage gap).
6.2 Alur Bisnis Proses
6.2.1 Proses Pendataan Keluarga Miskin (Partisipatif)
1. Relawan atau pengurus RT/RW melakukan survei lapangan untuk mengidentifikasi keluarga miskin di lingkungannya.
2. Data survei (nama KK, jumlah anggota, alamat, dan koordinat GPS dari smartphone) dibawa ke sistem.
3. Operator membuka WebGIS dalam Mode Edit, memilih tipe 'Kemiskinan', dan mengklik lokasi di peta sesuai koordinat survei.
4. Operator mengisi formulir atribut dan menyimpan data.
5. Sistem menampilkan marker oranye di peta dan menambahkan card di sidebar.
6. Operator dapat memverifikasi posisi marker sesuai alamat yang tercatat.
6.2.2 Proses Registrasi Masjid dan Penetapan Radius Layanan
7. Pengurus masjid mendaftarkan masjidnya ke sistem: nama, nama PIC, alamat, dan koordinat lokasi masjid.
8. Sistem menampilkan marker biru dengan lingkaran radius default 500 m.
9. Pengurus mengamati titik-titik kemiskinan (marker oranye) yang berada di dalam dan di luar radius.
10. Pengurus menyesuaikan nilai radius sesuai kapasitas nyata masjid (misalnya dipersempit ke 300 m jika sumber daya terbatas, atau diperluas ke 1000 m jika kapasitas besar).
11. Radius yang sudah disepakati disimpan ke database untuk digunakan sebagai acuan distribusi.
6.2.3 Proses Analisis Cakupan dan Perencanaan Distribusi
12. Operator membuka peta dalam Mode View dengan kedua layer (Kemiskinan + Masjid) aktif.
13. Secara visual, operator mengidentifikasi: marker oranye mana yang berada di dalam lingkaran biru (terjangkau) dan mana yang di luar (belum terjangkau).
14. Untuk titik kemiskinan yang tidak terjangkau masjid manapun, operator dapat berkoordinasi dengan masjid terdekat untuk memperluas layanan atau dengan aparat kelurahan untuk program bantuan alternatif.
15. Daftar card di sidebar digunakan sebagai dasar daftar penerima manfaat untuk masing-masing masjid.
6.3 Kontribusi Setiap Fitur terhadap Pengentasan Kemiskinan
| Fitur Sistem | Kontribusi Langsung terhadap Pengentasan Kemiskinan |
|---|---|
| Titik Peta Kemiskinan | Mengubah data survei lapangan menjadi basis data spasial yang dapat dianalisis secara visual — menggantikan daftar nama yang tidak dapat dianalisis secara geografis. |
| Marker Tematik Oranye | Memberikan representasi visual yang jelas dan cepat terbaca bagi pengguna non-teknis untuk memahami sebaran kemiskinan di wilayah mereka. |
| Lokasi Masjid di Peta | Menunjukkan posisi relatif masjid terhadap kantong-kantong kemiskinan untuk perencanaan program sosial yang lebih terarah. |
| Radius Layanan Masjid | Fitur kunci: memvisualisasikan jangkauan program sosial masjid dan mengidentifikasi gap cakupan (keluarga miskin yang tidak terjangkau masjid manapun). |
| Konfigurasi Radius (Update) | Memungkinkan penyesuaian dinamis sesuai kapasitas nyata masjid — radius bukan nilai tetap, melainkan mencerminkan kemampuan riil program sosial. |
| Filter Layer Independen | Memudahkan fokus analisis: hanya tampilkan kemiskinan untuk melihat sebaran, hanya tampilkan masjid untuk melihat distribusi layanan, atau keduanya untuk analisis cakupan. |
| Sidebar dengan Data Atribut | Menyediakan daftar terstruktur yang dapat digunakan langsung sebagai daftar penerima bantuan oleh pengurus masjid. |
| Mode View/Edit | Memisahkan penggunaan sistem sebagai alat analisis publik (View) dan alat pemeliharaan data oleh operator (Edit) — mendukung partisipasi masyarakat luas. |
6.4 Rencana Pengembangan Lanjutan
Untuk meningkatkan dampak sistem terhadap pengentasan kemiskinan di versi selanjutnya:
• Autentikasi multi-role: Admin, Operator Masjid, Aparat Kelurahan, dan Publik.
• Analisis spasial otomatis: query database untuk menampilkan daftar keluarga miskin dalam radius suatu masjid secara otomatis (bukan hanya visual).
• Laporan statistik: jumlah KK per kelurahan, persentase cakupan layanan masjid, peta panas (heatmap) kemiskinan.
• Modul rumah ibadah lain: gereja, pura, vihara, dan kelenteng — untuk cakupan lintas agama.
• Export data: ke format Excel atau PDF untuk pelaporan ke instansi pemerintah.
• Integrasi DTKS (Data Terpadu Kesejahteraan Sosial) Kementerian Sosial.
• Fitur upload foto rumah sebagai bukti verifikasi lapangan.
BAB 7 – DIAGRAM SISTEM
7.1 Arsitektur Sistem
Sistem menggunakan arsitektur three-tier (tiga lapis):
| ARSITEKTUR THREE-TIER WebGIS Kemiskinan & Masjid ┌─────────────────────────────────────────────┐ │ PRESENTATION LAYER (Client) │ │ Browser: HTML + CSS + Vanilla JavaScript │ │ Leaflet.js | Fetch API | Sidebar UI │ └─────────────────┬───────────────────────────┘ HTTP/HTTPS | JSON Response ┌─────────────────┴───────────────────────────┐ │ BUSINESS LOGIC LAYER (Server) │ │ PHP Procedural | 7 Endpoint CRUD │ │ Validasi Input | Query Builder │ └─────────────────┬───────────────────────────┘ mysqli | SQL Query ┌─────────────────┴───────────────────────────┐ │ DATA LAYER (Database) │ │ MySQL Database │ │ Tabel: kemiskinan | Tabel: masjid │ └─────────────────────────────────────────────┘ | | :---- |
7.2 Alur Data – Tambah Titik Kemiskinan
| OPERATOR → Klik lokasi di peta (Leaflet click event) BROWSER → Tampil form: Nama KK | Jumlah KK | Alamat OPERATOR → Isi dan submit form JS → fetch POST php/create_kemiskinan.php PHP → Validasi & sanitasi input PHP → INSERT INTO kemiskinan (...) VALUES (...) MySQL → Simpan data, return success PHP → Return 'success' (text) JS → Refresh: GET read_kemiskinan.php MAP → Render marker oranye di koordinat baru SIDEBAR → Tambah card baru di daftar kemiskinan | | :---- |
7.3 Alur Data – Update Radius Masjid
| OPERATOR → Input nilai radius baru di card masjid (sidebar) OPERATOR → Klik tombol 'Update Radius' JS → Validasi range (100-5000) JS → fetch POST php/update_masjid_radius.php PHP → UPDATE masjid SET radius=? WHERE id=? MySQL → Update berhasil, return success JS → Re-render L.circle dengan radius baru di peta MAP → Lingkaran radius masjid berubah ukuran real-time |
|---|
7.4 Entity Relationship Diagram (ERD)
| Entitas | Atribut |
|---|---|
| kemiskinan | id (PK) |
| masjid | id (PK) |
Catatan: Kedua tabel tidak memiliki foreign key — relasi logis antara masjid dan kemiskinan ditentukan secara spasial (kalkulasi jarak dan radius) di layer peta, bukan melalui relasi database relasional. Ini merupakan desain yang disederhanakan untuk versi 1.0; versi lanjutan dapat mengimplementasikan tabel relasi atau tipe spasial MySQL.
LAMPIRAN
A. Ringkasan Kebutuhan Fungsional
| ID | Nama Kebutuhan | Modul | Prioritas |
|---|---|---|---|
| KF-01 | Inisialisasi Peta Interaktif | Peta | Tinggi |
| KF-02 | Toggle Layer Tematik | Peta | Tinggi |
| KF-03 | Tambah Data Keluarga Miskin | Kemiskinan | Tinggi |
| KF-04 | Lihat Daftar Data Kemiskinan | Kemiskinan | Tinggi |
| KF-05 | Fokus ke Lokasi Keluarga Miskin | Kemiskinan | Sedang |
| KF-06 | Hapus Data Keluarga Miskin | Kemiskinan | Tinggi |
| KF-07 | Tambah Data Masjid | Masjid | Tinggi |
| KF-08 | Lihat Daftar Data Masjid | Masjid | Tinggi |
| KF-09 | Fokus ke Lokasi Masjid | Masjid | Sedang |
| KF-10 | Perbarui Radius Layanan Masjid | Masjid | Tinggi |
| KF-11 | Hapus Data Masjid | Masjid | Tinggi |
| KF-12 | Mode View | Mode Sistem | Tinggi |
| KF-13 | Mode Edit | Mode Sistem | Tinggi |
B. Simbologi Peta
| Elemen Peta | Simbol | Warna | Makna |
|---|---|---|---|
| Titik Kemiskinan | Marker bulat | Oranye (#FFA500) | Lokasi keluarga miskin |
| Masjid | Marker bulat | Biru (#0000FF) | Lokasi masjid (rumah ibadah) |
| Radius Layanan Masjid | Lingkaran transparan | Biru muda (opacity 0.2) | Area jangkauan program sosial masjid |
C. Kamus Data (Data Dictionary)
| Field | Tabel | Tipe Data | Validasi |
|---|---|---|---|
| nama_kepala_keluarga | kemiskinan | VARCHAR(255) | Wajib diisi, tidak boleh kosong |
| jumlah_kk | kemiskinan | INT | Wajib diisi, angka bulat positif > 0 |
| alamat | kemiskinan | TEXT | Wajib diisi |
| latitude | kemiskinan, masjid | DECIMAL(10,8) | Range: -90 hingga +90 |
| longitude | kemiskinan, masjid | DECIMAL(11,8) | Range: -180 hingga +180 |
| nama_masjid | masjid | VARCHAR(255) | Wajib diisi, tidak boleh kosong |
| pic_masjid | masjid | VARCHAR(255) | Wajib diisi |
| radius | masjid | INT | Range valid: 100–5000 meter; default 500 |