207 lines
5.8 KiB
SQL
207 lines
5.8 KiB
SQL
-- ============================================
|
|
-- WebGIS Manajemen Jalan & Parsil Tanah
|
|
-- Database Schema — Format GeoJSON
|
|
-- ============================================
|
|
|
|
CREATE DATABASE IF NOT EXISTS polyline_polygon CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
USE polyline_polygon;
|
|
|
|
-- ============================================
|
|
-- Tabel Data Jalan (LineString GeoJSON)
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS jalan (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama_jalan VARCHAR(255) NOT NULL,
|
|
status_jalan ENUM('Jalan Nasional', 'Jalan Provinsi', 'Jalan Kabupaten') NOT NULL,
|
|
panjang_meter DOUBLE DEFAULT 0,
|
|
geojson LONGTEXT NOT NULL COMMENT 'GeoJSON Feature object with geometry type LineString',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- ============================================
|
|
-- Tabel Data Parsil Tanah (Polygon GeoJSON)
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS parsil_tanah (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nomor_sertifikat VARCHAR(100),
|
|
status_kepemilikan ENUM('SHM', 'HGB', 'HGU', 'HP') NOT NULL,
|
|
luas_meter2 DOUBLE DEFAULT 0,
|
|
geojson LONGTEXT NOT NULL COMMENT 'GeoJSON Feature object with geometry type Polygon',
|
|
nama_pemilik VARCHAR(255),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- ============================================
|
|
-- Tabel Laporan Kerusakan Jalan (Point GeoJSON)
|
|
-- ============================================
|
|
CREATE TABLE IF NOT EXISTS laporan_kerusakan (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
jalan_id INT DEFAULT 0 COMMENT 'FK ke tabel jalan (0 jika tidak terdeteksi)',
|
|
nama_jalan VARCHAR(255) DEFAULT 'Tidak Diketahui',
|
|
status_jalan VARCHAR(50) DEFAULT '',
|
|
nama_pelapor VARCHAR(255) DEFAULT 'Anonim',
|
|
kategori_rusak ENUM('Ringan', 'Sedang', 'Berat') NOT NULL,
|
|
tanggal_laporan DATE NOT NULL,
|
|
keterangan TEXT,
|
|
foto_url VARCHAR(500) DEFAULT NULL COMMENT 'Path foto kerusakan yang diupload',
|
|
geojson LONGTEXT NOT NULL COMMENT 'GeoJSON Feature Point [lng, lat]',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
INDEX idx_jalan_id (jalan_id),
|
|
INDEX idx_tanggal (tanggal_laporan),
|
|
INDEX idx_kategori (kategori_rusak)
|
|
);
|
|
|
|
-- ============================================
|
|
-- Sample Data Jalan
|
|
-- Catatan: GeoJSON menggunakan [lng, lat] (bukan [lat, lng])
|
|
-- ============================================
|
|
INSERT INTO jalan (nama_jalan, status_jalan, panjang_meter, geojson) VALUES
|
|
(
|
|
'Jalan Ahmad Yani',
|
|
'Jalan Nasional',
|
|
1250.5,
|
|
'{
|
|
"type": "Feature",
|
|
"properties": {
|
|
"nama_jalan": "Jalan Ahmad Yani",
|
|
"status_jalan": "Jalan Nasional",
|
|
"panjang_meter": 1250.5
|
|
},
|
|
"geometry": {
|
|
"type": "LineString",
|
|
"coordinates": [
|
|
[109.3300, -0.0220],
|
|
[109.3340, -0.0235],
|
|
[109.3375, -0.0250],
|
|
[109.3410, -0.0263]
|
|
]
|
|
}
|
|
}'
|
|
),
|
|
(
|
|
'Jalan Gajah Mada',
|
|
'Jalan Provinsi',
|
|
870.3,
|
|
'{
|
|
"type": "Feature",
|
|
"properties": {
|
|
"nama_jalan": "Jalan Gajah Mada",
|
|
"status_jalan": "Jalan Provinsi",
|
|
"panjang_meter": 870.3
|
|
},
|
|
"geometry": {
|
|
"type": "LineString",
|
|
"coordinates": [
|
|
[109.3280, -0.0280],
|
|
[109.3330, -0.0270],
|
|
[109.3380, -0.0260]
|
|
]
|
|
}
|
|
}'
|
|
),
|
|
(
|
|
'Jalan Pahlawan',
|
|
'Jalan Kabupaten',
|
|
540.7,
|
|
'{
|
|
"type": "Feature",
|
|
"properties": {
|
|
"nama_jalan": "Jalan Pahlawan",
|
|
"status_jalan": "Jalan Kabupaten",
|
|
"panjang_meter": 540.7
|
|
},
|
|
"geometry": {
|
|
"type": "LineString",
|
|
"coordinates": [
|
|
[109.3420, -0.0300],
|
|
[109.3450, -0.0290],
|
|
[109.3480, -0.0280]
|
|
]
|
|
}
|
|
}'
|
|
);
|
|
|
|
-- ============================================
|
|
-- Sample Data Parsil Tanah
|
|
-- Polygon: koordinat pertama dan terakhir harus sama (closed ring)
|
|
-- ============================================
|
|
INSERT INTO parsil_tanah (nomor_sertifikat, status_kepemilikan, luas_meter2, geojson, nama_pemilik) VALUES
|
|
(
|
|
'SHM-2024-001',
|
|
'SHM',
|
|
450.0,
|
|
'{
|
|
"type": "Feature",
|
|
"properties": {
|
|
"nomor_sertifikat": "SHM-2024-001",
|
|
"status_kepemilikan": "SHM",
|
|
"luas_meter2": 450.0,
|
|
"nama_pemilik": "Budi Santoso"
|
|
},
|
|
"geometry": {
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[109.3355, -0.0255],
|
|
[109.3370, -0.0255],
|
|
[109.3370, -0.0245],
|
|
[109.3355, -0.0245],
|
|
[109.3355, -0.0255]
|
|
]]
|
|
}
|
|
}',
|
|
'Budi Santoso'
|
|
),
|
|
(
|
|
'HGB-2024-002',
|
|
'HGB',
|
|
620.5,
|
|
'{
|
|
"type": "Feature",
|
|
"properties": {
|
|
"nomor_sertifikat": "HGB-2024-002",
|
|
"status_kepemilikan": "HGB",
|
|
"luas_meter2": 620.5,
|
|
"nama_pemilik": "PT. Maju Jaya"
|
|
},
|
|
"geometry": {
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[109.3395, -0.0270],
|
|
[109.3415, -0.0270],
|
|
[109.3415, -0.0258],
|
|
[109.3395, -0.0258],
|
|
[109.3395, -0.0270]
|
|
]]
|
|
}
|
|
}',
|
|
'PT. Maju Jaya'
|
|
),
|
|
(
|
|
'HGU-2024-003',
|
|
'HGU',
|
|
1200.0,
|
|
'{
|
|
"type": "Feature",
|
|
"properties": {
|
|
"nomor_sertifikat": "HGU-2024-003",
|
|
"status_kepemilikan": "HGU",
|
|
"luas_meter2": 1200.0,
|
|
"nama_pemilik": "CV. Agro Lestari"
|
|
},
|
|
"geometry": {
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[109.3310, -0.0285],
|
|
[109.3335, -0.0285],
|
|
[109.3335, -0.0268],
|
|
[109.3310, -0.0268],
|
|
[109.3310, -0.0285]
|
|
]]
|
|
}
|
|
}',
|
|
'CV. Agro Lestari'
|
|
);
|