first commit
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
// ============================================================
|
||||
// API – Manajemen Data Jalan (Line / Polyline)
|
||||
// Mendukung: GET (list & detail), POST (create),
|
||||
// PUT (update), DELETE (hapus)
|
||||
// ============================================================
|
||||
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'];
|
||||
$input = json_decode(file_get_contents('php://input'), true) ?? [];
|
||||
|
||||
// ── Router ───────────────────────────────────────────────────
|
||||
switch ($method) {
|
||||
|
||||
// ── READ (semua atau satu record) ────────────────────────
|
||||
case 'GET':
|
||||
if (isset($_GET['id'])) {
|
||||
$id = (int) $_GET['id'];
|
||||
$sql = "SELECT * FROM data_jalan WHERE id = ?";
|
||||
$stmt = $conn->prepare($sql);
|
||||
$stmt->bind_param('i', $id);
|
||||
$stmt->execute();
|
||||
$row = $stmt->get_result()->fetch_assoc();
|
||||
if ($row) {
|
||||
$row['geojson'] = json_decode($row['geojson']);
|
||||
jsonResponse(['status' => 'success', 'data' => $row]);
|
||||
} else {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Data tidak ditemukan'], 404);
|
||||
}
|
||||
} else {
|
||||
$sql = "SELECT * FROM data_jalan ORDER BY id DESC";
|
||||
$rows = $conn->query($sql)->fetch_all(MYSQLI_ASSOC);
|
||||
foreach ($rows as &$r) {
|
||||
$r['geojson'] = json_decode($r['geojson']);
|
||||
}
|
||||
jsonResponse(['status' => 'success', 'data' => $rows]);
|
||||
}
|
||||
break;
|
||||
|
||||
// ── CREATE ───────────────────────────────────────────────
|
||||
case 'POST':
|
||||
$nama_jalan = clean($input['nama_jalan'] ?? '');
|
||||
$status_jalan = clean($input['status_jalan'] ?? '');
|
||||
$panjang_m = (float) ($input['panjang_m'] ?? 0);
|
||||
$keterangan = clean($input['keterangan'] ?? '');
|
||||
$geojson = $input['geojson'] ?? null;
|
||||
|
||||
if (!$nama_jalan || !$status_jalan || !$geojson) {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Field nama_jalan, status_jalan, dan geojson wajib diisi'], 400);
|
||||
}
|
||||
|
||||
$geojsonStr = is_string($geojson) ? $geojson : json_encode($geojson);
|
||||
|
||||
$sql = "INSERT INTO data_jalan (nama_jalan, status_jalan, panjang_m, geojson, keterangan) VALUES (?, ?, ?, ?, ?)";
|
||||
$stmt = $conn->prepare($sql);
|
||||
$stmt->bind_param('ssdss', $nama_jalan, $status_jalan, $panjang_m, $geojsonStr, $keterangan);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
jsonResponse(['status' => 'success', 'message' => 'Data jalan berhasil ditambahkan', 'id' => $conn->insert_id], 201);
|
||||
} else {
|
||||
jsonResponse(['status' => 'error', 'message' => $conn->error], 500);
|
||||
}
|
||||
break;
|
||||
|
||||
// ── UPDATE ───────────────────────────────────────────────
|
||||
case 'PUT':
|
||||
$id = (int) ($input['id'] ?? 0);
|
||||
$nama_jalan = clean($input['nama_jalan'] ?? '');
|
||||
$status_jalan = clean($input['status_jalan'] ?? '');
|
||||
$panjang_m = (float) ($input['panjang_m'] ?? 0);
|
||||
$keterangan = clean($input['keterangan'] ?? '');
|
||||
$geojson = $input['geojson'] ?? null;
|
||||
|
||||
if (!$id || !$nama_jalan || !$status_jalan || !$geojson) {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Field id, nama_jalan, status_jalan, dan geojson wajib diisi'], 400);
|
||||
}
|
||||
|
||||
$geojsonStr = is_string($geojson) ? $geojson : json_encode($geojson);
|
||||
|
||||
$sql = "UPDATE data_jalan SET nama_jalan=?, status_jalan=?, panjang_m=?, geojson=?, keterangan=? WHERE id=?";
|
||||
$stmt = $conn->prepare($sql);
|
||||
$stmt->bind_param('ssdssi', $nama_jalan, $status_jalan, $panjang_m, $geojsonStr, $keterangan, $id);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
jsonResponse(['status' => 'success', 'message' => 'Data jalan berhasil diperbarui']);
|
||||
} else {
|
||||
jsonResponse(['status' => 'error', 'message' => $conn->error], 500);
|
||||
}
|
||||
break;
|
||||
|
||||
// ── DELETE ───────────────────────────────────────────────
|
||||
case 'DELETE':
|
||||
$id = (int) ($_GET['id'] ?? ($input['id'] ?? 0));
|
||||
|
||||
if (!$id) {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Parameter id wajib diisi'], 400);
|
||||
}
|
||||
|
||||
$stmt = $conn->prepare("DELETE FROM data_jalan WHERE id = ?");
|
||||
$stmt->bind_param('i', $id);
|
||||
|
||||
if ($stmt->execute() && $stmt->affected_rows > 0) {
|
||||
jsonResponse(['status' => 'success', 'message' => 'Data jalan berhasil dihapus']);
|
||||
} else {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Data tidak ditemukan atau gagal dihapus'], 404);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
jsonResponse(['status' => 'error', 'message' => 'Method tidak diizinkan'], 405);
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
// ============================================================
|
||||
// API – Manajemen Data Parsil Tanah (Polygon)
|
||||
// Mendukung: GET (list & detail), POST (create),
|
||||
// PUT (update), DELETE (hapus)
|
||||
// ============================================================
|
||||
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'];
|
||||
$input = json_decode(file_get_contents('php://input'), true) ?? [];
|
||||
|
||||
// ── Router ───────────────────────────────────────────────────
|
||||
switch ($method) {
|
||||
|
||||
// ── READ ─────────────────────────────────────────────────
|
||||
case 'GET':
|
||||
if (isset($_GET['id'])) {
|
||||
$id = (int) $_GET['id'];
|
||||
$stmt = $conn->prepare("SELECT * FROM data_parsil WHERE id = ?");
|
||||
$stmt->bind_param('i', $id);
|
||||
$stmt->execute();
|
||||
$row = $stmt->get_result()->fetch_assoc();
|
||||
if ($row) {
|
||||
$row['geojson'] = json_decode($row['geojson']);
|
||||
jsonResponse(['status' => 'success', 'data' => $row]);
|
||||
} else {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Data tidak ditemukan'], 404);
|
||||
}
|
||||
} else {
|
||||
$rows = $conn->query("SELECT * FROM data_parsil ORDER BY id DESC")->fetch_all(MYSQLI_ASSOC);
|
||||
foreach ($rows as &$r) {
|
||||
$r['geojson'] = json_decode($r['geojson']);
|
||||
}
|
||||
jsonResponse(['status' => 'success', 'data' => $rows]);
|
||||
}
|
||||
break;
|
||||
|
||||
// ── CREATE ───────────────────────────────────────────────
|
||||
case 'POST':
|
||||
$nama_parsil = clean($input['nama_parsil'] ?? '');
|
||||
$status_hak = clean($input['status_hak'] ?? '');
|
||||
$luas_m2 = (float) ($input['luas_m2'] ?? 0);
|
||||
$pemilik = clean($input['pemilik'] ?? '');
|
||||
$keterangan = clean($input['keterangan'] ?? '');
|
||||
$geojson = $input['geojson'] ?? null;
|
||||
|
||||
if (!$nama_parsil || !$status_hak || !$geojson) {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Field nama_parsil, status_hak, dan geojson wajib diisi'], 400);
|
||||
}
|
||||
|
||||
$geojsonStr = is_string($geojson) ? $geojson : json_encode($geojson);
|
||||
|
||||
$sql = "INSERT INTO data_parsil (nama_parsil, status_hak, luas_m2, geojson, pemilik, keterangan) VALUES (?, ?, ?, ?, ?, ?)";
|
||||
$stmt = $conn->prepare($sql);
|
||||
$stmt->bind_param('ssdsss', $nama_parsil, $status_hak, $luas_m2, $geojsonStr, $pemilik, $keterangan);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
jsonResponse(['status' => 'success', 'message' => 'Data parsil berhasil ditambahkan', 'id' => $conn->insert_id], 201);
|
||||
} else {
|
||||
jsonResponse(['status' => 'error', 'message' => $conn->error], 500);
|
||||
}
|
||||
break;
|
||||
|
||||
// ── UPDATE ───────────────────────────────────────────────
|
||||
case 'PUT':
|
||||
$id = (int) ($input['id'] ?? 0);
|
||||
$nama_parsil = clean($input['nama_parsil'] ?? '');
|
||||
$status_hak = clean($input['status_hak'] ?? '');
|
||||
$luas_m2 = (float) ($input['luas_m2'] ?? 0);
|
||||
$pemilik = clean($input['pemilik'] ?? '');
|
||||
$keterangan = clean($input['keterangan'] ?? '');
|
||||
$geojson = $input['geojson'] ?? null;
|
||||
|
||||
if (!$id || !$nama_parsil || !$status_hak || !$geojson) {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Field id, nama_parsil, status_hak, dan geojson wajib diisi'], 400);
|
||||
}
|
||||
|
||||
$geojsonStr = is_string($geojson) ? $geojson : json_encode($geojson);
|
||||
|
||||
$sql = "UPDATE data_parsil SET nama_parsil=?, status_hak=?, luas_m2=?, geojson=?, pemilik=?, keterangan=? WHERE id=?";
|
||||
$stmt = $conn->prepare($sql);
|
||||
$stmt->bind_param('ssdsssi', $nama_parsil, $status_hak, $luas_m2, $geojsonStr, $pemilik, $keterangan, $id);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
jsonResponse(['status' => 'success', 'message' => 'Data parsil berhasil diperbarui']);
|
||||
} else {
|
||||
jsonResponse(['status' => 'error', 'message' => $conn->error], 500);
|
||||
}
|
||||
break;
|
||||
|
||||
// ── DELETE ───────────────────────────────────────────────
|
||||
case 'DELETE':
|
||||
$id = (int) ($_GET['id'] ?? ($input['id'] ?? 0));
|
||||
|
||||
if (!$id) {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Parameter id wajib diisi'], 400);
|
||||
}
|
||||
|
||||
$stmt = $conn->prepare("DELETE FROM data_parsil WHERE id = ?");
|
||||
$stmt->bind_param('i', $id);
|
||||
|
||||
if ($stmt->execute() && $stmt->affected_rows > 0) {
|
||||
jsonResponse(['status' => 'success', 'message' => 'Data parsil berhasil dihapus']);
|
||||
} else {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Data tidak ditemukan atau gagal dihapus'], 404);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
jsonResponse(['status' => 'error', 'message' => 'Method tidak diizinkan'], 405);
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
// ============================================================
|
||||
// API – Manajemen Data SPBU (Point / Marker)
|
||||
// Mendukung: GET (list & detail), POST (create),
|
||||
// PUT (update), DELETE (hapus)
|
||||
// ============================================================
|
||||
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'];
|
||||
$input = json_decode(file_get_contents('php://input'), true) ?? [];
|
||||
|
||||
// ── Router ───────────────────────────────────────────────────
|
||||
switch ($method) {
|
||||
|
||||
// ── READ ─────────────────────────────────────────────────
|
||||
case 'GET':
|
||||
if (isset($_GET['id'])) {
|
||||
$id = (int) $_GET['id'];
|
||||
$stmt = $conn->prepare("SELECT * FROM data_spbu WHERE id = ?");
|
||||
$stmt->bind_param('i', $id);
|
||||
$stmt->execute();
|
||||
$row = $stmt->get_result()->fetch_assoc();
|
||||
if ($row) {
|
||||
$row['geojson'] = json_decode($row['geojson']);
|
||||
$row['buka_24jam'] = (bool) $row['buka_24jam'];
|
||||
jsonResponse(['status' => 'success', 'data' => $row]);
|
||||
} else {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Data tidak ditemukan'], 404);
|
||||
}
|
||||
} else {
|
||||
$rows = $conn->query("SELECT * FROM data_spbu ORDER BY id DESC")->fetch_all(MYSQLI_ASSOC);
|
||||
foreach ($rows as &$r) {
|
||||
$r['geojson'] = json_decode($r['geojson']);
|
||||
$r['buka_24jam'] = (bool) $r['buka_24jam'];
|
||||
}
|
||||
jsonResponse(['status' => 'success', 'data' => $rows]);
|
||||
}
|
||||
break;
|
||||
|
||||
// ── CREATE ───────────────────────────────────────────────
|
||||
case 'POST':
|
||||
$nama_spbu = clean($input['nama_spbu'] ?? '');
|
||||
$telepon = clean($input['telepon'] ?? '');
|
||||
$buka_24jam = isset($input['buka_24jam']) ? (int)(bool)$input['buka_24jam'] : 0;
|
||||
$lat = (float) ($input['lat'] ?? 0);
|
||||
$lng = (float) ($input['lng'] ?? 0);
|
||||
$geojson = $input['geojson'] ?? null;
|
||||
|
||||
if (!$nama_spbu || !$geojson) {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Field nama_spbu dan geojson wajib diisi'], 400);
|
||||
}
|
||||
|
||||
$geojsonStr = is_string($geojson) ? $geojson : json_encode($geojson);
|
||||
|
||||
$sql = "INSERT INTO data_spbu (nama_spbu, telepon, buka_24jam, lat, lng, geojson) VALUES (?, ?, ?, ?, ?, ?)";
|
||||
$stmt = $conn->prepare($sql);
|
||||
$stmt->bind_param('ssidds', $nama_spbu, $telepon, $buka_24jam, $lat, $lng, $geojsonStr);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
jsonResponse(['status' => 'success', 'message' => 'Data SPBU berhasil ditambahkan', 'id' => $conn->insert_id], 201);
|
||||
} else {
|
||||
jsonResponse(['status' => 'error', 'message' => $conn->error], 500);
|
||||
}
|
||||
break;
|
||||
|
||||
// ── UPDATE ───────────────────────────────────────────────
|
||||
case 'PUT':
|
||||
$id = (int) ($input['id'] ?? 0);
|
||||
$nama_spbu = clean($input['nama_spbu'] ?? '');
|
||||
$telepon = clean($input['telepon'] ?? '');
|
||||
$buka_24jam = isset($input['buka_24jam']) ? (int)(bool)$input['buka_24jam'] : 0;
|
||||
$lat = (float) ($input['lat'] ?? 0);
|
||||
$lng = (float) ($input['lng'] ?? 0);
|
||||
$geojson = $input['geojson'] ?? null;
|
||||
|
||||
if (!$id || !$nama_spbu || !$geojson) {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Field id, nama_spbu dan geojson wajib diisi'], 400);
|
||||
}
|
||||
|
||||
$geojsonStr = is_string($geojson) ? $geojson : json_encode($geojson);
|
||||
|
||||
$sql = "UPDATE data_spbu SET nama_spbu=?, telepon=?, buka_24jam=?, lat=?, lng=?, geojson=? WHERE id=?";
|
||||
$stmt = $conn->prepare($sql);
|
||||
$stmt->bind_param('ssiddsi', $nama_spbu, $telepon, $buka_24jam, $lat, $lng, $geojsonStr, $id);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
jsonResponse(['status' => 'success', 'message' => 'Data SPBU berhasil diperbarui']);
|
||||
} else {
|
||||
jsonResponse(['status' => 'error', 'message' => $conn->error], 500);
|
||||
}
|
||||
break;
|
||||
|
||||
// ── DELETE ───────────────────────────────────────────────
|
||||
case 'DELETE':
|
||||
$id = (int) ($_GET['id'] ?? ($input['id'] ?? 0));
|
||||
|
||||
if (!$id) {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Parameter id wajib diisi'], 400);
|
||||
}
|
||||
|
||||
$stmt = $conn->prepare("DELETE FROM data_spbu WHERE id = ?");
|
||||
$stmt->bind_param('i', $id);
|
||||
|
||||
if ($stmt->execute() && $stmt->affected_rows > 0) {
|
||||
jsonResponse(['status' => 'success', 'message' => 'Data SPBU berhasil dihapus']);
|
||||
} else {
|
||||
jsonResponse(['status' => 'error', 'message' => 'Data tidak ditemukan atau gagal dihapus'], 404);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
jsonResponse(['status' => 'error', 'message' => 'Method tidak diizinkan'], 405);
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
// ============================================================
|
||||
// Konfigurasi Koneksi Database
|
||||
// WebGIS – Manajemen Data Jalan & Parsil Tanah
|
||||
// ============================================================
|
||||
|
||||
define('DB_HOST', 'localhost');
|
||||
define('DB_USER', 'root'); // sesuaikan dengan user MySQL Anda
|
||||
define('DB_PASS', ''); // sesuaikan dengan password MySQL Anda
|
||||
define('DB_NAME', 'webgis_sig');
|
||||
define('DB_CHARSET', 'utf8mb4');
|
||||
|
||||
// ── Buat koneksi ─────────────────────────────────────────────
|
||||
$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(DB_CHARSET);
|
||||
|
||||
// ── Fungsi utilitas ──────────────────────────────────────────
|
||||
|
||||
/**
|
||||
* Kembalikan response JSON dan hentikan eksekusi.
|
||||
*/
|
||||
function jsonResponse(array $data, int $httpCode = 200): void
|
||||
{
|
||||
http_response_code($httpCode);
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitasi input string.
|
||||
*/
|
||||
function clean(string $value): string
|
||||
{
|
||||
return htmlspecialchars(strip_tags(trim($value)));
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
-- ============================================================
|
||||
-- DATABASE: webgis_sig
|
||||
-- Sistem Manajemen Data Jalan, Parsil Tanah & SPBU
|
||||
-- ============================================================
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS webgis_sig CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
USE webgis_sig;
|
||||
|
||||
-- ============================================================
|
||||
-- TABEL: data_jalan (Line / Polyline)
|
||||
-- Menyimpan data ruas jalan berdasarkan status jalan
|
||||
-- Geometri disimpan dalam format GeoJSON (LineString)
|
||||
-- ============================================================
|
||||
CREATE TABLE IF NOT EXISTS data_jalan (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_jalan VARCHAR(150) NOT NULL COMMENT 'Nama ruas jalan',
|
||||
status_jalan ENUM(
|
||||
'Jalan Nasional',
|
||||
'Jalan Provinsi',
|
||||
'Jalan Kabupaten'
|
||||
) NOT NULL COMMENT 'Status / klasifikasi jalan',
|
||||
panjang_m DECIMAL(12,2) DEFAULT 0.00 COMMENT 'Panjang jalan dalam meter (dihitung otomatis oleh LeafletJS)',
|
||||
geojson LONGTEXT NOT NULL COMMENT 'Geometri LineString dalam format GeoJSON',
|
||||
keterangan TEXT DEFAULT NULL COMMENT 'Keterangan tambahan',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ============================================================
|
||||
-- TABEL: data_parsil (Polygon)
|
||||
-- Menyimpan data parsil tanah / kavling berdasarkan status kepemilikan
|
||||
-- Geometri disimpan dalam format GeoJSON (Polygon)
|
||||
-- ============================================================
|
||||
CREATE TABLE IF NOT EXISTS data_parsil (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_parsil VARCHAR(150) NOT NULL COMMENT 'Nama / nomor parsil',
|
||||
status_hak ENUM(
|
||||
'Sertifikat Hak Milik',
|
||||
'Sertifikat Hak Guna Bangunan',
|
||||
'Sertifikat Hak Guna Usaha',
|
||||
'Sertifikat Hak Pakai'
|
||||
) NOT NULL COMMENT 'Status kepemilikan / hak atas tanah',
|
||||
luas_m2 DECIMAL(15,2) DEFAULT 0.00 COMMENT 'Luas tanah dalam meter persegi (dihitung otomatis oleh LeafletJS)',
|
||||
geojson LONGTEXT NOT NULL COMMENT 'Geometri Polygon dalam format GeoJSON',
|
||||
pemilik VARCHAR(150) DEFAULT NULL COMMENT 'Nama pemilik (opsional)',
|
||||
keterangan TEXT DEFAULT NULL COMMENT 'Keterangan tambahan',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ============================================================
|
||||
-- DATA CONTOH – Jalan
|
||||
-- ============================================================
|
||||
INSERT INTO data_jalan (nama_jalan, status_jalan, panjang_m, geojson, keterangan) VALUES
|
||||
(
|
||||
'Jl. Sudirman',
|
||||
'Jalan Nasional',
|
||||
1250.50,
|
||||
'{"type":"LineString","coordinates":[[106.8272,-6.2088],[106.8290,-6.2075],[106.8310,-6.2060],[106.8330,-6.2045]]}',
|
||||
'Jalan protokol pusat kota'
|
||||
),
|
||||
(
|
||||
'Jl. Gatot Subroto',
|
||||
'Jalan Provinsi',
|
||||
980.00,
|
||||
'{"type":"LineString","coordinates":[[106.8200,-6.2100],[106.8220,-6.2095],[106.8240,-6.2090],[106.8260,-6.2085]]}',
|
||||
'Penghubung antar kecamatan'
|
||||
),
|
||||
(
|
||||
'Jl. Pramuka',
|
||||
'Jalan Kabupaten',
|
||||
620.75,
|
||||
'{"type":"LineString","coordinates":[[106.8150,-6.2180],[106.8160,-6.2170],[106.8175,-6.2160],[106.8185,-6.2150]]}',
|
||||
'Jalan lingkungan kabupaten'
|
||||
);
|
||||
|
||||
-- ============================================================
|
||||
-- DATA CONTOH – Parsil Tanah
|
||||
-- ============================================================
|
||||
INSERT INTO data_parsil (nama_parsil, status_hak, luas_m2, geojson, pemilik, keterangan) VALUES
|
||||
(
|
||||
'Parsil A-001',
|
||||
'Sertifikat Hak Milik',
|
||||
1200.00,
|
||||
'{"type":"Polygon","coordinates":[[[106.8200,-6.2000],[106.8210,-6.2000],[106.8210,-6.2010],[106.8200,-6.2010],[106.8200,-6.2000]]]}',
|
||||
'Budi Santoso',
|
||||
'Tanah kavling perumahan'
|
||||
),
|
||||
(
|
||||
'Parsil B-002',
|
||||
'Sertifikat Hak Guna Bangunan',
|
||||
850.50,
|
||||
'{"type":"Polygon","coordinates":[[[106.8220,-6.2000],[106.8230,-6.2000],[106.8230,-6.2008],[106.8220,-6.2008],[106.8220,-6.2000]]]}',
|
||||
'PT. Maju Bersama',
|
||||
'Kavling komersial'
|
||||
),
|
||||
(
|
||||
'Parsil C-003',
|
||||
'Sertifikat Hak Guna Usaha',
|
||||
2500.00,
|
||||
'{"type":"Polygon","coordinates":[[[106.8240,-6.1990],[106.8260,-6.1990],[106.8260,-6.2010],[106.8240,-6.2010],[106.8240,-6.1990]]]}',
|
||||
'CV. Tani Makmur',
|
||||
'Lahan pertanian/perkebunan'
|
||||
),
|
||||
(
|
||||
'Parsil D-004',
|
||||
'Sertifikat Hak Pakai',
|
||||
4000.00,
|
||||
'{"type":"Polygon","coordinates":[[[106.8270,-6.1985],[106.8295,-6.1985],[106.8295,-6.2005],[106.8270,-6.2005],[106.8270,-6.1985]]]}',
|
||||
'Pemerintah Kota',
|
||||
'Lahan fasilitas umum'
|
||||
);
|
||||
|
||||
-- ============================================================
|
||||
-- TABEL: data_spbu (Point)
|
||||
-- Menyimpan data SPBU (Stasiun Pengisian Bahan Bakar Umum)
|
||||
-- Geometri disimpan dalam format GeoJSON (Point)
|
||||
-- ============================================================
|
||||
CREATE TABLE IF NOT EXISTS data_spbu (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_spbu VARCHAR(150) NOT NULL COMMENT 'Nama SPBU / nama cabang',
|
||||
telepon VARCHAR(20) DEFAULT NULL COMMENT 'Nomor telepon SPBU',
|
||||
buka_24jam TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 = buka 24 jam (marker hijau), 0 = tidak (marker merah)',
|
||||
lat DECIMAL(10,7) NOT NULL COMMENT 'Latitude titik SPBU',
|
||||
lng DECIMAL(10,7) NOT NULL COMMENT 'Longitude titik SPBU',
|
||||
geojson LONGTEXT NOT NULL COMMENT 'Geometri Point dalam format GeoJSON',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ============================================================
|
||||
-- DATA CONTOH – SPBU di Pontianak
|
||||
-- ============================================================
|
||||
INSERT INTO data_spbu (nama_spbu, telepon, buka_24jam, lat, lng, geojson) VALUES
|
||||
('SPBU Jl. Ahmad Yani', '0561-123456', 1, -0.0200, 109.3300, '{"type":"Point","coordinates":[109.3300,-0.0200]}'),
|
||||
('SPBU Jl. Gajah Mada', '0561-654321', 0, -0.0350, 109.3200, '{"type":"Point","coordinates":[109.3200,-0.0350]}'),
|
||||
('SPBU Jl. Tanjungpura', '0561-789012', 1, -0.0100, 109.3450, '{"type":"Point","coordinates":[109.3450,-0.0100]}'),
|
||||
('SPBU Jl. Sutan Syahrir','0561-345678', 0, -0.0480, 109.3380, '{"type":"Point","coordinates":[109.3380,-0.0480]}');
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user