DEV Community

Deny Herianto
Deny Herianto

Posted on

Peta GeoJSON & TopoJSON Indonesia (38 Provinsi)

Indonesia secara resmi kini memiliki 38 provinsi, dan jika Anda pernah mencoba membangun aplikasi berbasis peta, seperti dashboard, peta pemilu, alat logistik, pelacakan bencana, atau visualisasi data. Besar kemungkinan Anda pernah merasakan masalah berikut:

  • Data provinsi tidak lengkap
  • Batas wilayah yang sudah tidak relevan
  • Penamaan yang tidak konsisten

Mengapa Ini Penting

Peta bukan sekadar visual yang menarik. Peta adalah fondasi dari data Anda.

Jika daftar provinsi tidak akurat, maka seluruh sistem ikut bermasalah. Peta choropleth menjadi keliru. Analitik tidak sesuai dengan wilayah sebenarnya. Tooltip menampilkan nama yang salah.

Indonesia telah menambah beberapa provinsi baru, Papua Selatan, Papua Tengah, Papua Pegunungan, dan Papua Barat Daya. Sehingga banyak dataset lama kini sudah tidak relevan. Bahkan, banyak sumber publik masih hanya menampilkan 34 provinsi.


Cakupan

Data Lengkap

  • 38 provinsi, termasuk:
    • Papua Selatan
    • Papua Tengah
    • Papua Pegunungan
    • Papua Barat Daya

Dua Tipe Format

  • GeoJSON

    • Mudah digunakan
    • Kompatibel dengan Leaflet, Mapbox GL, dan overlay Google Maps
  • TopoJSON

    • Ukuran file ~80–90% lebih kecil
    • Waktu muat lebih cepat
    • Ideal untuk D3.js dan visualisasi skala besar

Bersih & Konsisten

  • Nama provinsi yang telah dinormalisasi
  • ID stabil untuk proses data join
  • Tidak ada geometri duplikat
  • Jalur (path) yang telah disederhanakan dan ramah web

GeoJSON vs TopoJSON (Ringkasan)

Fitur GeoJSON TopoJSON
Keterbacaan ✅ Tinggi ⚠️ Sedang
Ukuran File ❌ Besar ✅ Sangat Kecil
Performa Browser ⚠️ Bisa lambat ✅ Cepat
Paling Cocok Untuk Peta sederhana Visualisasi data, dashboard

Jika Anda membangun dashboard interaktif, TopoJSON adalah pilihan yang tepat.

Jika Anda butuh yang plug-and-play, GeoJSON sudah sangat memadai.


Contoh Kasus Penggunaan

Dataset ini ideal untuk:

  • 📊 Dashboard pemerintahan & layanan publik
  • 🌋 Pelacakan bencana & banjir
  • 🗳️ Peta pemilu & demografi
  • 🚚 Perencanaan logistik & cakupan layanan
  • 📍 Produk SaaS berbasis lokasi
  • 📱 Visualisasi data yang mobile-first

Contoh: Menggunakan GeoJSON dengan Leaflet

import L from "leaflet";
import indonesiaProvinces from "./indonesia-38-provinces.geojson";

L.geoJSON(indonesiaProvinces, {
  style: {
    color: "#1e40af",
    weight: 1,
    fillOpacity: 0.6,
  },
  onEachFeature: (feature, layer) => {
    layer.bindPopup(feature.properties.province);
  },
}).addTo(map);
Enter fullscreen mode Exit fullscreen mode

--

Contoh: Menggunakan TopoJSON dengan D3.js

import * as d3 from "d3";
import { feature } from "topojson-client";

// Import file TopoJSON (mendukung Vite / Webpack / Next.js)
import topoData from "./indonesia-38-provinces.topo.json";

const width = 800;
const height = 600;

const svg = d3
  .select("#map")
  .append("svg")
  .attr("width", width)
  .attr("height", height);

const projection = d3
  .geoMercator()
  .fitSize([width, height], feature(topoData, topoData.objects.indonesia_provinces));

const path = d3.geoPath().projection(projection);

// Konversi TopoJSON → GeoJSON
const provinces = feature(
  topoData,
  topoData.objects.indonesia_provinces
);

svg
  .selectAll("path")
  .data(provinces.features)
  .enter()
  .append("path")
  .attr("d", path)
  .attr("fill", "#60a5fa")
  .attr("stroke", "#1e3a8a")
  .append("title")
  .text(d => d.properties.province);
Enter fullscreen mode Exit fullscreen mode

--

Unduh

Unduh dataset melalui repositori berikut:

GeoJSON (38 Provinces)
indonesia-38-provinces.geojson

TopoJSON (38 Provinces)
indonesia-38-provinces.topo.json

Top comments (0)