doxa-maps/data/internet/README.md
Doxa Maps 47a69fa1ce Cities with Internet: India by state, "ever used the internet", women and men
Country-level internet data is not good enough for India. This adds the first
sub-national layer, from the one open, machine-readable source verified for it:
NFHS-5 (2019-21, IIPS / MoHFW), "women / men aged 15-49 who have ever used the
internet (%)", urban / rural / total, for every state and UT (CSV transcription
of the state fact sheets, CC BY 4.0; SPEC-GRANULAR-INTERNET.md).

- data/internet/: the two NFHS-5 internet rows (with provenance, licence and
  upstream commit), plus a strict crosswalk from source names to the shipped
  gb-IND-ADM1 shapeNames.
- plugin-designs/cities-internet/scripts/build-adm1-internet.mjs (`bun run
  internet:adm1`) writes data/tables/internet-by-adm1.json. It is GENERIC, one
  row per iso3 x adm1 x measure x sex x area, with meta naming measures,
  sources, boundary files and the national figures, so go-int and other plugins
  can reuse it. It fails on an unmatched name or a value outside 0-100: a name
  is never guessed.
- The map draws India's states in a blue ramp (0-25-40-55-70%+), leading with
  women, with a Women / Men toggle. A tapped state shows both halves, urban /
  rural / total. Its own legend block names the measure, survey, years and ages,
  and says it counts people, not subscriptions, so it is never read as the
  World Bank country bands. India's national band is taken out under its states.
- The shipped boundary file is the UPG-100 partition (34 of 36 units): Mizoram
  and Nagaland have data but no geometry. They stay in the table and the legend
  names them.
- 8 new strings under connectivity.adm1, in all 11 locales (library change:
  consumers need rebuilding).

Headless: build and tree OK, and the table and gb-IND-ADM1 are staged under
assets/. The fill expression validates with maplibre-gl-style-spec, and all 34
shipped states get a colour (e.g. Bihar women 20.6 -> 0-25, Delhi men 85.2 ->
70+). A crosswalk poisoned to a wrong shapeName fails the generator. Passing:
universal-props, no-free-identifiers, i18n-parity, i18n-never-translated,
profiles-mount, composites-mount, no-orphan-gates, script-flags, quoted-scripts.
Not rendered in a browser.
2026-09-26 08:13:33 +00:00

1.6 KiB
Raw Blame History

data/internet/ — internet use below the country level

Source files for data/tables/internet-by-adm1.json, which plugin-designs/cities-internet/scripts/build-adm1-internet.mjs writes. Edit the sources here and re-run the script; never edit the table by hand.

nfhs5-internet-by-state.csv

  • What: India, National Family Health Survey 5 (NFHS-5, 2019–21, IIPS / Ministry of Health and Family Welfare), indicators 18 and 19: Women / Men (age 15–49) who have ever used the internet (%), by state/UT, urban / rural / total (plus the NFHS-4 total).
  • From: the two internet rows of NFHS-5-States.csv in https://github.com/pratapvardhan/NFHS-5 at commit 93c67fed2403c8e533d178d293c5ba0411892b1e, a CSV transcription of the official state fact sheets (http://rchiips.org/nfhs/). The transcriber notes that quality checks were minimal; the figures here were spot-checked against the national fact sheet (India: women 33.3%, men 57.1%).
  • Licence: the CSV is CC BY 4.0. Attribution: "NFHS-5 (IIPS/MoHFW) state fact sheets, via pratapvardhan/NFHS-5 (CC BY 4.0)".
  • Measure: a SURVEY SHARE OF PEOPLE (0–100%): has this person ever used the internet. It is not a subscription count (TRAI's "subscribers per 100" is a different measure and can exceed 100).

adm1-crosswalk-IND.json

Source state names → the shapeName of plugin-designs/my-upg-100-list/data/gb-IND-ADM1.geojson (served as assets/boundaries/gb-IND-ADM1.geojson). Every source name must appear here, with either the boundary name or null plus a reason. The build fails on anything else, never guesses.