INFRAIMPACT — Data Dictionary

INFRAIMPACT — Data Dictionary

Schema of every JSON file in /data and /geo. All field names are stable across versions; deprecated fields must be retained until next major version bump.

provinces.json

FieldTypeRequiredExampleNotes
province_codestring(2)Y“32”BPS code, zero-padded
province_name_idstringY“Jawa Barat”display name (ID)
province_name_enstringN“West Java”display name (EN)
region_groupstringY“Java”Sumatera/Java/Kalimantan/Sulawesi/BaliNT/Maluku/Papua
centroid_latfloatY-6.9for fallback marker
centroid_lngfloatY107.6for fallback marker
populationintN48783000BPS reference

districts.json

FieldTypeRequiredExampleNotes
district_codestring(4)Y“3201”BPS code
province_codestring(2)Y“32”FK
district_name_idstringY“Kabupaten Bogor” 
district_typestringY“kabupaten”{kabupaten, kota}
centroid_latfloatY-6.6 
centroid_lngfloatY106.8 
populationintN5489000 
uptd_aldald_statusstringN“uptd_generic”{none, ad_hoc, uptd_generic, uptd_spesifik}
perda_alD_existsboolNtrue 
perda_alD_yearintN2017required if perda_alD_exists = true

assets.json

FieldTypeRequiredExampleNotes
asset_idstringY“AST-0030”unique
asset_namestringY“IPLT Keputih” 
asset_typestringY“IPLT”{IPLT, IPAL_komunal, IPAL_kawasan, TPA, TPST, SPALDT}
province_codestring(2)Y“35”FK
district_codestring(4)Y“3578”FK
latitudefloatY-7.295masked in public mode
longitudefloatY112.795masked in public mode
construction_yearintY2015left-censoring boundary
handover_yearintN2016BAST year
funding_sourcestringY“APBN”{APBN, APBD_I, APBD_II, Hibah, PHLN, Mixed}
capex_value_idrintN62000000000IDR
design_capacity_m3_dayfloatY400 
operator_entitystringN“UPTD PALD Surabaya” 

yearly_observations.json

FieldTypeRequiredExampleNotes
observation_idstringY“OBS-2024-AST-0030”unique
yearintY20242015–2024
asset_idstringY“AST-0030”FK
province_codestring(2)Y“35”denorm for fast filter
district_codestring(4)Y“3578”denorm
design_capacityfloatN400 
actual_capacityfloatN290 
utilization_ratefloatN0.725 
idle_capacity_ratiofloatN0.275 
service_coveragefloatN0.41 
effluent_compliance_ratefloatN0.88triggers absolute override if < 0.50
o_and_m_budgetintN1250000000 
cost_recovery_ratiofloatN0.48 
institution_statusstringN“uptd_spesifik”enum (see C-I1)
regulation_statusstringN“full”{none, partial, full}
cause_scorefloatN0.74precomputed S_CAUSE
impact_scorefloatN0.71precomputed S_IMPACT
usefulness_scorefloatN0.62 
functionality_scorefloatN0.76 
sustainability_scorefloatN0.78 
operational_statusstringY“operating”{operating, underutilized, idle, failed, not_yet_constructed, data_unavailable}
risk_zonestringY“green”{green, yellow, red, gray}
diagnostic_quadrantstringY“resilient”{resilient, operational_decay, compensated_failure, investment_in_failure, unknown}
data_quality_flagstringY“estimated”{observed, estimated, imputed, missing}
data_sourcestringY“simulated_placeholder” 
scoring_method_versionstringY“v1.0” 
last_updateddateY“2026-05-12”ISO-8601
notesstringN free text

indicators.json

See data/indicators.json. Schema: { indicator_id, block, dimension, name_id, observation_field, orientation, normalization, ... }.

absolute_threshold + absolute_override (optional) → zona merah otomatis.

weights.json

{
  "weight_id": "W-2026-v1",
  "scoring_method_version": "v1.0",
  "block_weights": { "CAUSE": 0.5, "IMPACT": 0.5 },
  "dimension_weights": { "institusi": 0.30, ... },
  "indicator_weights": { "C-I1": 0.40, ... },
  "bwm_consistency_ratio": 0.18,
  "panel_id": "PANEL-SIM-A",
  "valid_from": "2026-01-01"
}

thresholds.json

{
  "quadrant_threshold": 0.50,
  "risk_zones": { "red_max": 0.33, "yellow_max": 0.66 },
  "absolute_overrides": [
    { "indicator_id": "I-T3", "indicator_field": "effluent_compliance_rate", "operator": "<", "threshold": 0.50, "action": "red" }
  ]
}

recommendations.json

Array of { recommendation_id, trigger_quadrant, action_id_text, action_en_text, severity }.

metadata.json

Global dataset metadata (publisher, license, cut-off date, version, warnings).

geo/indonesia_provinces.geojson

Fallback FeatureCollection. Properties keys are normalized at load (_code, _displayName). Primary source is jsDelivr CDN; local fallback only used if CDN fails.

Versioning rules

  • Adding optional fields: minor version bump.
  • Removing or renaming fields: major version bump + migration note.
  • Changing scoring semantics: bump scoring_method_version, add entry to scoring_versions.json.
  • Boundary file replacement (BPS): bump boundary_version in metadata.json.