Files
UAS_SIG_WebGIS/frontend/lib/map-data.ts
T

265 lines
9.9 KiB
TypeScript

export interface RegionData {
id: string;
name: string;
path: string;
center: { x: number; y: number };
dataByYear: {
[year: number]: {
povertyRate: number;
gini: number;
medianIncome: number;
poorPop: number;
}
}
}
export interface GasStation {
id: string;
name: string;
brand: "Pertamina" | "Shell" | "BP" | "Vivo";
x: number;
y: number;
address: string;
rating: number;
prices: {
ron92: number;
ron95: number;
diesel: number;
};
services: {
evCharger: boolean;
minimarket: boolean;
coffee: boolean;
carWash: boolean;
};
queue: "Low" | "Medium" | "High";
waitMinutes: number;
gasTypes?: string[];
}
export const POVERTY_RATES: Record<string, Record<number, number>> = {
cempaka: { 2020: 12.4, 2021: 11.8, 2022: 11.2, 2023: 10.1, 2024: 9.4, 2025: 8.6, 2026: 7.9 },
menteng: { 2020: 5.2, 2021: 4.9, 2022: 4.5, 2023: 4.1, 2024: 3.8, 2025: 3.5, 2026: 3.1 },
sudirman: { 2020: 8.7, 2021: 8.1, 2022: 7.5, 2023: 6.9, 2024: 6.2, 2025: 5.6, 2026: 4.9 },
kemang: { 2020: 15.6, 2021: 14.8, 2022: 13.9, 2023: 12.8, 2024: 11.9, 2025: 10.7, 2026: 9.8 },
senen: { 2020: 11.1, 2021: 10.5, 2022: 9.8, 2023: 8.9, 2024: 8.3, 2025: 7.6, 2026: 6.8 },
pluit: { 2020: 14.2, 2021: 13.5, 2022: 12.6, 2023: 11.7, 2024: 10.8, 2025: 9.7, 2026: 8.9 }
};
export const LAND_MARKER_LABELS: Record<string, string> = {
marker: "Penanda Lahan",
flag: "Tengara Lahan",
protected: "Kawasan Lindung",
registry: "Kantor Pendaftaran",
line: "Garis Ukur",
polygon: "Poligon Lahan",
circle: "Zona Penyangga"
};
export const LAND_MARKER_COLORS: Record<string, string> = {
marker: "#3b82f6",
flag: "rgb(244, 63, 94)",
protected: "rgb(4, 120, 87)",
registry: "rgb(29, 78, 216)",
line: "#ef4444",
polygon: "#a855f7",
circle: "#ff3b1f"
};
export const BRAND_COLORS = {
Pertamina: { bg: "#ff3b1f", text: "#ffffff", border: "#d92c14" },
Shell: { bg: "#eab308", text: "#000000", border: "#ca8a04" },
BP: { bg: "#10b981", text: "#ffffff", border: "#059669" },
Vivo: { bg: "#3b82f6", text: "#ffffff", border: "#2563eb" }
};
// Gas Stations Leaflet-friendly mapping data
export const GAS_STATIONS = [
{ id: "pertamina-31", name: "Pertamina SPBU 31.124", brand: "Pertamina" as const, lat: -6.195, lng: 106.875, price92: 13200, price95: 14400, diesel: 14900, gasTypes: ["Pertalite", "Pertamax", "Pertamax Turbo", "Dexlite", "Solar"] },
{ id: "shell-menteng", name: "Shell Menteng", brand: "Shell" as const, lat: -6.200, lng: 106.835, price92: 13850, price95: 14600, diesel: 15100, gasTypes: ["Shell Super", "Shell V-Power", "Shell V-Power Diesel"] },
{ id: "pertamina-34", name: "Pertamina SPBU 34.110", brand: "Pertamina" as const, lat: -6.225, lng: 106.815, price92: 13200, price95: 14400, diesel: 14900, gasTypes: ["Pertalite", "Pertamax", "Dexlite", "Solar"] },
{ id: "bp-sudirman", name: "BP Sudirman", brand: "BP" as const, lat: -6.225, lng: 106.822, price92: 13400, price95: 14500, diesel: 14800, gasTypes: ["BP 92", "BP 95", "BP Ultimate", "BP Ultimate Diesel"] },
{ id: "shell-pluit", name: "Shell Pluit Marina", brand: "Shell" as const, lat: -6.120, lng: 106.785, price92: 13850, price95: 14600, diesel: 15100, gasTypes: ["Shell Super", "Shell V-Power", "Shell V-Power Nitro+", "Shell V-Power Diesel"] },
{ id: "bp-kemang", name: "BP Kemang Valley", brand: "BP" as const, lat: -6.262, lng: 106.818, price92: 13400, price95: 14500, diesel: 14800, gasTypes: ["BP 92", "BP 95", "BP Ultimate"] }
];
export const REGIONS: RegionData[] = [
{
id: "cempaka",
name: "Cempaka Hills",
path: "M 150,150 L 350,120 L 400,250 L 250,300 L 150,250 Z",
center: { x: 260, y: 210 },
dataByYear: {
2020: { povertyRate: 12.4, gini: 0.38, medianIncome: 4.8, poorPop: 45.2 },
2021: { povertyRate: 11.8, gini: 0.37, medianIncome: 5.1, poorPop: 43.5 },
2022: { povertyRate: 11.2, gini: 0.36, medianIncome: 5.4, poorPop: 41.8 },
2023: { povertyRate: 10.1, gini: 0.35, medianIncome: 5.9, poorPop: 38.0 },
2024: { povertyRate: 9.4, gini: 0.34, medianIncome: 6.2, poorPop: 35.8 },
2025: { povertyRate: 8.6, gini: 0.33, medianIncome: 6.7, poorPop: 33.1 },
2026: { povertyRate: 7.9, gini: 0.32, medianIncome: 7.1, poorPop: 30.5 }
}
},
{
id: "menteng",
name: "Menteng Heights",
path: "M 350,120 L 550,100 L 600,220 L 450,280 L 400,250 Z",
center: { x: 470, y: 180 },
dataByYear: {
2020: { povertyRate: 5.2, gini: 0.42, medianIncome: 8.5, poorPop: 15.6 },
2021: { povertyRate: 4.9, gini: 0.41, medianIncome: 9.0, poorPop: 15.0 },
2022: { povertyRate: 4.5, gini: 0.40, medianIncome: 9.6, poorPop: 14.1 },
2023: { povertyRate: 4.1, gini: 0.40, medianIncome: 10.2, poorPop: 13.0 },
2024: { povertyRate: 3.8, gini: 0.39, medianIncome: 11.0, poorPop: 12.2 },
2025: { povertyRate: 3.5, gini: 0.38, medianIncome: 11.8, poorPop: 11.5 },
2026: { povertyRate: 3.1, gini: 0.37, medianIncome: 12.5, poorPop: 10.3 }
}
},
{
id: "sudirman",
name: "Sudirman Core",
path: "M 250,300 L 400,250 L 450,280 L 480,400 L 300,420 Z",
center: { x: 375, y: 330 },
dataByYear: {
2020: { povertyRate: 8.7, gini: 0.39, medianIncome: 6.8, poorPop: 28.4 },
2021: { povertyRate: 8.1, gini: 0.38, medianIncome: 7.2, poorPop: 26.8 },
2022: { povertyRate: 7.5, gini: 0.37, medianIncome: 7.7, poorPop: 25.1 },
2023: { povertyRate: 6.9, gini: 0.36, medianIncome: 8.3, poorPop: 23.4 },
2024: { povertyRate: 6.2, gini: 0.36, medianIncome: 9.0, poorPop: 21.3 },
2025: { povertyRate: 5.6, gini: 0.35, medianIncome: 9.8, poorPop: 19.5 },
2026: { povertyRate: 4.9, gini: 0.34, medianIncome: 10.5, poorPop: 17.2 }
}
},
{
id: "kemang",
name: "Kemang Valley",
path: "M 150,250 L 250,300 L 300,420 L 120,380 Z",
center: { x: 200, y: 340 },
dataByYear: {
2020: { povertyRate: 15.6, gini: 0.34, medianIncome: 3.9, poorPop: 62.1 },
2021: { povertyRate: 14.8, gini: 0.34, medianIncome: 4.2, poorPop: 59.8 },
2022: { povertyRate: 13.9, gini: 0.33, medianIncome: 4.5, poorPop: 57.0 },
2023: { povertyRate: 12.8, gini: 0.33, medianIncome: 4.9, poorPop: 53.2 },
2024: { povertyRate: 11.9, gini: 0.32, medianIncome: 5.3, poorPop: 50.1 },
2025: { povertyRate: 10.7, gini: 0.31, medianIncome: 5.8, poorPop: 45.6 },
2026: { povertyRate: 9.8, gini: 0.30, medianIncome: 6.4, poorPop: 42.0 }
}
},
{
id: "senen",
name: "Senen District",
path: "M 450,280 L 600,220 L 680,350 L 580,410 L 480,400 Z",
center: { x: 560, y: 310 },
dataByYear: {
2020: { povertyRate: 11.1, gini: 0.36, medianIncome: 5.2, poorPop: 37.8 },
2021: { povertyRate: 10.5, gini: 0.35, medianIncome: 5.5, poorPop: 36.1 },
2022: { povertyRate: 9.8, gini: 0.34, medianIncome: 5.9, poorPop: 34.2 },
2023: { povertyRate: 8.9, gini: 0.34, medianIncome: 6.4, poorPop: 31.5 },
2024: { povertyRate: 8.3, gini: 0.33, medianIncome: 6.8, poorPop: 29.8 },
2025: { povertyRate: 7.6, gini: 0.32, medianIncome: 7.3, poorPop: 27.6 },
2026: { povertyRate: 6.8, gini: 0.31, medianIncome: 7.9, poorPop: 25.0 }
}
},
{
id: "pluit",
name: "Pluit Marina",
path: "M 300,420 L 480,400 L 580,410 L 520,480 L 320,480 Z",
center: { x: 440, y: 450 },
dataByYear: {
2020: { povertyRate: 14.2, gini: 0.37, medianIncome: 4.1, poorPop: 51.5 },
2021: { povertyRate: 13.5, gini: 0.36, medianIncome: 4.4, poorPop: 49.6 },
2022: { povertyRate: 12.6, gini: 0.35, medianIncome: 4.7, poorPop: 46.9 },
2023: { povertyRate: 11.7, gini: 0.35, medianIncome: 5.1, poorPop: 44.1 },
2024: { povertyRate: 10.8, gini: 0.34, medianIncome: 5.5, poorPop: 41.2 },
2025: { povertyRate: 9.7, gini: 0.33, medianIncome: 6.0, poorPop: 37.4 },
2026: { povertyRate: 8.9, gini: 0.32, medianIncome: 6.5, poorPop: 34.8 }
}
}
];
export const STATIONS: GasStation[] = [
{
id: "pertamina-31",
name: "Pertamina SPBU 31.124",
brand: "Pertamina",
x: 230,
y: 180,
address: "Jl. Cempaka Hills No. 12, South Jakarta",
rating: 4.3,
prices: { ron92: 13200, ron95: 14400, diesel: 14900 },
services: { evCharger: true, minimarket: true, coffee: false, carWash: true },
queue: "Medium",
waitMinutes: 8,
gasTypes: ["Pertalite", "Pertamax", "Pertamax Turbo", "Dexlite", "Solar"]
},
{
id: "shell-menteng",
name: "Shell Menteng",
brand: "Shell",
x: 480,
y: 150,
address: "Jl. Menteng Raya No. 44, Central Jakarta",
rating: 4.7,
prices: { ron92: 13850, ron95: 14600, diesel: 15100 },
services: { evCharger: false, minimarket: true, coffee: true, carWash: true },
queue: "Low",
waitMinutes: 2,
gasTypes: ["Shell Super", "Shell V-Power", "Shell V-Power Diesel"]
},
{
id: "pertamina-34",
name: "Pertamina SPBU 34.110",
brand: "Pertamina",
x: 350,
y: 290,
address: "Jl. Sudirman Core Kav. 21, South Jakarta",
rating: 4.1,
prices: { ron92: 13200, ron95: 14400, diesel: 14900 },
services: { evCharger: true, minimarket: true, coffee: true, carWash: false },
queue: "High",
waitMinutes: 18,
gasTypes: ["Pertalite", "Pertamax", "Dexlite", "Solar"]
},
{
id: "bp-sudirman",
name: "BP Sudirman",
brand: "BP",
x: 520,
y: 330,
address: "Jl. Sudirman Core No. 78, South Jakarta",
rating: 4.5,
prices: { ron92: 13400, ron95: 14500, diesel: 14800 },
services: { evCharger: true, minimarket: true, coffee: true, carWash: false },
queue: "Low",
waitMinutes: 3,
gasTypes: ["BP 92", "BP 95", "BP Ultimate", "BP Ultimate Diesel"]
},
{
id: "shell-pluit",
name: "Shell Pluit Marina",
brand: "Shell",
x: 420,
y: 420,
address: "Jl. Pluit Marina Blok B-2, North Jakarta",
rating: 4.6,
prices: { ron92: 13850, ron95: 14600, diesel: 15100 },
services: { evCharger: false, minimarket: true, coffee: true, carWash: true },
queue: "High",
waitMinutes: 14,
gasTypes: ["Shell Super", "Shell V-Power", "Shell V-Power Nitro+", "Shell V-Power Diesel"]
},
{
id: "bp-kemang",
name: "BP Kemang Valley",
brand: "BP",
x: 210,
y: 360,
address: "Jl. Kemang Valley Raya No. 9, South Jakarta",
rating: 4.4,
prices: { ron92: 13400, ron95: 14500, diesel: 14800 },
services: { evCharger: false, minimarket: true, coffee: true, carWash: true },
queue: "Medium",
waitMinutes: 6,
gasTypes: ["BP 92", "BP 95", "BP Ultimate"]
}
];