Files
2026-06-09 15:29:53 +07:00

411 lines
14 KiB
Markdown

# WebGIS Poverty Mapping Kota Pontianak
## Informasi Proyek
| Keterangan | Detail |
|---|---|
| Nama Proyek | WebGIS Poverty Mapping Kota Pontianak |
| Jenis Sistem | Sistem Informasi Geografis berbasis Web |
| Mata Kuliah | Sistem Informasi Geografis (SIG) |
| Program Studi | Informatika, Fakultas Teknik, Universitas Tanjungpura |
| Pengembang | Talitha Syakirah Artanti |
| NIM | D1041231013 |
| Dosen Pengampu | Dr. Ir. Yus Sholva, ST., MT., CPro. |
## Deskripsi Singkat
WebGIS Poverty Mapping Kota Pontianak adalah aplikasi Sistem Informasi Geografis berbasis web yang digunakan untuk memetakan data masyarakat prasejahtera, laporan cepat masyarakat, histori bantuan, serta data rumah ibadah sebagai potensi pendukung penyaluran bantuan sosial.
Sistem ini dikembangkan menggunakan PHP native, MySQL, JavaScript, Leaflet.js, dan OpenStreetMap. Fokus utama aplikasi adalah membantu visualisasi persebaran masyarakat prasejahtera di Kota Pontianak, memantau laporan masyarakat, mencatat histori bantuan, serta menampilkan rumah ibadah dalam bentuk titik lokasi dan radius jangkauan.
## Tujuan Sistem
Tujuan dari sistem ini adalah:
1. Menampilkan persebaran masyarakat prasejahtera pada peta digital.
2. Menyediakan fitur laporan cepat dari masyarakat umum.
3. Membantu admin dalam memvalidasi dan mengelola laporan masyarakat.
4. Mencatat histori bantuan yang diterima masyarakat prasejahtera.
5. Menampilkan rumah ibadah sebagai potensi pemberi atau pendukung bantuan.
6. Menyediakan dashboard ringkasan bagi admin, wali kota, dan dinas terkait.
7. Menyediakan fitur unduh data dalam format CSV untuk kebutuhan monitoring.
## Struktur Folder
```text
UAS_SIG_Talitha/
├── 1_Pemetaan_SPBU/
├── 2_Jalan_ParsilTanah_dan_Layer/
├── 3_PovertyMapping/
├── env.php
├── .env.example
├── .gitignore
└── README.md
```
Keterangan:
- `1_Pemetaan_SPBU/` berisi pengembangan awal WebGIS untuk pemetaan SPBU.
- `2_Jalan_ParsilTanah_dan_Layer/` berisi pengembangan awal WebGIS untuk data jalan, parsil tanah, dan layer peta.
- `3_PovertyMapping/` merupakan aplikasi utama/final yang digunakan untuk sistem WebGIS Poverty Mapping Kota Pontianak.
- `env.php` digunakan untuk membaca konfigurasi database dari environment variable.
- `.env.example` berisi contoh konfigurasi environment.
- `.gitignore` digunakan untuk mencegah file sensitif dan file tidak diperlukan masuk ke repository.
- `README.md` berisi dokumentasi proyek.
## Fokus Aplikasi Final
Aplikasi final berada pada folder:
```text
3_PovertyMapping/
```
Aplikasi ini tidak lagi menampilkan data SPBU, jalan, dan parsil tanah sebagai fitur utama. Folder SPBU dan jalan/parsil tetap disertakan sebagai bagian dari riwayat pengembangan tugas, tetapi sistem final yang digunakan untuk penilaian adalah Poverty Mapping.
## Fitur Utama
### 1. Peta Digital
Sistem menampilkan peta digital Kota Pontianak menggunakan Leaflet.js dan OpenStreetMap sebagai basemap. Peta digunakan untuk menampilkan titik masyarakat prasejahtera, titik laporan masyarakat, dan titik rumah ibadah.
### 2. Data Masyarakat Prasejahtera
Admin dapat mengelola data masyarakat prasejahtera, meliputi:
- nama kepala keluarga;
- NIK;
- tanggal lahir;
- pendidikan;
- riwayat penyakit;
- jumlah KK;
- alamat;
- kecamatan;
- kelurahan;
- status bantuan;
- latitude dan longitude.
Data masyarakat prasejahtera ditampilkan dalam bentuk marker pada peta dan tabel pada dashboard.
### 3. Laporan Cepat Masyarakat
Masyarakat umum dapat mengirim laporan tanpa login melalui peta. Data laporan meliputi data pelapor, kategori laporan, tujuan laporan, deskripsi, data warga yang dilaporkan, serta titik lokasi.
Status laporan terdiri dari:
- `Masuk`
- `Ditinjau`
- `Diproses`
- `Selesai`
- `Dijadikan Data Masyarakat`
- `Ditolak`
Laporan hanya dapat dijadikan data masyarakat prasejahtera setelah statusnya menjadi `Selesai`.
### 4. Auto Terhubung NIK/Nama
Sistem memiliki logika pencocokan otomatis berdasarkan NIK atau nama kepala keluarga. Jika laporan masyarakat memiliki NIK atau nama yang sama dengan data masyarakat prasejahtera yang sudah ada, sistem dapat menghubungkan laporan tersebut ke data lama agar tidak terjadi data ganda.
### 5. Histori Bantuan
Sistem mencatat histori bantuan yang diterima masyarakat prasejahtera. Data histori bantuan meliputi:
- penerima bantuan;
- jenis bantuan;
- tanggal bantuan;
- nominal bantuan;
- sumber bantuan;
- keterangan.
Histori bantuan dapat ditambahkan lebih dari satu kali untuk satu masyarakat prasejahtera, sehingga riwayat bantuan dapat dipantau secara berkala.
### 6. Rumah Ibadah
Sistem menampilkan data rumah ibadah sebagai titik lokasi dan radius jangkauan. Rumah ibadah dapat berupa:
- Masjid;
- Gereja;
- Vihara;
- Kelenteng;
- Pura.
Data rumah ibadah digunakan sebagai indikator potensi pendukung bantuan sosial. Radius rumah ibadah tidak otomatis berarti masyarakat menerima bantuan, tetapi menjadi acuan spasial untuk melihat potensi jangkauan bantuan.
### 7. Relasi Bantuan dengan Rumah Ibadah
Dalam pengembangan terbaru, histori bantuan dapat dikembangkan agar memiliki relasi dengan rumah ibadah tertentu melalui kolom `masjid_id`. Dengan relasi ini, sistem dapat mencatat bahwa suatu masyarakat prasejahtera menerima bantuan dari rumah ibadah tertentu.
Konsep relasinya adalah:
```text
penduduk_id = masyarakat penerima bantuan
masjid_id = rumah ibadah pemberi bantuan
```
Jika bantuan berasal dari dinas atau sumber lain, maka `masjid_id` dapat dikosongkan. Jika bantuan berasal dari rumah ibadah, maka `masjid_id` diisi sesuai rumah ibadah pemberi bantuan.
### 8. Dashboard
Dashboard digunakan oleh pengguna yang memiliki akses login, yaitu admin, wali kota, dan dinas. Dashboard menampilkan:
- ringkasan jumlah masyarakat prasejahtera;
- jumlah laporan masuk, diproses, selesai, dan dijadikan data masyarakat;
- jumlah histori bantuan;
- jumlah rumah ibadah;
- tabel laporan masyarakat;
- tabel histori bantuan;
- tabel masyarakat prasejahtera;
- tabel rumah ibadah;
- fitur download data CSV;
- fitur kelola akun untuk admin.
### 9. Download Data
Sistem menyediakan fitur unduh data dalam format CSV untuk data utama, yaitu:
- laporan masyarakat;
- histori bantuan;
- masyarakat prasejahtera;
- rumah ibadah.
## Hak Akses Pengguna
| Role | Hak Akses |
|---|---|
| Masyarakat Umum | Mengirim laporan cepat tanpa login |
| Admin | Mengelola data masyarakat, laporan, histori bantuan, rumah ibadah, akun pengguna, dashboard, dan download data |
| Wali Kota | Melihat dashboard dan mengunduh data |
| Dinas Sosial | Melihat laporan sesuai instansi dan menambahkan histori bantuan sosial |
| Dinas Kesehatan | Melihat laporan sesuai instansi dan menambahkan histori bantuan terkait kesehatan |
## Alur Sistem
### Alur Laporan Masyarakat
1. Masyarakat membuka halaman peta.
2. Masyarakat memilih lokasi pada peta.
3. Masyarakat mengisi form laporan cepat.
4. Sistem menyimpan laporan dengan status awal `Masuk`.
5. Admin meninjau laporan.
6. Status laporan dapat diubah menjadi `Ditinjau`, `Diproses`, atau `Selesai`.
7. Setelah status `Selesai`, laporan dapat dihubungkan ke data masyarakat lama atau dijadikan data masyarakat baru.
8. Data yang sudah valid masuk ke data masyarakat prasejahtera dan dapat digunakan untuk monitoring bantuan.
### Alur Histori Bantuan
1. Admin atau dinas memilih data masyarakat prasejahtera.
2. Admin atau dinas mengisi jenis bantuan, tanggal, nominal, sumber bantuan, dan keterangan.
3. Sistem menyimpan bantuan ke tabel histori bantuan.
4. Data bantuan dapat dilihat pada dashboard dan diunduh dalam format CSV.
5. Jika bantuan berasal dari rumah ibadah, sistem dapat mencatat rumah ibadah pemberi bantuan melalui `masjid_id`.
### Alur Rumah Ibadah
1. Admin menambahkan data rumah ibadah pada peta.
2. Sistem menyimpan jenis, nama, PIC, alamat, koordinat, dan radius rumah ibadah.
3. Sistem menampilkan marker dan radius rumah ibadah.
4. Radius digunakan sebagai indikator potensi jangkauan bantuan.
## Struktur Database Utama
### Tabel `users`
Menyimpan data akun pengguna sistem.
| Kolom | Keterangan |
|---|---|
| id | ID pengguna |
| nama | Nama pengguna |
| username | Username login |
| password | Password terenkripsi |
| role | Role pengguna |
| instansi | Nama instansi untuk role dinas |
| created_at | Waktu data dibuat |
### Tabel `penduduk_kemiskinan`
Menyimpan data masyarakat prasejahtera.
| Kolom | Keterangan |
|---|---|
| id | ID masyarakat |
| nama_kepala_keluarga | Nama kepala keluarga |
| nik | Nomor Induk Kependudukan |
| tanggal_lahir | Tanggal lahir |
| pendidikan | Pendidikan terakhir |
| riwayat_penyakit | Riwayat penyakit |
| jumlah_kk | Jumlah anggota keluarga |
| alamat | Alamat lengkap |
| kecamatan | Kecamatan |
| kelurahan | Kelurahan |
| status_bantuan | Status bantuan |
| latitude | Koordinat latitude |
| longitude | Koordinat longitude |
| created_at | Waktu data dibuat |
### Tabel `laporan_masyarakat`
Menyimpan laporan cepat dari masyarakat umum.
| Kolom | Keterangan |
|---|---|
| id | ID laporan |
| penduduk_id | Relasi ke data masyarakat jika sudah terhubung |
| nama_pelapor | Nama pelapor |
| no_hp | Nomor HP pelapor |
| kategori_laporan | Kategori laporan |
| deskripsi | Deskripsi laporan |
| aktor_tujuan | Tujuan laporan |
| status_laporan | Status laporan |
| data_nama_kepala_keluarga | Nama warga yang dilaporkan |
| data_nik | NIK warga yang dilaporkan |
| data_tanggal_lahir | Tanggal lahir warga |
| data_pendidikan | Pendidikan warga |
| data_riwayat_penyakit | Riwayat penyakit warga |
| data_jumlah_kk | Jumlah anggota keluarga |
| data_alamat | Alamat warga |
| data_kecamatan | Kecamatan |
| data_kelurahan | Kelurahan |
| data_status_bantuan | Status bantuan awal |
| latitude | Koordinat latitude |
| longitude | Koordinat longitude |
| created_at | Waktu laporan dibuat |
### Tabel `histori_bantuan`
Menyimpan riwayat bantuan yang diterima masyarakat prasejahtera.
| Kolom | Keterangan |
|---|---|
| id | ID histori |
| penduduk_id | Relasi ke masyarakat penerima bantuan |
| masjid_id | Relasi ke rumah ibadah pemberi bantuan jika sumber bantuan berasal dari rumah ibadah |
| jenis_bantuan | Jenis bantuan |
| tanggal_bantuan | Tanggal bantuan |
| nominal | Nominal bantuan |
| sumber_bantuan | Sumber bantuan |
| keterangan | Keterangan tambahan |
| created_at | Waktu data dibuat |
### Tabel `masjid`
Menyimpan data rumah ibadah. Nama tabel tetap menggunakan `masjid` untuk menyesuaikan struktur kode, tetapi isi tabel dapat memuat berbagai jenis rumah ibadah.
| Kolom | Keterangan |
|---|---|
| id | ID rumah ibadah |
| jenis_rumah_ibadah | Jenis rumah ibadah |
| nama_masjid | Nama rumah ibadah |
| pic_masjid | PIC atau penanggung jawab |
| alamat_masjid | Alamat rumah ibadah |
| latitude | Koordinat latitude |
| longitude | Koordinat longitude |
| radius_meter | Radius jangkauan |
| created_at | Waktu data dibuat |
## Teknologi yang Digunakan
| Teknologi | Fungsi |
|---|---|
| PHP Native | Backend dan pengolahan request |
| MySQL | Penyimpanan data |
| JavaScript | Interaksi antarmuka dan peta |
| Leaflet.js | Library peta interaktif |
| OpenStreetMap | Basemap |
| HTML | Struktur halaman |
| CSS | Tampilan antarmuka |
| Git | Version control |
| Coolify | Platform deployment aplikasi |
## Konfigurasi Environment
Project menggunakan file environment agar konfigurasi database tidak ditulis langsung di kode.
Contoh isi `.env.example`:
```env
DB_HOST=127.0.0.1
DB_USER=root
DB_PASS=
DB_NAME=sig
DB_PORT=3306
```
File `.env` digunakan untuk konfigurasi lokal dan tidak boleh diunggah ke repository Git.
## File yang Tidak Diunggah ke Git
File berikut tidak perlu diunggah ke repository:
```text
.env
.env.*
!.env.example
.DS_Store
__MACOSX/
*.zip
```
Tujuannya adalah agar password database, file sistem Mac, dan file arsip tidak masuk ke repository.
## Cara Menjalankan di Localhost
1. Letakkan folder project pada direktori web server, misalnya `htdocs`.
2. Buat database MySQL dengan nama `sig`.
3. Import file SQL database yang tersedia.
4. Salin `.env.example` menjadi `.env`.
5. Sesuaikan konfigurasi database pada file `.env`.
6. Jalankan Apache dan MySQL.
7. Akses aplikasi melalui browser.
Contoh alamat akses:
```text
http://localhost/UAS_SIG_Talitha/3_PovertyMapping/
```
## Cara Deploy ke Coolify
1. Push project ke repository Git.
2. Pastikan file `.env` tidak ikut terunggah.
3. Buat aplikasi baru di Coolify dari repository Git.
4. Arahkan deployment ke folder `3_PovertyMapping`.
5. Buat database MySQL pada Coolify.
6. Import file SQL database.
7. Isi Environment Variables pada Coolify:
```env
DB_HOST=host_database
DB_USER=user_database
DB_PASS=password_database
DB_NAME=nama_database
DB_PORT=3306
```
8. Jalankan deploy aplikasi.
9. Akses aplikasi melalui domain yang diberikan oleh Coolify.
## Catatan Keamanan
1. Password pengguna disimpan dalam bentuk hash.
2. File `.env` tidak diunggah ke repository.
3. Query database menggunakan prepared statement pada proses utama.
4. Hak akses dibedakan berdasarkan role pengguna.
5. Data masyarakat prasejahtera hanya digunakan untuk kebutuhan pemetaan dan monitoring bantuan.
## Catatan Pengembangan
Sistem ini dikembangkan untuk kebutuhan tugas mata kuliah Sistem Informasi Geografis. Aplikasi masih dapat dikembangkan lebih lanjut, seperti:
- penambahan filter berdasarkan kecamatan atau kelurahan;
- integrasi laporan PDF;
- analisis spasial lebih lanjut;
- notifikasi tindak lanjut laporan;
- validasi data kependudukan yang lebih lengkap;
- visualisasi bantuan berdasarkan sumber bantuan;
- relasi histori bantuan dengan rumah ibadah secara penuh melalui `masjid_id`.
## Kesimpulan
WebGIS Poverty Mapping Kota Pontianak merupakan aplikasi pemetaan berbasis web yang membantu visualisasi data masyarakat prasejahtera, laporan masyarakat, histori bantuan, dan rumah ibadah. Sistem ini mendukung proses monitoring bantuan melalui peta digital, dashboard, role pengguna, dan data yang dapat diunduh. Dengan adanya fitur laporan cepat dan histori bantuan, sistem dapat menjadi media pendukung dalam pengelolaan data sosial masyarakat prasejahtera di Kota Pontianak.