Memperbaiki format spasi pada README.md agar lebih mudah dibaca.
15 KiB
🌏 WebGIS Kemiskinan & Jangkauan Bantuan
Sistem Informasi Geospasial interaktif untuk memetakan penduduk miskin dan menganalisis jangkauan bantuan dari rumah ibadah di Kota Pontianak, Kalimantan Barat.
✍️ Author
Nama: Ferdyan Handoko
NIM: D1041231039
Kelas: SIG B
🌐 Live Demo
Sistem ini telah di-hosting dan dapat diakses langsung melalui tautan berikut:
Halaman Tautan
🗺️ Halaman Publik https://pontianak-poverty-webgis.freedev.app/
🔐 Halaman Login Admin https://pontianak-poverty-webgis.freedev.app/login.php
Kredensial Demo Admin:
Username: admin
Password: admin123
⚠️ Catatan: Kredensial di atas hanya untuk keperluan demo. Ganti password setelah instalasi di server produksi.
📑 Daftar Isi
- Deskripsi
- Fitur Utama
- Teknologi yang Digunakan
- Persyaratan Sistem
- Instalasi (dari Gitea)
- Struktur Proyek
- Konfigurasi .env
- Login Admin
- Cara Menggunakan
- Database Schema
- Data GeoJSON
- Troubleshooting
- Keamanan
- Pengembangan Lebih Lanjut
- Kontribusi
- Kontak & Support
- Catatan Versi
📘 Deskripsi
Sistem ini dibangun untuk membantu pemangku kepentingan di Kota Pontianak dalam mengidentifikasi sebaran penduduk miskin yang belum terjangkau bantuan dari rumah ibadah. Dengan pendekatan WebGIS, pengguna dapat menjelajahi peta interaktif, melihat klasifikasi titik miskin (terjangkau / tidak), serta kerapatan penduduk per kecamatan.
Admin dapat mengelola data penduduk miskin langsung dari peta melalui antarmuka sidebar, sedangkan pengguna umum dapat melihat seluruh informasi tanpa bisa mengubah data.
✨ Fitur Utama
- Peta Interaktif berbasis OpenStreetMap dengan navigasi zoom, pan, dan tombol kontrol.
- 6 Layer Geospasial: Batas Kecamatan, Kerapatan Penduduk Belum Terjangkau, Zona Buffer, Titik Miskin, Fasilitas Umum, Jaringan Jalan, Rumah Ibadah.
- Klasifikasi Titik Miskin: Hijau (terjangkau) dan Merah (belum terjangkau).
- Zona Jangkauan (Buffer Union): Gabungan buffer dari seluruh rumah ibadah, radius dapat diubah secara dinamis.
- Dashboard Ringkasan: Total titik miskin, jumlah keluarga, rata‑rata penghasilan, distribusi per kecamatan.
- Tabel Data Lengkap: Dapat diurutkan (sort) dan diakses melalui modal.
- Manajemen Data Admin: Tambah, edit, hapus titik penduduk miskin langsung dari peta atau tabel.
- Validasi Formulir & Konfirmasi Aksi: Mencegah kesalahan input dan perubahan tidak disengaja.
- Loading Overlay untuk umpan balik saat data dimuat.
- Toast Notification untuk notifikasi sukses/gagal.
- Sidebar dengan tab navigasi, kontrol layer, legenda, dan analisis.
- Login Admin dengan password terenkripsi (hash).
- Keamanan Dasar: Escape HTML (XSS), session PHP, prepared statements untuk query SQL.
- Responsif (mobile‑friendly) melalui drawer sidebar.
🛠 Teknologi yang Digunakan
| Komponen | Teknologi |
|---|---|
| Frontend | HTML5, CSS3, JavaScript (ES6+), Leaflet JS, Turf.js |
| Backend | PHP 7.4+ (prosedural) |
| Database | MySQL / MariaDB |
| Sumber Data Geospasial | File GeoJSON dari Overpass Turbo (data OpenStreetMap) |
| Tile Peta | OpenStreetMap (gratis) |
| Font | Inter (Google Fonts) |
| Ikon | Emoji & SVG |
💻 Persyaratan Sistem
- Server lokal: XAMPP, Laragon, atau sejenisnya dengan PHP 7.4+ dan MySQL 5.7+
- Web browser modern: Google Chrome, Mozilla Firefox, Microsoft Edge
- Koneksi internet (untuk memuat tile peta dan font)
- Git (untuk clone repository)
📥 Instalasi (dari Gitea)
1. Clone Repository
git clone https://your-gitea-instance.com/username/Web-SIG-Kemiskinan.git
cd Web-SIG-Kemiskinan
2. Persiapan Database
- Buka phpMyAdmin atau client MySQL favorit Anda
- Jalankan script
schema.sql:Atau copy-paste isi filesource schema.sql;schema.sqldan jalankan di MySQL client - Tabel berikut akan terbuat otomatis:
admins(username: admin, password sudah di-hash)poor_residents(data penduduk miskin)settings(pengaturan aplikasi seperti buffer_radius)
3. Konfigurasi Environment (.env)
-
Buat file
.envdi root project:cp .env.example .env # atau buat file baru jika tidak ada .env.example -
Edit
.envdengan kredensial database Anda:DB_HOST=localhost DB_USER=root DB_PASS= DB_NAME=webgis_pontianak -
Sesuaikan nilai sesuai konfigurasi MySQL Anda
4. Setup Web Server
Menggunakan Laragon:
- Copy folder
Web-SIG-Kemiskinanke folderC:\laragon\www\ - Akses melalui
http://webgis-kemiskinan.test(atau sesuai konfigurasi)
Menggunakan XAMPP:
- Copy folder ke
C:\xampp\htdocs\Web-SIG-Kemiskinan\ - Akses melalui
http://localhost/Web-SIG-Kemiskinan
5. Verifikasi Instalasi
- Buka browser dan akses aplikasi
- Jika berhasil, Anda akan melihat peta interaktif dengan semua layer
- Untuk login sebagai admin: Login Admin
📂 Struktur Proyek
Web-SIG-Kemiskinan/
├── config.php # Konfigurasi database (pembaca file .env)
├── index.php # Halaman utama peta interaktif
├── login.php # Halaman login admin
├── logout.php # Script logout
├── save_poor.php # API: Tambah data penduduk miskin
├── edit_poor.php # API: Edit data penduduk miskin
├── delete_poor.php # API: Hapus data penduduk miskin
├── update_settings.php # API: Update pengaturan (buffer radius)
├── schema.sql # Script pembuatan database
├── .env # File konfigurasi environment (tidak di-commit)
├── README.md # Dokumentasi proyek
└── json/ # Data GeoJSON (sumber data peta)
├── Kecamatan_Pontianak.json
├── Jalan_Pontianak.json
├── Fasilitas_Pontianak.json
├── Ibadah_Pontianak.json
└── ...
Penjelasan File Utama
| File | Fungsi |
|---|---|
config.php |
Koneksi database dan pembaca file .env |
index.php |
Frontend utama dengan peta Leaflet dan logika JavaScript |
login.php |
Form login dengan autentikasi password hash |
save_poor.php |
AJAX endpoint untuk tambah data (admin only) |
edit_poor.php |
AJAX endpoint untuk edit data (admin only) |
delete_poor.php |
AJAX endpoint untuk hapus data (admin only) |
update_settings.php |
AJAX endpoint untuk update buffer radius |
schema.sql |
SQL script untuk setup database otomatis |
🔧 Konfigurasi .env
Buat file .env di root project dengan isi berikut:
# Database Configuration
DB_HOST=localhost
DB_USER=root
DB_PASS=
DB_NAME=webgis_pontianak
Penjelasan:
DB_HOST: Host database (biasanya localhost untuk lokal)DB_USER: Username MySQLDB_PASS: Password MySQL (kosong jika tidak ada)DB_NAME: Nama database yang sudah dibuat
Catatan Penting:
- File
.envTIDAK boleh di-commit ke Git (tambahkan ke.gitignore) - Setiap developer harus membuat
.envmereka sendiri dengan kredensial lokal
🔐 Login Admin
Kredensial Default
Username: admin
Password: admin
Catatan Keamanan:
- Password di-hash menggunakan
password_hash()dengan algoritma bcrypt - Ubah password default setelah instalasi pertama kali
- Password disimpan di tabel
adminsdengan hash, bukan plaintext
Mengubah Password Admin
-
Login ke server database
-
Update tabel
admins:UPDATE admins SET password = '$2y$10$NEW_HASH_HERE' WHERE username = 'admin';Untuk generate hash baru, gunakan script PHP:
<?php $password = 'password_baru_anda'; echo password_hash($password, PASSWORD_BCRYPT); ?>
📖 Cara Menggunakan
1. Akses Aplikasi
- Buka browser dan akses URL aplikasi (sesuai setup Anda)
- Peta interaktif akan langsung terlihat
2. Navigasi Peta
- Zoom: Gunakan scroll mouse atau tombol +/- di peta
- Pan: Klik dan drag peta
- Tombol Kontrol: Zoom in/out, fullscreen, lokasi saat ini
3. Menampilkan/Menyembunyikan Layer
Menggunakan Tombol Top Bar:
- 🟣 Buffer: Zona jangkauan bantuan dari rumah ibadah
- 🟢 Density: Kerapatan penduduk belum terjangkau
- 🏥 Fasilitas: Fasilitas umum (puskesmas, sekolah, dll)
- 🛣️ Jalan: Jaringan jalan
- 🕌 Ibadah: Lokasi rumah ibadah
- 🟧 Kecamatan: Batas-batas kecamatan
Menggunakan Sidebar:
- Klik tab 🗂️ Layer untuk melihat daftar semua layer
- Aktifkan/matikan layer dengan toggle switch
4. Melihat Legenda
- Klik tab 📋 Legenda di sidebar
- Legenda menjelaskan warna dan simbol di peta
5. Analisis Data
- Klik tab 📊 Analisis di sidebar
- Lihat statistik:
- Total penduduk miskin
- Total keluarga
- Rata-rata penghasilan
- Distribusi per kecamatan
6. Tabel Data Lengkap
- Klik tab 📋 Data di sidebar atau tombol Tabel di top bar
- Lihat daftar lengkap semua penduduk miskin
- Tabel dapat diurutkan berdasarkan kolom (asc/desc)
- Admin: Klik pada baris untuk edit/hapus
7. Mengelola Data (Admin Only)
Tambah Data Baru
- Klik tombol + Tambah Data (hanya muncul jika login)
- Isi form modal:
- Nama (wajib)
- NIK
- Jumlah Keluarga
- Penghasilan (Rp)
- RT/RW
- Koordinat (lat/lng)
- Klik Simpan
Menambah Data via Klik Peta (Admin)
- Pastikan sudah login
- Aktifkan mode "Add Mode" (jika ada) atau klik kanan di peta
- Sistem akan membuka form dengan koordinat otomatis terisi
- Isi data lainnya dan simpan
Edit Data
- Klik pada titik di peta atau baris di tabel
- Ubah data di form modal
- Klik Update
Hapus Data
- Klik pada titik di peta atau baris di tabel
- Klik tombol Hapus atau Delete
- Konfirmasi penghapusan
8. Mengubah Buffer Radius
- Login sebagai admin
- Klik tab ⚙️ Pengaturan di sidebar
- Ubah nilai Buffer Radius (dalam meter)
- Klik Simpan
- Peta akan refresh dengan zona buffer yang baru
9. Logout
- Klik tombol Logout di sidebar
- Atau tutup sesi browser
�📊 Database Schema
Tabel: admins
CREATE TABLE admins (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL
);
Tabel: poor_residents
CREATE TABLE poor_residents (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
nik VARCHAR(16),
family_size INT DEFAULT 1,
income INT DEFAULT 0,
rt_rw VARCHAR(20),
lat DOUBLE NOT NULL,
lng DOUBLE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Tabel: settings
CREATE TABLE settings (
setting_key VARCHAR(50) PRIMARY KEY,
setting_value TEXT NOT NULL
);
📁 Data GeoJSON
Data geospasial disimpan dalam folder json/:
| File | Keterangan |
|---|---|
Kecamatan_Pontianak.json |
Batas-batas wilayah kecamatan |
Jalan_Pontianak.json |
Jaringan jalan di Pontianak |
Fasilitas_Pontianak.json |
Fasilitas umum (puskesmas, sekolah, dll) |
Ibadah_Pontianak.json |
Lokasi rumah ibadah |
Semua file GeoJSON berasal dari Overpass Turbo (query OpenStreetMap):
- Format: GeoJSON standar dengan geometri dan properties
- Proyeksi: WGS84 (EPSG:4326)
- Digunakan untuk rendering layer di Leaflet
🐛 Troubleshooting
Masalah: Peta tidak muncul
- Solusi: Periksa koneksi internet, pastikan CDN Leaflet dapat diakses
- Alternatif: Gunakan Leaflet offline atau host sendiri
Masalah: Data tidak muncul di database
- Solusi: Pastikan file
.envbenar dan database sudah dibuat viaschema.sql - Cek koneksi database di phpMyAdmin
Masalah: Login gagal
- Solusi: Pastikan username
adminada di tabeladmins - Gunakan password default:
admin - Jika lupa, reset password via database
Masalah: Layer GeoJSON tidak muncul
- Solusi: Periksa file GeoJSON di folder
json/ada lengkap - Buka browser console (F12) cek error messages
- Pastikan path file GeoJSON benar di file
index.php
Masalah: Sidebar tidak merespons
- Solusi: Clear cache browser (Ctrl+Shift+Delete)
- Reload halaman (Ctrl+R atau F5)
- Cek browser console untuk JavaScript error
🔒 Keamanan
Fitur keamanan yang diimplementasikan:
- Authentication: Login dengan session PHP
- Authorization: Admin-only endpoints mengecek
$_SESSION['admin'] - Input Validation: Prepared statements untuk mencegah SQL injection
- Password Hashing: Menggunakan
password_hash()dengan bcrypt - Output Escaping: Data divalidasi saat output ke HTML
- CORS: GET endpoint untuk GeoJSON dapat diakses publik
- Session Management: Logout menghapus session
Catatan untuk Production:
- Gunakan HTTPS
- Set cookie HttpOnly dan Secure
- Implementasi CSRF protection
- Rate limiting untuk login
- Update PHP dan MySQL secara berkala
- Backup database reguler
🚀 Pengembangan Lebih Lanjut
Fitur yang Bisa Ditambahkan
- Export data (CSV, Excel, PDF)
- Import data dari file bulk
- Visualisasi grafik statistik
- Filter data berdasarkan kriteria (RT/RW, range penghasilan, dll)
- Heatmap real-time dengan WebSocket
- Mobile app native (React Native, Flutter)
- Multi-language support
- Dark mode
- API REST yang lebih lengkap
Setup Development Environment
# Install dependencies (jika menggunakan npm/composer)
composer install # untuk PHP dependencies
# Setup local server dengan PHP built-in
cd Web-SIG-Kemiskinan
php -S localhost:8000
# Atau gunakan Laragon/XAMPP untuk development
Git Workflow
# Clone repository
git clone https://git.ifuntanhub.dev/FH/pontianak-poverty-webgis.git
# Buat branch baru untuk feature
git checkout -b feature/nama-fitur
# Commit changes
git add .
git commit -m "feat: tambah fitur baru"
# Push ke remote
git push origin feature/nama-fitur
# Buat Pull Request di Gitea
👥 Kontribusi
Kontribusi sangat diterima! Silahkan:
- Fork repository
- Buat branch untuk feature/bugfix
- Commit dan push
- Buat Pull Request
📞 Kontak & Support
Untuk pertanyaan, laporan bug, atau saran:
📝 Catatan Versi
v1.0 (Current)
- ✅ Peta interaktif dengan 7 layer geospasial
- ✅ Dashboard dan statistik
- ✅ CRUD data penduduk miskin
- ✅ Login admin dengan password hash
- ✅ Buffer radius dinamis
- ✅ Responsif mobile
- ✅ Validasi form dan data
Last Updated: June 3, 2026