Compare commits

...

7 Commits

Author SHA1 Message Date
destra 5fdaa8f726 fix: add index redirects 2026-06-10 23:56:18 +07:00
destra b87cdbcdfc fix: create missing spbu tables 2026-06-10 23:03:53 +07:00
destra ebf0ae8bd1 debug: check users 2026-06-10 22:55:29 +07:00
destra e107eed06b fix: remove hardcoded webgis_kemiskinan database" 2026-06-10 20:50:03 +07:00
destra cd7684d8f9 chore: update composer.json 2026-06-10 18:18:15 +07:00
destra 4b0335953d chore: update readme geopoverty 2026-06-10 18:05:18 +07:00
destra b0d46d00ff feat: Add composer.json untuk server PHP 2026-06-10 18:04:48 +07:00
8 changed files with 85 additions and 10 deletions
+8
View File
@@ -0,0 +1,8 @@
{
"name": "destra/webgis-uas",
"description": "WebGIS terpadu untuk UAS",
"require": {
"php": "^8.2",
"ext-mysqli": "*"
}
}
+3
View File
@@ -0,0 +1,3 @@
<?php
header("Location: index.html");
exit;
+8 -8
View File
@@ -2,7 +2,7 @@
## 📌 Deskripsi Proyek ## 📌 Deskripsi Proyek
**GeoPoverty** adalah aplikasi **WebGIS interaktif berbasis LeafletJS, PHP, dan MySQL** yang dirancang khusus untuk memetakan keluarga prasejahtera (kemiskinan) dan rumah ibadah. **GeoPoverty** adalah aplikasi **WebGIS interaktif berbasis LeafletJS, PHP, dan MySQL** yang dirancang khusus untuk memetakan keluarga prasejahtera (kemiskinan) dan rumah ibadah .
Tujuan utama dari sistem ini adalah untuk membantu identifikasi dan distribusi bantuan sosial agar lebih tepat sasaran. Aplikasi ini menggunakan konsep *buffer radius* (zona jangkauan) rumah ibadah untuk memantau rumah mana saja yang masuk ke dalam radius bantuan dan mana yang belum terjangkau. Tujuan utama dari sistem ini adalah untuk membantu identifikasi dan distribusi bantuan sosial agar lebih tepat sasaran. Aplikasi ini menggunakan konsep *buffer radius* (zona jangkauan) rumah ibadah untuk memantau rumah mana saja yang masuk ke dalam radius bantuan dan mana yang belum terjangkau.
@@ -15,10 +15,10 @@ Tujuan utama dari sistem ini adalah untuk membantu identifikasi dan distribusi b
* Menyimpan informasi detail seperti Nama Kepala Keluarga, Jumlah Anggota KK, dan Alamat. * Menyimpan informasi detail seperti Nama Kepala Keluarga, Jumlah Anggota KK, dan Alamat.
* Tampil sebagai marker interaktif di atas peta. * Tampil sebagai marker interaktif di atas peta.
### 2. 🕌 Manajemen Data Rumah Ibadah ### 2. 🕌 Manajemen Data Rumah Ibadah (Masjid)
* Pemetaan lokasi rumah ibadah beserta penanggung jawab (PIC). * Pemetaan lokasi masjid beserta penanggung jawab (PIC).
* **Fitur Radius (Buffer):** Secara otomatis menggambar lingkaran dengan radius 500 meter di sekitar rumah ibadah. * **Fitur Radius (Buffer):** Secara otomatis menggambar lingkaran dengan radius 500 meter di sekitar masjid.
* Memudahkan identifikasi keluarga prasejahtera yang berada di dalam maupun di luar zona jangkauan bantuan rumah ibadah tersebut. * Memudahkan identifikasi keluarga prasejahtera yang berada di dalam maupun di luar zona jangkauan bantuan masjid tersebut.
### 3. 📢 Sistem Laporan Warga & Pesan ### 3. 📢 Sistem Laporan Warga & Pesan
* Memungkinkan warga untuk melaporkan kondisi sosial atau keluarga yang membutuhkan bantuan di sekitarnya. * Memungkinkan warga untuk melaporkan kondisi sosial atau keluarga yang membutuhkan bantuan di sekitarnya.
@@ -26,11 +26,11 @@ Tujuan utama dari sistem ini adalah untuk membantu identifikasi dan distribusi b
### 4. 🗺️ Simulasi Rute (Routing) ### 4. 🗺️ Simulasi Rute (Routing)
* Integrasi Leaflet Routing Machine. * Integrasi Leaflet Routing Machine.
* Mampu menyimulasikan dan menggambar rute jalan dari titik posko/rumah ibadah menuju rumah tujuan penerima bantuan. * Mampu menyimulasikan dan menggambar rute jalan dari titik posko/masjid menuju rumah tujuan penerima bantuan.
### 5. 🖨️ Ekspor Data & Laporan ### 5. 🖨️ Ekspor Data & Laporan
* **Cetak Peta (PDF):** Mengekspor tampilan peta saat ini ke dalam format PDF menggunakan tangkapan layar otomatis. * **Cetak Peta (PDF):** Mengekspor tampilan peta saat ini ke dalam format PDF menggunakan tangkapan layar otomatis.
* **Unduh Data (CSV):** Mengunduh data atribut kemiskinan dan rumah ibadah ke format CSV untuk analisis lanjutan. * **Unduh Data (CSV):** Mengunduh data atribut kemiskinan dan masjid ke format CSV untuk analisis lanjutan.
--- ---
@@ -51,7 +51,7 @@ Tujuan utama dari sistem ini adalah untuk membantu identifikasi dan distribusi b
Sistem ini terhubung ke MySQL dan secara otomatis membuat tabel jika belum ada (*Auto Bootstrap*). Tabel utama meliputi: Sistem ini terhubung ke MySQL dan secara otomatis membuat tabel jika belum ada (*Auto Bootstrap*). Tabel utama meliputi:
1. **`kemiskinan`**: Menyimpan identitas, jumlah anggota, alamat, serta koordinat (Latitude & Longitude) keluarga. 1. **`kemiskinan`**: Menyimpan identitas, jumlah anggota, alamat, serta koordinat (Latitude & Longitude) keluarga.
2. **`masjid`**: Menyimpan data rumah ibadah, PIC, koordinat, serta besaran radius cakupan bantuan (default: 500m). 2. **`masjid`**: Menyimpan data masjid, PIC, koordinat, serta besaran radius cakupan bantuan (default: 500m).
3. **`laporan`**: Menyimpan data laporan dari warga beserta bukti foto dan titik koordinat temuan. 3. **`laporan`**: Menyimpan data laporan dari warga beserta bukti foto dan titik koordinat temuan.
4. **`pesan`**: Menyimpan pesan/kontak masuk dari pengunjung. 4. **`pesan`**: Menyimpan pesan/kontak masuk dari pengunjung.
+3
View File
@@ -0,0 +1,3 @@
<?php
header("Location: index.html");
exit;
+13
View File
@@ -0,0 +1,13 @@
<?php
require 'koneksi.php';
$result = mysqli_query($conn, "SELECT id, username, role FROM pengguna");
$data = [];
while ($row = mysqli_fetch_assoc($result)) {
$data[] = $row;
}
header('Content-Type: application/json');
echo json_encode($data, JSON_PRETTY_PRINT);
-1
View File
@@ -15,7 +15,6 @@ mysqli_set_charset($conn, "utf8mb4");
// Helper: tambah kolom hanya jika belum ada // Helper: tambah kolom hanya jika belum ada
function addColumnIfNotExists($conn, $table, $column, $definition) function addColumnIfNotExists($conn, $table, $column, $definition)
{ {
$db = mysqli_select_db($conn, 'webgis_kemiskinan') ? 'webgis_kemiskinan' : '';
$check = mysqli_query( $check = mysqli_query(
$conn, $conn,
"SELECT COUNT(*) as cnt FROM information_schema.COLUMNS "SELECT COUNT(*) as cnt FROM information_schema.COLUMNS
+3
View File
@@ -0,0 +1,3 @@
<?php
header("Location: index.html");
exit;
+47 -1
View File
@@ -13,6 +13,48 @@ if (!$conn) {
mysqli_set_charset($conn, "utf8mb4"); mysqli_set_charset($conn, "utf8mb4");
$bootstrapQueries = [ $bootstrapQueries = [
// SPBU
"CREATE TABLE IF NOT EXISTS spbu (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(255) NOT NULL,
no_spbu VARCHAR(100) NOT NULL,
status ENUM('24jam','tidak') NOT NULL,
latitude DOUBLE NOT NULL,
longitude DOUBLE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)",
// Jalan
"CREATE TABLE IF NOT EXISTS jalan (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(255) NOT NULL,
status ENUM(
'Jalan Nasional',
'Jalan Provinsi',
'Jalan Kabupaten'
) NOT NULL,
panjang DOUBLE NOT NULL,
geom LONGTEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)",
// Kavling
"CREATE TABLE IF NOT EXISTS kavling (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(255) NOT NULL,
status ENUM(
'SHM',
'HGB',
'HGU',
'HP'
) NOT NULL,
luas DOUBLE NOT NULL,
geom LONGTEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)",
// Kemiskinan
"CREATE TABLE IF NOT EXISTS kemiskinan ( "CREATE TABLE IF NOT EXISTS kemiskinan (
id INT AUTO_INCREMENT PRIMARY KEY, id INT AUTO_INCREMENT PRIMARY KEY,
nama_kepala_keluarga VARCHAR(150) NOT NULL, nama_kepala_keluarga VARCHAR(150) NOT NULL,
@@ -22,6 +64,8 @@ $bootstrapQueries = [
longitude DOUBLE NOT NULL, longitude DOUBLE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)", )",
// Masjid
"CREATE TABLE IF NOT EXISTS masjid ( "CREATE TABLE IF NOT EXISTS masjid (
id INT AUTO_INCREMENT PRIMARY KEY, id INT AUTO_INCREMENT PRIMARY KEY,
nama_masjid VARCHAR(150) NOT NULL, nama_masjid VARCHAR(150) NOT NULL,
@@ -35,6 +79,8 @@ $bootstrapQueries = [
]; ];
foreach ($bootstrapQueries as $query) { foreach ($bootstrapQueries as $query) {
mysqli_query($conn, $query); if (!mysqli_query($conn, $query)) {
die(mysqli_error($conn));
}
} }
?> ?>