A Geospatial Dataset of Public Electric Vehicle Charging Infrastructure in Indonesia
Description
A geocoded inventory of Indonesia's public electric vehicle charging stations, locally known as SPKLU (Stasiun Pengisian Kendaraan Listrik Umum). It contains 2,454 unique charging sites, 3,767 charger boxes, 7,593 chargers and 4,665 connectors, representing 89,871 kW of installed fast-charging-capable power across all 34 provinces under the pre-2022 structure. Records were captured on 16 June 2026 from petaspklu.id, the public national charging map operated by Solopos with data from PT PLN (Persero). The raw source listed 3,029 records, of which 575 described sites already present under another name or address. Every merge is logged, keeping consolidation auditable and reversible. We built a Python pipeline that rebuilds charger and connector counts from the underlying boxes, converts power into numeric kW and five tiers, and assigns official BPS codes at province and regency level. It classifies each station as PLN or SPKLU network, independent charge-point operator, or automaker dealership, and names the operator or brand. Venues are assigned to 14 classes grouped into 7 categories. Province tables combine SP2020 census population and 2025 PDRB regional GDP into per-capita and per-GDP coverage indicators. Each station carries WGS84 coordinates, parsed power and tier, box, charger and connector counts, BPS codes, operator and venue class, co-location cluster identifier, merge provenance and quality flags. It also carries road-network distance to its nearest neighbour, computed over the OpenStreetMap network with OSRM, that neighbour's identity, and station counts and densities at 1, 3 and 5 km. A companion charger-box table gives box-level power, inferred AC or DC current and counts, joined on station identifier. A data dictionary is included. Per-capita access ranges from 4.71 stations per 100,000 residents in DKI Jakarta to 0.35 in Papua. Normalized by GDP the ranking changes, with Bali at 0.32 per trillion rupiah ahead of DKI Jakarta at 0.13, so deployment is not explained by economic size alone. PLN's own network holds 65.5% of stations and supplies almost all utility and most public and civic sites. Independent operators hold 19.2% and lead office and residential venues. Dealerships hold 14.3%, all at showrooms. The spatial fields expose a second inequality that provincial counts conceal. The median station lies 2.09 km by road from another and 71.4% have a neighbour within 5 km, yet 13.7% sit over 20 km from any alternative. The dataset supports research on charging equity, EV adoption, spatial accessibility, network redundancy, and energy policy.
Files
Steps to reproduce
Source data were retrieved on 16 June 2026 from petaspklu.id. The raw response was saved as input/spklu_raw.json and used as the immutable starting point. All processing was performed with a documented Python pipeline using pandas. 1. Recompute each station's charger and connector totals by summing its charger boxes, because the raw source totals were uniformly zero. 2. Parse free-text power values into numeric kW and assign a power tier: AC slow ≤7, AC fast 11-22, DC fast 25-49, DC rapid 50-99, DC ultra-rapid ≥100 kW. Values between bands go to the nearest higher band, which affects one 24 kW record. 3. Normalize province names to the 34 official 2-digit BPS codes. 4. Normalize regency names and administrative level (Kabupaten/Kota) and match them to 4-digit BPS codes per Permendagri No. 72/2019, joined against a regency master from the open emsifa/api-wilayah-indonesia dataset. All 3,029 raw stations were coded across 375 name entries mapping to 373 codes. Two source-labelling corrections were applied and are documented in match_status. 5. Infer AC or DC current from charger-box names where stated, leaving it blank otherwise (829 of 3,767 retained boxes). 6. Screen coordinates against each province's bounding box, flagging 17 stations for review without deleting any, and cluster stations sharing identical coordinates. 7. Resolve duplicates. Within each province, station pairs within 1 km were scored on name similarity (weight 0.4) and address similarity (weight 0.6), each the maximum of token-sort and token-set fuzzy ratios. Pairs scoring 75 or above were merged by union-find with the co-location clusters from step 6. The lowest station_id survives and keeps its own values rather than summing, since cluster members describe one site. This reduced 3,029 records to 2,454 unique sites, with 366 records absorbing at least one other and the largest cluster covering 14. Provenance is written to merged_from_station_ids and n_merged. 8. Reconcile the charger-box table to the surviving stations, reducing 4,707 boxes to 3,767 while preserving each station's recorded totals. 9. Enrich spatially. The five nearest stations by haversine distance were queried against the public OSRM Table service (driving profile) over the OpenStreetMap road network, and the shortest road distance recorded as nearest_road_km with the neighbour's id and name. Counts within 1, 3 and 5 km were computed by straight-line search, with densities as count divided by pi*r^2. 10. Join provincial population (BPS SP2020) and GDP (BPS PDRB ADHB 2025), then compute per-capita and per-GDP coverage metrics. 11. Derive provider_type and operator_brand from the operator signal in the station name (PLN / SPKLU network, independent charge-point operator, or automaker dealership), and location_type and location_group name-first by documented keyword rules. The address is consulted only for "rest area", "bandara" and "rumah sakit".
Institutions
- Binus UniversityJakarta, Jakarta