add files

This commit is contained in:
2026-06-10 19:23:50 +07:00
parent acbd9a4842
commit a9239d18cc
41 changed files with 7839 additions and 0 deletions
+136
View File
@@ -0,0 +1,136 @@
<?php
// ============================================================
// api.php REST API untuk WebGIS SPBU Pontianak
// Endpoint:
// GET api.php → ambil semua SPBU
// POST api.php → tambah SPBU baru
// PUT api.php?id=N → update SPBU
// DELETE api.php?id=N → hapus SPBU
// ============================================================
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { exit(0); }
require_once 'config.php';
$method = $_SERVER['REQUEST_METHOD'];
$id = isset($_GET['id']) ? (int) $_GET['id'] : null;
// ── Ambil semua SPBU ─────────────────────────────────────────
if ($method === 'GET') {
$conn = getConnection();
$res = $conn->query(
"SELECT id, nama_spbu, nomor_wa, status_24jam,
latitude, longitude, created_at
FROM spbu ORDER BY created_at DESC"
);
$data = [];
while ($row = $res->fetch_assoc()) {
$row['id'] = (int) $row['id'];
$row['latitude'] = (float) $row['latitude'];
$row['longitude'] = (float) $row['longitude'];
$data[] = $row;
}
echo json_encode(['status' => 'success', 'data' => $data]);
$conn->close();
exit;
}
// ── Tambah SPBU baru ─────────────────────────────────────────
if ($method === 'POST') {
$body = json_decode(file_get_contents('php://input'), true);
$nama = trim($body['nama_spbu'] ?? '');
$wa = trim($body['nomor_wa'] ?? '');
$status = in_array($body['status_24jam'] ?? '', ['yes','no'])
? $body['status_24jam'] : 'no';
$lat = isset($body['latitude']) ? (float) $body['latitude'] : null;
$lng = isset($body['longitude']) ? (float) $body['longitude'] : null;
if (!$nama || !$wa || $lat === null || $lng === null) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap']);
exit;
}
$conn = getConnection();
$stmt = $conn->prepare(
"INSERT INTO spbu (nama_spbu, nomor_wa, status_24jam, latitude, longitude)
VALUES (?, ?, ?, ?, ?)"
);
$stmt->bind_param('sssdd', $nama, $wa, $status, $lat, $lng);
if ($stmt->execute()) {
echo json_encode([
'status' => 'success',
'message' => 'SPBU berhasil ditambahkan',
'id' => $stmt->insert_id
]);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
// ── Update SPBU ──────────────────────────────────────────────
if ($method === 'PUT' && $id) {
$body = json_decode(file_get_contents('php://input'), true);
$nama = trim($body['nama_spbu'] ?? '');
$wa = trim($body['nomor_wa'] ?? '');
$status = in_array($body['status_24jam'] ?? '', ['yes','no'])
? $body['status_24jam'] : 'no';
$lat = isset($body['latitude']) ? (float) $body['latitude'] : null;
$lng = isset($body['longitude']) ? (float) $body['longitude'] : null;
if (!$nama || !$wa || $lat === null || $lng === null) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap']);
exit;
}
$conn = getConnection();
$stmt = $conn->prepare(
"UPDATE spbu SET nama_spbu=?, nomor_wa=?, status_24jam=?,
latitude=?, longitude=?
WHERE id=?"
);
$stmt->bind_param('sssddi', $nama, $wa, $status, $lat, $lng, $id);
if ($stmt->execute()) {
echo json_encode(['status' => 'success', 'message' => 'SPBU berhasil diupdate']);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
// ── Hapus SPBU ───────────────────────────────────────────────
if ($method === 'DELETE' && $id) {
$conn = getConnection();
$stmt = $conn->prepare("DELETE FROM spbu WHERE id=?");
$stmt->bind_param('i', $id);
if ($stmt->execute()) {
echo json_encode(['status' => 'success', 'message' => 'SPBU berhasil dihapus']);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
http_response_code(405);
echo json_encode(['status' => 'error', 'message' => 'Method tidak diizinkan']);
+151
View File
@@ -0,0 +1,151 @@
<?php
// ============================================================
// api_jalan.php REST API CRUD Data Jalan (Polyline)
// GET api_jalan.php → semua data jalan
// GET api_jalan.php?id=N → satu data jalan
// POST api_jalan.php → tambah jalan
// PUT api_jalan.php?id=N → update jalan
// DELETE api_jalan.php?id=N → hapus jalan
// ============================================================
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { exit(0); }
require_once 'config.php';
$method = $_SERVER['REQUEST_METHOD'];
$id = isset($_GET['id']) ? (int) $_GET['id'] : null;
// ── GET ──────────────────────────────────────────────────────
if ($method === 'GET') {
$conn = getConnection();
if ($id) {
$stmt = $conn->prepare("SELECT * FROM jalan WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$row = $stmt->get_result()->fetch_assoc();
if ($row) {
$row['id'] = (int) $row['id'];
$row['panjang_meter'] = (float) $row['panjang_meter'];
$row['geojson'] = json_decode($row['geojson']);
echo json_encode(['status' => 'success', 'data' => $row]);
} else {
http_response_code(404);
echo json_encode(['status' => 'error', 'message' => 'Data tidak ditemukan']);
}
$stmt->close();
} else {
$res = $conn->query("SELECT * FROM jalan ORDER BY created_at DESC");
$data = [];
while ($row = $res->fetch_assoc()) {
$row['id'] = (int) $row['id'];
$row['panjang_meter'] = (float) $row['panjang_meter'];
$row['geojson'] = json_decode($row['geojson']);
$data[] = $row;
}
echo json_encode(['status' => 'success', 'data' => $data]);
}
$conn->close();
exit;
}
// ── POST (Tambah) ─────────────────────────────────────────────
if ($method === 'POST') {
$body = json_decode(file_get_contents('php://input'), true);
$nama = trim($body['nama_jalan'] ?? '');
$status = $body['status_jalan'] ?? '';
$panjang = (float) ($body['panjang_meter'] ?? 0);
$geojson = isset($body['geojson'])
? json_encode($body['geojson'])
: null;
$valid_status = ['Nasional', 'Provinsi', 'Kabupaten'];
if (!$nama || !in_array($status, $valid_status) || !$geojson || $panjang <= 0) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap atau tidak valid']);
exit;
}
$conn = getConnection();
$stmt = $conn->prepare(
"INSERT INTO jalan (nama_jalan, status_jalan, panjang_meter, geojson)
VALUES (?, ?, ?, ?)"
);
$stmt->bind_param('ssds', $nama, $status, $panjang, $geojson);
if ($stmt->execute()) {
echo json_encode([
'status' => 'success',
'message' => 'Data jalan berhasil ditambahkan',
'id' => $stmt->insert_id
]);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
// ── PUT (Update) ──────────────────────────────────────────────
if ($method === 'PUT' && $id) {
$body = json_decode(file_get_contents('php://input'), true);
$nama = trim($body['nama_jalan'] ?? '');
$status = $body['status_jalan'] ?? '';
$panjang = (float) ($body['panjang_meter'] ?? 0);
$geojson = isset($body['geojson'])
? json_encode($body['geojson'])
: null;
$valid_status = ['Nasional', 'Provinsi', 'Kabupaten'];
if (!$nama || !in_array($status, $valid_status) || !$geojson || $panjang <= 0) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap atau tidak valid']);
exit;
}
$conn = getConnection();
$stmt = $conn->prepare(
"UPDATE jalan SET nama_jalan=?, status_jalan=?, panjang_meter=?, geojson=?
WHERE id=?"
);
$stmt->bind_param('ssdsi', $nama, $status, $panjang, $geojson, $id);
if ($stmt->execute()) {
echo json_encode(['status' => 'success', 'message' => 'Data jalan berhasil diperbarui']);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
// ── DELETE ────────────────────────────────────────────────────
if ($method === 'DELETE' && $id) {
$conn = getConnection();
$stmt = $conn->prepare("DELETE FROM jalan WHERE id=?");
$stmt->bind_param('i', $id);
if ($stmt->execute()) {
echo json_encode(['status' => 'success', 'message' => 'Data jalan berhasil dihapus']);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
http_response_code(405);
echo json_encode(['status' => 'error', 'message' => 'Method tidak diizinkan']);
+146
View File
@@ -0,0 +1,146 @@
<?php
// ============================================================
// api_kerusakan.php REST API untuk Titik Kerusakan Jalan
// Endpoint:
// GET api_kerusakan.php → ambil semua titik kerusakan
// POST api_kerusakan.php → tambah titik baru
// PUT api_kerusakan.php?id=N → update titik
// DELETE api_kerusakan.php?id=N → hapus titik
// ============================================================
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { exit(0); }
require_once 'config.php';
$method = $_SERVER['REQUEST_METHOD'];
$id = isset($_GET['id']) ? (int) $_GET['id'] : null;
// ── GET: Ambil semua titik kerusakan ──────────────────────────
if ($method === 'GET') {
$conn = getConnection();
$res = $conn->query(
"SELECT id, nama_kerusakan, tingkat_kerusakan, deskripsi,
latitude, longitude, created_at, updated_at
FROM kerusakan_jalan
ORDER BY created_at DESC"
);
$data = [];
while ($row = $res->fetch_assoc()) {
$row['id'] = (int) $row['id'];
$row['latitude'] = (float) $row['latitude'];
$row['longitude'] = (float) $row['longitude'];
$data[] = $row;
}
echo json_encode(['status' => 'success', 'data' => $data]);
$conn->close();
exit;
}
// ── POST: Tambah titik kerusakan baru ─────────────────────────
if ($method === 'POST') {
$body = json_decode(file_get_contents('php://input'), true);
$nama = trim($body['nama_kerusakan'] ?? '');
$tingkat = $body['tingkat_kerusakan'] ?? '';
$deskripsi = trim($body['deskripsi'] ?? '');
$lat = isset($body['latitude']) ? (float) $body['latitude'] : null;
$lng = isset($body['longitude']) ? (float) $body['longitude'] : null;
// Validasi tingkat kerusakan
$allowedTingkat = ['Rusak Berat', 'Rusak Sedang', 'Rusak Ringan'];
if (!in_array($tingkat, $allowedTingkat)) {
$tingkat = 'Rusak Sedang';
}
if (!$nama || $lat === null || $lng === null) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Nama dan koordinat wajib diisi']);
exit;
}
$conn = getConnection();
$stmt = $conn->prepare(
"INSERT INTO kerusakan_jalan (nama_kerusakan, tingkat_kerusakan, deskripsi, latitude, longitude)
VALUES (?, ?, ?, ?, ?)"
);
$stmt->bind_param('sssdd', $nama, $tingkat, $deskripsi, $lat, $lng);
if ($stmt->execute()) {
echo json_encode([
'status' => 'success',
'message' => 'Titik kerusakan berhasil ditambahkan',
'id' => $stmt->insert_id
]);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
// ── PUT: Update titik kerusakan ───────────────────────────────
if ($method === 'PUT' && $id) {
$body = json_decode(file_get_contents('php://input'), true);
$nama = trim($body['nama_kerusakan'] ?? '');
$tingkat = $body['tingkat_kerusakan'] ?? '';
$deskripsi = trim($body['deskripsi'] ?? '');
$lat = isset($body['latitude']) ? (float) $body['latitude'] : null;
$lng = isset($body['longitude']) ? (float) $body['longitude'] : null;
$allowedTingkat = ['Rusak Berat', 'Rusak Sedang', 'Rusak Ringan'];
if (!in_array($tingkat, $allowedTingkat)) {
$tingkat = 'Rusak Sedang';
}
if (!$nama || $lat === null || $lng === null) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap']);
exit;
}
$conn = getConnection();
$stmt = $conn->prepare(
"UPDATE kerusakan_jalan
SET nama_kerusakan=?, tingkat_kerusakan=?, deskripsi=?, latitude=?, longitude=?
WHERE id=?"
);
$stmt->bind_param('sssddi', $nama, $tingkat, $deskripsi, $lat, $lng, $id);
if ($stmt->execute()) {
echo json_encode(['status' => 'success', 'message' => 'Titik kerusakan berhasil diperbarui']);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
// ── DELETE: Hapus titik kerusakan ─────────────────────────────
if ($method === 'DELETE' && $id) {
$conn = getConnection();
$stmt = $conn->prepare("DELETE FROM kerusakan_jalan WHERE id=?");
$stmt->bind_param('i', $id);
if ($stmt->execute()) {
echo json_encode(['status' => 'success', 'message' => 'Titik kerusakan berhasil dihapus']);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
http_response_code(405);
echo json_encode(['status' => 'error', 'message' => 'Method tidak diizinkan']);
+154
View File
@@ -0,0 +1,154 @@
<?php
// ============================================================
// api_parsil.php REST API CRUD Data Parsil Tanah (Polygon)
// GET api_parsil.php → semua data parsil
// GET api_parsil.php?id=N → satu data parsil
// POST api_parsil.php → tambah parsil
// PUT api_parsil.php?id=N → update parsil
// DELETE api_parsil.php?id=N → hapus parsil
// ============================================================
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { exit(0); }
require_once 'config.php';
$method = $_SERVER['REQUEST_METHOD'];
$id = isset($_GET['id']) ? (int) $_GET['id'] : null;
// ── GET ──────────────────────────────────────────────────────
if ($method === 'GET') {
$conn = getConnection();
if ($id) {
$stmt = $conn->prepare("SELECT * FROM parsil_tanah WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$row = $stmt->get_result()->fetch_assoc();
if ($row) {
$row['id'] = (int) $row['id'];
$row['luas_meter2'] = (float) $row['luas_meter2'];
$row['geojson'] = json_decode($row['geojson']);
echo json_encode(['status' => 'success', 'data' => $row]);
} else {
http_response_code(404);
echo json_encode(['status' => 'error', 'message' => 'Data tidak ditemukan']);
}
$stmt->close();
} else {
$res = $conn->query("SELECT * FROM parsil_tanah ORDER BY created_at DESC");
$data = [];
while ($row = $res->fetch_assoc()) {
$row['id'] = (int) $row['id'];
$row['luas_meter2'] = (float) $row['luas_meter2'];
$row['geojson'] = json_decode($row['geojson']);
$data[] = $row;
}
echo json_encode(['status' => 'success', 'data' => $data]);
}
$conn->close();
exit;
}
// ── POST (Tambah) ─────────────────────────────────────────────
if ($method === 'POST') {
$body = json_decode(file_get_contents('php://input'), true);
$nama = trim($body['nama_pemilik'] ?? '');
$no_sert = trim($body['no_sertifikat'] ?? '');
$status = $body['status_sertifikat'] ?? '';
$luas = (float) ($body['luas_meter2'] ?? 0);
$geojson = isset($body['geojson'])
? json_encode($body['geojson'])
: null;
$valid_status = ['SHM', 'HGB', 'HGU', 'HP'];
if (!$nama || !$no_sert || !in_array($status, $valid_status) || !$geojson || $luas <= 0) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap atau tidak valid']);
exit;
}
$conn = getConnection();
$stmt = $conn->prepare(
"INSERT INTO parsil_tanah (nama_pemilik, no_sertifikat, status_sertifikat, luas_meter2, geojson)
VALUES (?, ?, ?, ?, ?)"
);
$stmt->bind_param('sssds', $nama, $no_sert, $status, $luas, $geojson);
if ($stmt->execute()) {
echo json_encode([
'status' => 'success',
'message' => 'Data parsil berhasil ditambahkan',
'id' => $stmt->insert_id
]);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
// ── PUT (Update) ──────────────────────────────────────────────
if ($method === 'PUT' && $id) {
$body = json_decode(file_get_contents('php://input'), true);
$nama = trim($body['nama_pemilik'] ?? '');
$no_sert = trim($body['no_sertifikat'] ?? '');
$status = $body['status_sertifikat'] ?? '';
$luas = (float) ($body['luas_meter2'] ?? 0);
$geojson = isset($body['geojson'])
? json_encode($body['geojson'])
: null;
$valid_status = ['SHM', 'HGB', 'HGU', 'HP'];
if (!$nama || !$no_sert || !in_array($status, $valid_status) || !$geojson || $luas <= 0) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap atau tidak valid']);
exit;
}
$conn = getConnection();
$stmt = $conn->prepare(
"UPDATE parsil_tanah
SET nama_pemilik=?, no_sertifikat=?, status_sertifikat=?, luas_meter2=?, geojson=?
WHERE id=?"
);
$stmt->bind_param('sssdsi', $nama, $no_sert, $status, $luas, $geojson, $id);
if ($stmt->execute()) {
echo json_encode(['status' => 'success', 'message' => 'Data parsil berhasil diperbarui']);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
// ── DELETE ────────────────────────────────────────────────────
if ($method === 'DELETE' && $id) {
$conn = getConnection();
$stmt = $conn->prepare("DELETE FROM parsil_tanah WHERE id=?");
$stmt->bind_param('i', $id);
if ($stmt->execute()) {
echo json_encode(['status' => 'success', 'message' => 'Data parsil berhasil dihapus']);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
http_response_code(405);
echo json_encode(['status' => 'error', 'message' => 'Method tidak diizinkan']);
+22
View File
@@ -0,0 +1,22 @@
<?php
// ============================================================
// config.php Konfigurasi Koneksi Database
// ============================================================
define('DB_HOST', getenv('DB_HOST') ?: 'localhost');
define('DB_USER', getenv('DB_USER') ?: 'root');
define('DB_PASS', getenv('DB_PASSWORD') ?: '');
define('DB_NAME', getenv('DB_NAME') ?: 'webgis_jalan_parsil');
function getConnection(): mysqli {
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($conn->connect_error) {
http_response_code(500);
die(json_encode([
'status' => 'error',
'message' => 'Koneksi database gagal: ' . $conn->connect_error
]));
}
$conn->set_charset('utf8mb4');
return $conn;
}
+74
View File
@@ -0,0 +1,74 @@
-- ============================================================
-- WebGIS Manajemen Jalan & Parsil Tanah
-- Database Structure
-- Geometri disimpan dalam format GeoJSON (TEXT)
-- ============================================================
CREATE DATABASE IF NOT EXISTS webgis_jalan_parsil
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE webgis_jalan_parsil;
-- ============================================================
-- Tabel: jalan (Data Line / Polyline)
-- ============================================================
CREATE TABLE IF NOT EXISTS jalan (
id INT(11) NOT NULL AUTO_INCREMENT,
nama_jalan VARCHAR(200) NOT NULL,
status_jalan ENUM('Nasional','Provinsi','Kabupaten') NOT NULL,
panjang_meter DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT 'Dihitung otomatis oleh LeafletJS (meter)',
geojson TEXT NOT NULL COMMENT 'Geometri GeoJSON LineString',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Data jalan berupa polyline GeoJSON';
-- ============================================================
-- Tabel: parsil_tanah (Data Polygon)
-- ============================================================
CREATE TABLE IF NOT EXISTS parsil_tanah (
id INT(11) NOT NULL AUTO_INCREMENT,
nama_pemilik VARCHAR(200) NOT NULL,
no_sertifikat VARCHAR(100) NOT NULL,
status_sertifikat ENUM('SHM','HGB','HGU','HP') NOT NULL,
luas_meter2 DECIMAL(14,2) NOT NULL DEFAULT 0.00 COMMENT 'Dihitung otomatis oleh LeafletJS (m²)',
geojson TEXT NOT NULL COMMENT 'Geometri GeoJSON Polygon',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Data parsil tanah berupa polygon GeoJSON';
-- ============================================================
-- Sample data Jalan (di sekitar Pontianak)
-- ============================================================
INSERT INTO jalan (nama_jalan, status_jalan, panjang_meter, geojson) VALUES
(
'Jl. Ahmad Yani', 'Nasional', 2450.50,
'{"type":"LineString","coordinates":[[109.3300,-0.0200],[109.3380,-0.0240],[109.3450,-0.0270],[109.3520,-0.0290]]}'
),
(
'Jl. Sultan Syarif Abdurrahman', 'Provinsi', 1820.30,
'{"type":"LineString","coordinates":[[109.3250,-0.0350],[109.3310,-0.0330],[109.3370,-0.0310],[109.3420,-0.0290]]}'
),
(
'Jl. Parit H. Husin II', 'Kabupaten', 980.75,
'{"type":"LineString","coordinates":[[109.3480,-0.0420],[109.3510,-0.0400],[109.3540,-0.0380]]}'
);
-- ============================================================
-- Sample data Parsil Tanah (di sekitar Pontianak)
-- ============================================================
INSERT INTO parsil_tanah (nama_pemilik, no_sertifikat, status_sertifikat, luas_meter2, geojson) VALUES
(
'Budi Santoso', 'SHM-PTK-001234', 'SHM', 520.00,
'{"type":"Polygon","coordinates":[[[109.3320,-0.0280],[109.3330,-0.0280],[109.3330,-0.0290],[109.3320,-0.0290],[109.3320,-0.0280]]]}'
),
(
'PT. Maju Jaya', 'HGB-PTK-005678', 'HGB', 1250.00,
'{"type":"Polygon","coordinates":[[[109.3390,-0.0320],[109.3410,-0.0320],[109.3410,-0.0335],[109.3390,-0.0335],[109.3390,-0.0320]]]}'
),
(
'Koperasi Tani Makmur', 'HGU-PTK-009012', 'HGU', 3800.00,
'{"type":"Polygon","coordinates":[[[109.3460,-0.0380],[109.3490,-0.0380],[109.3490,-0.0405],[109.3460,-0.0405],[109.3460,-0.0380]]]}'
);
+1311
View File
File diff suppressed because it is too large Load Diff
+47
View File
@@ -0,0 +1,47 @@
-- ============================================================
-- MIGRATION: Tambah Tabel Kerusakan Jalan
-- Jalankan query ini di database webgis_jalan_parsil yang sudah ada
-- (JANGAN jalankan ulang database.sql yang lama, cukup file ini saja)
-- ============================================================
USE webgis_jalan_parsil;
-- ============================================================
-- Tabel: kerusakan_jalan (Data Point / Marker)
-- ============================================================
CREATE TABLE IF NOT EXISTS kerusakan_jalan (
id INT(11) NOT NULL AUTO_INCREMENT,
nama_kerusakan VARCHAR(250) NOT NULL COMMENT 'Nama atau deskripsi singkat lokasi kerusakan',
tingkat_kerusakan ENUM('Rusak Berat','Rusak Sedang','Rusak Ringan') NOT NULL DEFAULT 'Rusak Sedang',
deskripsi TEXT COMMENT 'Deskripsi detail kondisi kerusakan (opsional)',
latitude DECIMAL(10,7) NOT NULL COMMENT 'Koordinat lintang (dari klik peta)',
longitude DECIMAL(10,7) NOT NULL COMMENT 'Koordinat bujur (dari klik peta)',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
INDEX idx_tingkat (tingkat_kerusakan),
INDEX idx_coords (latitude, longitude)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Titik kerusakan jalan berupa point marker';
-- ============================================================
-- Sample data Kerusakan Jalan (di sekitar Pontianak)
-- ============================================================
INSERT INTO kerusakan_jalan (nama_kerusakan, tingkat_kerusakan, deskripsi, latitude, longitude) VALUES
(
'Lubang Besar Jl. Ahmad Yani KM3',
'Rusak Berat',
'Lubang berdiameter ±1.5 meter, kedalaman 30cm, berbahaya untuk kendaraan roda dua.',
-0.0240, 109.3380
),
(
'Retakan Panjang Jl. Sultan Syarif',
'Rusak Sedang',
'Retakan memanjang sepanjang ±20 meter di bahu jalan, perlu penanganan segera.',
-0.0330, 109.3310
),
(
'Aspal Terkelupas Jl. Parit H. Husin',
'Rusak Ringan',
'Permukaan aspal terkelupas dan aus, belum membentuk lubang namun licin saat hujan.',
-0.0400, 109.3510
);