Network exposure grid ASEAN GeoAI Fusion 2026

Methodology: sources, resolution, arithmetic and limits

How this grid is built

Every number on this site comes out of one pipeline, run identically for all 16 states and federal territories. This page is the whole of it: what each layer is, how coarse it is, the exact arithmetic behind both scores, and the places where the method is a proxy rather than a measurement. Nothing here is proprietary — the scoring is deliberately simple enough to argue with.

What is scored, and at what resolution

The unit is the polling district (daerah mengundi, DM) — the smallest published administrative geography in Malaysia, nested inside a state constituency (DUN) and a parliamentary seat. There are 7,748 of them nationally, and they are small enough that a district is a sensible thing to send a crew to.

Coverage is measured over area, not at a point. A ~500 m grid is laid inside each DM polygon and every interior node is sampled, giving frac_4g — the share of the district's area with 4G. This matters more than it sounds: an earlier centroid-only pass put a single sample at the middle of each district, and 39 of 57 districts whose centroid read "4G" turned out to be under 90% covered by area. Large rural districts were the ones it flattered.

The five layers

4G coverageJENDELA public tiles, dated Aug 2025

Raster tiles at jendela.my/tiles/lte_all/{z}/{x}/{y}.png, max zoom 16, XYZ with a TMS y-axis. A node counts as covered when at least 5 of 9 pixels in a 3×3 window are opaque. 5G is not in the open tile set — JENDELA serves it only through an NRIC-gated point API, so nothing here says anything about 5G.

Incident historyClimate-risk DM index (recorded disasters)

A backward-looking flood/landslide index per district. A score of 0 means no incident was ever recorded — not that the district is safe. That distinction drives the whole next section.

TerrainSRTM 30 m, via the opentopodata public API

Elevation sampled at the district centroid plus 4 cardinal points ~550 m out; slope from the 4-neighbour gradient. Landslide susceptibility rises with slope; flood susceptibility rises as land gets low and flat.

Rainfall & heatERA5 reanalysis, 2014–2023, via Open-Meteo

Ten years of daily totals on a 0.25° grid — coarse, so nodes are sampled per state and each district takes its nearest. The hazard weights extreme days above annual mean (0.6 / 0.4), because a single monsoon day does the damage. Heat (daily Tmax) is carried separately.

PopulationElectoral roll; HDX 2020 for Borneo

Peninsular districts use the electoral roll. Sabah and Sarawak use an HDX mukim-population area overlay instead, because the roll matched under a fifth of Borneo district IDs — see the note below.

The tower inventory used by the war room is a national MCMC set of 24,642 sites. It is a terminal Dec-2019 snapshot — the newest in-house copy available, and old enough that site counts should be read as structural, not current. Raw tower coordinates are never shipped to this site; only district- and operator-level aggregates are.

Why forward hazard, not just incident history

Incident records are sparsest exactly where the coverage gaps are, because remote districts generate few reports. Scored on recorded incidents alone, only 3 of 547 of Sarawak's gap districts carry any risk at all. Adding the forward terrain and rainfall layers lifts that to 327.

That is not a tuning detail. Without the forward layers the highest-need half of the country reads as risk-free, and every ranking built on it sends money to the Peninsula.

The arithmetic

hazard max(terrain_susc, rainfall_hazard) combined_risk max(incident_risk, hazard) net_stress max(combined_risk, heat_hazard) EXTEND uncovered_4g × population × (1 + combined_risk / 100) HARDEN frac_4g × net_stress × population / 1000

All hazard terms are 0–100. max() rather than a weighted blend, so a district that is either steep or flood-prone or has a flood on record is flagged on its worst factor and nothing averages it away.

EXTEND and HARDEN are complementary shares of the same district, not rival buckets. A district 60% covered contributes 0.6 of its population to HARDEN and 0.4 to EXTEND. Heat enters net_stress only — a hot dry district is not thereby flood-prone, so heat must never reach the flood term.

A district counts as a coverage gap when at least 10% of its area lacks 4G. That threshold is a choice, not a finding: 1,743 of 7,748 districts clear it. The underserved count — 2.15M people — is area-weighted, each district contributing its uncovered share of its own population rather than all-or-nothing.

Why this says 90.2% when MCMC says about 97%

Both are right; they divide by different things. MCMC's JENDELA figure is population coverage — the share of people in covered places, which is the correct number for asking how many Malaysians can get a signal where they live. 90.2% here is the mean share of district area with 4G, which is the correct number for asking how much ground a crew has to cover and how far from a tower the far edge of a district sits.

They diverge most where people are concentrated in a small part of a large district — which is most of Borneo. Neither refutes the other, and this site does not claim to restate national coverage. It claims that area is the better denominator for deciding where to build next.

Where the method is weak

  • Terrain and rainfall are sampled at the district node, not over the polygon. Coverage is area-weighted; hazard is not yet. Large districts get one hazard reading.
  • These are proxies, not calibrated hazard models. Slope-and-elevation is not a hydrological model, and 0.25° ERA5 will not resolve a valley. They are defensible as a ranking signal and should not be quoted as flood probabilities.
  • Borneo's population is an overlay, not a roll. Sabah and Sarawak use HDX mukim populations distributed by area, because the electoral roll matched fewer than one in five district IDs there. Totals land near the 2020 census, but per-district figures are modelled.
  • Some district polygons are defective at source. At least one Melaka district decodes to an offshore sliver and loses its mainland extent entirely, so its coverage row is near-meaningless. Cross-check decoded polygon area against the published area before trusting a single district.
  • The disaster feed is an exposure proxy. NADMA MyDIMS geopoints are district centroids, not inundation polygons, so the war room's district roll-up is the robust unit and per-site distances are indicative.
  • Vintages differ. Coverage tiles are Aug 2025, the tower inventory Dec 2019, rainfall 2014–2023, population 2020 or the current roll. Fine for prioritisation; not a snapshot of one moment.

Reproducing it

One command per state runs the whole chain — extract inputs, sample coverage at centroid then polygon, join risk and population, compute terrain, rainfall and heat, then assemble. The scoring step reads CSVs and writes CSVs; if a hazard layer is missing it falls back to incident history and says so in the output rather than silently scoring zero.

Grid data last rebuilt 2026-07-03. Built by AGA TOUCH. This is a methodology proof of concept, not an operator commitment, and no number here should be read as a service-level statement by any licensee.