Visualisasi Data Vektor dengan Mapbox GL JS menjadi solusi modern bagi pemerintah kota yang ingin memantau kualitas udara secara real‑time. Dengan menggabungkan data sensor, vector tiles, dan kemampuan styling dinamis, peta interaktif dapat menampilkan tingkat polutan, hotspot, serta tren temporal dalam format yang mudah dipahami.
1. Persiapan Data Kualitas Udara untuk Mapbox GL JS
Langkah pertama adalah mengumpulkan data sensor kualitas udara (misalnya PM2.5, NO2, O3) dari jaringan stasiun tetap atau perangkat IoT berbasis drone. Data biasanya berbentuk CSV atau JSON dengan koordinat geografis. Selanjutnya, data tersebut di‑convert menjadi GeoJSON dan dibagi menjadi vector tiles menggunakan tippecanoe atau layanan cloud seperti Mapbox Tileset API.
1.1. Normalisasi dan Kategorisasi Polutan
Setiap nilai polutan dikategorikan menjadi rentang (baik, sedang, buruk, sangat buruk) berdasarkan standar WHO. Kategori ini akan menjadi dasar styling pada peta sehingga pengguna dapat langsung mengenali area yang memerlukan perhatian.
1.2. Penyimpanan di Cloud dan Penyajian via API
Vector tiles disimpan di Mapbox Tileset atau layanan penyimpanan S3 yang terintegrasi dengan CDN. API endpoint menyediakan token akses yang aman untuk aplikasi web.
2. Membuat Peta Interaktif dengan Mapbox GL JS
Setelah tileset siap, langkah selanjutnya adalah menulis kode JavaScript untuk menampilkan peta. Contoh kode dasar:
mapboxgl.accessToken = 'YOUR_MAPBOX_TOKEN';
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/light-v10',
center: [106.827, -6.175], // Jakarta
zoom: 10
});
map.on('load', () => {
map.addSource('air-quality', {
type: 'vector',
url: 'mapbox://yourusername.air-quality-tileset'
});
map.addLayer({
id: 'air-quality-layer',
type: 'fill',
source: 'air-quality',
'source-layer': 'air_quality',
paint: {
'fill-color': [
'step', ['get', 'pm25_category'],
'#2DC937', 0, // Baik
'#E7B416', 50, // Sedang
'#CC3232', 100, // Buruk
'#4B0082' // Sangat buruk
],
'fill-opacity': 0.6
}
});
});
Dengan step expression, Mapbox GL JS secara otomatis mengubah warna area berdasarkan nilai PM2.5, memberikan visualisasi yang langsung dapat dipahami.
2.1. Menambahkan Interaksi Popup
Pengguna dapat mengklik sebuah poligon untuk melihat detail polutan, waktu pengukuran, dan rekomendasi mitigasi. Kode popup sederhana:
map.on('click', 'air-quality-layer', (e) => {
const properties = e.features[0].properties;
new mapboxgl.Popup()
.setLngLat(e.lngLat)
.setHTML(`Lokasi: ${properties.station}
PM2.5: ${properties.pm25} µg/m³
Kategori: ${properties.pm25_category}`)
.addTo(map);
});
3. Analisis Temporal dan Storytelling Geospasial
Mapbox GL JS tidak hanya menampilkan data statis, tetapi juga dapat memvisualisasikan perubahan kualitas udara selama 24 jam, mingguan, atau tahunan. Dengan menggunakan time‑enabled vector tiles dan kontrol slider, pengguna dapat menggeser waktu dan melihat evolusi polutan secara dinamis.
3.1. Membuat Slider Waktu
Slider berbasis input[type=range] terhubung ke fungsi yang memperbarui sumber data:
const timeSlider = document.getElementById('time-slider');
timeSlider.addEventListener('input', (e) => {
const hour = e.target.value;
map.setPaintProperty('air-quality-layer', 'fill-color', getColorExpression(hour));
});
Fungsi getColorExpression menghasilkan ekspresi step yang berbeda untuk setiap jam, memungkinkan visualisasi temporal patterns seperti peningkatan NO2 pada jam sibuk.
3.2. Menghubungkan dengan Storytelling
Dengan menambahkan narasi teks, gambar, dan video di samping peta, pembuat kebijakan dapat menyampaikan pesan yang persuasif kepada publik. Setiap tahapan cerita dapat memicu perubahan layer, menyorot area kritis, atau menampilkan grafik tren.
4. Optimasi Performa untuk Dataset Besar
Ketika data kualitas udara meliputi ribuan sensor, performa rendering menjadi tantangan. Berikut beberapa teknik yang dapat diterapkan:
- Clustering client‑side: gunakan
superclusteruntuk mengelompokkan titik sensor pada level zoom rendah. - Tile simplification: kurangi detail geometrik pada zoom jauh dengan
simplify-tolerancepada proses pembuatan vector tiles. - Lazy loading layer: hanya muat layer yang berada dalam viewport saat itu.
5. Integrasi dengan Sistem GIS dan Dashboard Pemerintah
Hasil visualisasi dapat di‑embed ke portal GIS berbasis WebGIS atau sistem informasi geografis (GIS) desktop melalui iframe atau SDK Mapbox. Data yang dipilih pada peta dapat dikirim kembali ke server untuk analisis lanjutan, misalnya kalkulasi paparan kesehatan.
5.1. Contoh Integrasi Dashboard
Dashboard menampilkan statistik ringkas: rata‑rata PM2.5 per kecamatan, grafik tren harian, serta rekomendasi kebijakan. Pengguna dapat men‑filter data berdasarkan jenis polutan atau periode waktu.
Kesimpulan
Dengan memanfaatkan Visualisasi Data Vektor dengan Mapbox GL JS, kota dapat mengubah data kualitas udara yang kompleks menjadi peta interaktif yang informatif dan mudah diakses. Pendekatan ini tidak hanya meningkatkan transparansi kepada publik, tetapi juga memperkuat keputusan berbasis data bagi perencanaan lingkungan yang lebih sehat.
Mulailah dengan menyiapkan dataset, buat vector tiles, lalu implementasikan kode di atas. Tambahkan interaksi, analisis temporal, dan integrasi dashboard untuk menghasilkan solusi yang komprehensif.