Calculation reference
TAM Features & Formulas
Signal families first, actual TAM formula second, dataset CSVs third, raw feature inventory last.
Signal Families
The calculation starts with seven signal families. Each family feeds a specific part of the TAM formula before the raw column list appears.
| family | role | feature groups | formula touchpoint | fields |
|---|---|---|---|---|
| Household base | How many residential households can exist in the grid cell. | Building footprintsGHSL built-up/populationPopulation denominatorDenominator v3 and reconciliation | H_residential | 80 |
| Residential eligibility | Whether the cell is physically plausible residential demand. | Land use and slum contextLandcover and physical exclusionsMorphology proxiesHazard and flood context | residential mask + flood penalties | 49 |
| Income gate | Share of households likely inside the 0-10 LPA target band. | Income gate and welfare contextCensus housing/amenity assetsNightlights | P(0-10 LPA) | 74 |
| Serviceability | Whether the household base can be reached and served. | Conversion and map coveragePOI/serviceabilityRoad/serviceabilityBharatNet/BBNL backhaul | conversion_feasibility_score | 40 |
| Execution readiness | Weak public proxy for activation and operating feasibility. | Execution readiness | execution_readiness_score | 7 |
| Spatial context | Cell, city, district, and neighbor context used by ranks and graph features. | Spatial/city contextGeoHG graph context | city_rank(x), graph context | 117 |
| TAM outputs | Calculated gross, serviceable, acquirable, priority, and power-score fields. | TAM score outputsStatus and reason codes | gross -> serviceable -> acquirable -> power | 28 |
Actual TAM Formula
The score is calculated as residential households times income eligibility and scope, then narrowed by serviceability and execution multipliers.
H_residentialH_residential * P(0-10LPA) * scopegross * conversionserviceable * executionpower(gross, gamma=0.60)households_est_primary_probefirst_non_null(households_est_worldpop_census_avg_size, worldpop_households_est_avg_size_4_6, households_est_uniform_district_density, 0), clipped at lower bound 0Read as: Estimate the household base before income, scope, or serviceability multipliers are applied.
- clip(census_2011_avg_household_size, 3.0, 7.5), with missing filled as 4.6
- worldpop_population_est_nearest / household_size_census_context
- clip(0.35*population_quality + 0.25*distance_quality + 0.25*census_quality + 0.15*disagreement_quality, 0, 1)
residential_confidence_probemin(raw_residential_confidence, 0.84 if building_source_coverage_flag > 0 else 0.80)Read as: Down-weight cells that look sparse, non-residential, or weakly addressable as household demand.
- clip(0.50*city_rank(worldpop_density_people_per_km2) + 0.20*city_rank(poi_context) + 0.30*city_rank(building_residential_density_score), 0, 1)
- clip(5.0 * mumbai_slum_share, 0, 1)
- 0.35 when airport_or_energy_poi_count > 0 and worldpop_density_city_rank < 0.35, else 0.0
- landcover/built-form residential eligibility multiplied by (1 - flood_history_feasibility_penalty)
income_0_10lpa_prob_probeblend pre-gate and gate candidate with weight clip(0.40 + 0.34*income_gate_confidence, 0, 0.74) when gate prior is availableRead as: Estimate the share of households likely to fall inside the 0-10 LPA target band.
- clip(0.50*city_rank(nightlight_log1p_mean_2024) + 0.25*city_rank(poi_context) + 0.15*city_rank(worldpop_density_people_per_km2) - 0.10*slum_residential_signal, 0, 1)
- clip(income_gate_city_prior_0_10lpa_prob - 0.090*(cell_wealth-0.5) - 0.055*(admin_affluence-0.5) + 0.065*(admin_deprivation-0.5) + 0.050*slum - 0.020*nonres, 0.48, 0.97)
- clip(0.30 + 0.20*nightlight_present + 0.16*census_hl_context_present + 0.18*income_gate_confidence + 0.06*poi_context_positive + 0.05*slum_signal_positive, 0, 0.86)
serviceable_prob_probe / conversion_feasibility_scoreclip(0.35 + 0.55*serviceability_supply_friction_score, 0.20, 0.90)Read as: Translate road, POI, graph, BBNL, and map-coverage context into can-serve feasibility.
- clip(0.45*road_access_score + 0.35*city_rank(poi_context) + 0.20*city_rank(graph_degree), 0, 1)
- when BBNL coverage exists, serviceability_supply_friction_score = 0.72*public_serviceability_base + 0.28*bbnl_backhaul_readiness_score
- base road/POI/addressability/cluster/map score multiplied by (1 - flood_history_installability_penalty)
- clip(0.18 * flood_history_risk_score when IFI/DFSI coverage exists, 0, 0.18)
execution_readiness_scoremissing-aware mean of connectivity proxy, tower/speed/measurement signals when available, and bbnl_backhaul_readiness_score; confidence remains capped for proxy/archive sourcesRead as: Apply weak public readiness signals after gross and serviceable TAM have been calculated.
- connectivity, tower, speed, measurement, and BBNL readiness signals are missing-aware inputs
- fallback = conservative blend of serviceability confidence and conversion feasibility
gross / serviceable / acquirable / priorityh_residential_households_base * income_0_10lpa_prob_probe * scope_share_in_scope_v3 | gross_tam_0_10lpa_v3 * conversion_feasibility_score | serviceable_tam_0_10lpa_v3 * execution_readiness_score | clip(100 * city_rank(acquirable_tam_0_10lpa_v3) * component_confidence_score_v3, 0, 100)Read as: The current v3 calculation starts from residential households, applies income and scope, then applies conversion and execution multipliers.
- city_rank(x) = pandas groupby(city).rank(pct=True, method='average'), then fill missing with 0.5 and clip to [0, 1]
- clip(0.35*denominator_confidence + 0.25*residential_confidence_probe + 0.20*income_proxy_confidence + 0.20*serviceability_confidence, 0, 1)
- lower/upper combine h_residential lower/upper with income probability uncertainty; no vendor scaling
predicted_tam_0_10lpa_powerweights = power(clip(gross_tam_0_10lpa_v3, lower=0), gamma=0.6); predicted_tam_0_10lpa_power = weights * sum(gross_tam_0_10lpa_v3) / sum(weights); scale_policy = global_no_vendor_base_total_preservedRead as: The map-facing TAM layer is a monotone power transform of the no-vendor gross v3 TAM surface that preserves the base total.
- base column = gross_tam_0_10lpa_v3
- gamma = 0.6
- vendor_tam_used_for_scaling = False
Score output fields
gross_tam_0_10lpa_probeserviceable_tam_0_10lpa_probeacquirable_tam_0_10lpa_probehouseholds_denominator_v2eligible_households_v2gross_tam_0_10lpa_v2serviceable_tam_0_10lpa_v2acquirable_tam_0_10lpa_v2households_residential_v3households_residential_v3_lowerhouseholds_residential_v3_upperscope_share_in_scope_v3scope_share_status_v3gross_tam_0_10lpa_v3gross_tam_0_10lpa_v3_lowergross_tam_0_10lpa_v3_upperserviceable_tam_0_10lpa_v3acquirable_tam_0_10lpa_v3component_confidence_scorepriority_score_0_100component_confidence_score_v2priority_score_v2_0_100tam_v2_statuscomponent_confidence_score_v3priority_score_v3_0_100tam_v3_statuscalibration_statusreason_codesExact formula contract
| group | field | formula |
|---|---|---|
| rank operator | city_rank | city_rank(x) = pandas groupby(city).rank(pct=True, method='average'), then fill missing with 0.5 and clip to [0, 1] |
| household denominator | household_size_census_context | clip(census_2011_avg_household_size, 3.0, 7.5), with missing filled as 4.6 |
| household denominator | households_est_worldpop_census_avg_size | worldpop_population_est_nearest / household_size_census_context |
| household denominator | households_est_primary_probe | first_non_null(households_est_worldpop_census_avg_size, worldpop_households_est_avg_size_4_6, households_est_uniform_district_density, 0), clipped at lower bound 0 |
| household denominator | source_disagreement_log_ratio | abs(log(households_est_primary_probe / households_est_uniform_district_density)), missing filled as 2.5 |
| household denominator | denominator_confidence | clip(0.35*population_quality + 0.25*distance_quality + 0.25*census_quality + 0.15*disagreement_quality, 0, 1) |
| residential proxy | poi_context | log1p(poi_education_count_2km + poi_police_count_2km) |
| residential proxy | built_form_proxy_score | clip(0.50*city_rank(worldpop_density_people_per_km2) + 0.20*city_rank(poi_context) + 0.30*city_rank(building_residential_density_score), 0, 1) |
| residential proxy | slum_residential_signal | clip(5.0 * mumbai_slum_share, 0, 1) |
| residential proxy | non_residential_exclusion_score | 0.35 when airport_or_energy_poi_count > 0 and worldpop_density_city_rank < 0.35, else 0.0 |
| residential proxy | raw_residential_confidence | clip(0.18 + 0.52*built_form_proxy_score + 0.12*slum_residential_signal - 0.20*non_residential_exclusion_score, 0.05, 0.80) |
| residential proxy | residential_confidence_probe | min(raw_residential_confidence, 0.84 if building_source_coverage_flag > 0 else 0.80) |
| residential proxy | flood_history_feasibility_penalty | clip(0.20 * flood_history_risk_score when IFI/DFSI district coverage exists, 0, 0.20) |
| residential proxy | residential_eligible_area_share_v2 | landcover/built-form residential eligibility multiplied by (1 - flood_history_feasibility_penalty) |
| income proxy | base_affluence_proxy_score | clip(0.50*city_rank(nightlight_log1p_mean_2024) + 0.25*city_rank(poi_context) + 0.15*city_rank(worldpop_density_people_per_km2) - 0.10*slum_residential_signal, 0, 1) |
| income proxy | census_hl_affluence_context_score | when HLPCA present: clip(0.45*census_hl_asset_affluence_score + 0.25*census_hl_housing_quality_score + 0.20*census_hl_basic_amenity_score + 0.10*(1 - census_hl_amenity_deficit_score), 0, 1) |
| income proxy | income_gate_context_affluence_score | missing-aware blend of income_gate_external_affluence_score, income_gate_cell_wealth_score, income_gate_admin_affluence_score, and base/HLPCA affluence |
| income proxy | affluence_proxy_score | legacy base/HLPCA affluence blended toward income_gate_context_affluence_score with weight clip(0.20 + 0.32*income_gate_confidence, 0, 0.52) |
| income proxy | income_0_10lpa_prob_pre_gate_proxy | legacy formula: clip(0.92 - 0.25*affluence_proxy_score - 0.035*census_hl_asset_affluence + 0.050*census_hl_deficit + 0.06*slum - 0.02*nonres, 0.50, 0.97) |
| income proxy | income_gate_prob_candidate | clip(income_gate_city_prior_0_10lpa_prob - 0.090*(cell_wealth-0.5) - 0.055*(admin_affluence-0.5) + 0.065*(admin_deprivation-0.5) + 0.050*slum - 0.020*nonres, 0.48, 0.97) |
| income proxy | income_0_10lpa_prob_probe | blend pre-gate and gate candidate with weight clip(0.40 + 0.34*income_gate_confidence, 0, 0.74) when gate prior is available |
| income proxy | income_proxy_confidence | clip(0.30 + 0.20*nightlight_present + 0.16*census_hl_context_present + 0.18*income_gate_confidence + 0.06*poi_context_positive + 0.05*slum_signal_positive, 0, 0.86) |
| serviceability proxy | road_access_score | if pmgsy_road_source_available > 0 then 1 - clip(pmgsy_road_nearest_distance_km / 5.0, 0, 1), else 0.40 |
| serviceability proxy | map_coverage_confidence | 0.75 when pmgsy_road_source_available > 0 else 0.35 |
| serviceability proxy | serviceability_supply_friction_score | clip(0.45*road_access_score + 0.35*city_rank(poi_context) + 0.20*city_rank(graph_degree), 0, 1) |
| serviceability proxy | bbnl_adjusted_serviceability | when BBNL coverage exists, serviceability_supply_friction_score = 0.72*public_serviceability_base + 0.28*bbnl_backhaul_readiness_score |
| serviceability proxy | serviceable_prob_probe | clip(0.35 + 0.55*serviceability_supply_friction_score, 0.20, 0.90) |
| serviceability proxy | serviceability_confidence | clip(0.48*map_coverage_confidence + 0.34*poi_context_present + 0.18*bbnl_coverage, 0, 0.84 when BBNL exists else 0.80) |
| flood and execution modifiers | flood_history_installability_penalty | clip(0.18 * flood_history_risk_score when IFI/DFSI coverage exists, 0, 0.18) |
| flood and execution modifiers | conversion_feasibility_score | base road/POI/addressability/cluster/map score multiplied by (1 - flood_history_installability_penalty) |
| flood and execution modifiers | execution_readiness_score | missing-aware mean of connectivity proxy, tower/speed/measurement signals when available, and bbnl_backhaul_readiness_score; confidence remains capped for proxy/archive sources |
| final scores | gross_tam_0_10lpa_probe | clip(households_est_primary_probe * income_0_10lpa_prob_probe * residential_confidence_probe, lower=0) |
| final scores | serviceable_tam_0_10lpa_probe | gross_tam_0_10lpa_probe * serviceable_prob_probe |
| final scores | component_confidence_score | clip(0.35*denominator_confidence + 0.25*residential_confidence_probe + 0.20*income_proxy_confidence + 0.20*serviceability_confidence, 0, 1) |
| final scores | priority_score_0_100 | clip(100 * city_rank(serviceable_tam_0_10lpa_probe) * component_confidence_score, 0, 100) |
| final scores | gross_tam_0_10lpa_v2 | eligible_households_v2 * income_0_10lpa_prob_probe |
| final scores | serviceable_tam_0_10lpa_v2 | gross_tam_0_10lpa_v2 * conversion_feasibility_score |
| final scores | acquirable_tam_0_10lpa_v2 | serviceable_tam_0_10lpa_v2 * execution_readiness_score |
| final scores | priority_score_v2_0_100 | clip(100 * city_rank(acquirable_tam_0_10lpa_v2) * component_confidence_score_v2, 0, 100) |
| final scores | gross_tam_0_10lpa_v3 | h_residential_households_base * income_0_10lpa_prob_probe * scope_share_in_scope_v3 |
| final scores | serviceable_tam_0_10lpa_v3 | gross_tam_0_10lpa_v3 * conversion_feasibility_score |
| final scores | acquirable_tam_0_10lpa_v3 | serviceable_tam_0_10lpa_v3 * execution_readiness_score |
| final scores | priority_score_v3_0_100 | clip(100 * city_rank(acquirable_tam_0_10lpa_v3) * component_confidence_score_v3, 0, 100) |
| final scores | gross_tam_0_10lpa_v3_interval | lower/upper combine h_residential lower/upper with income probability uncertainty; no vendor scaling |
| predicted TAM transform | predicted_tam_0_10lpa_power | weights = power(clip(gross_tam_0_10lpa_v3, lower=0), gamma=0.6); output = weights * base_total / weight_total; scale_policy = global_no_vendor_base_total_preserved |
Dataset CSVs
These are the CSVs used by the TAM calculation path, sorted from finer spatial evidence such as meter-scale, cell, and 1 km sources toward buffers, radius counts, district joins, and city rollups. GeoHG features are called out separately because they are the bridge between source layers and the TAM formula table.
outputs/geohg_features/cell_features_geohg_style.csv as inputs.geohg_features. The matrix is a 0.01-degree grid-cell input; graph context is one-hop neighborhood evidence; POI context can be cell-level or 2 km buffer evidence.GeoHG granularity used by TAM
cell_features_geohg_style.csv is one row per grid cell and is the direct TAM formula input.
The matrix carries source-layer signals at their effective precision, then exports them on grid-cell rows.
graph_ctx_* fields aggregate adjacent cells, so they are broader than the base cell.
POI edges link points to cells; selected POI features also use 2 km centroid buffers.
GeoHG CSVs and formula touchpoints
| CSV | purpose | granularity | rows | cols | formula touchpoint | type |
|---|---|---|---|---|---|---|
GeoHG feature matrixcell_features_geohg_style.csvoutputs/geohg_features | Direct input read by TAM gap-closure as inputs.geohg_features; it carries the joined cell signals that formulas consume. | One row per 0.01-degree grid cell; contains source-layer signals, local context, and graph-derived columns. | 7,029 | 213 | all source signal families before TAM formulas | used by formula |
GeoHG graph-context columnscell_features_geohg_style.csvoutputs/geohg_features | Graph-derived graph_ctx_* columns inside the GeoHG feature matrix. | One-hop aggregation over adjacent 0.01-degree grid cells; roughly 3.6 km across including the center cell. | 7,029 | 106 | GeoHG graph context, conversion, serviceability | used by formula |
GeoHG area-area edgesarea_area_edges.csvoutputs/geohg_features | Grid-neighbor edge list used to create one-hop graph context features. | Adjacent 0.01-degree cells; one-hop context is roughly 3.6 km across including center cell. | 24,203 | 2 | graph_ctx_neighbor_mean_* and graph_ctx_self_minus_neighbor_* | GeoHG edge |
GeoHG entity-area edgesentity_area_edges.csvoutputs/geohg_features | Entity/source records linked to their grid cell for local context. | Entity or source record linked to a 0.01-degree grid cell. | 21,381 | 3 | entity and spatial context features | GeoHG edge |
GeoHG POI-area edgespoi_area_edges.csvoutputs/geohg_features | Point POIs linked to grid cells for POI counts and serviceability context. | Point POIs linked to cells; selected features also use 2 km centroid buffers. | 5,668 | 3 | POI/serviceability and conversion feasibility | GeoHG edge |
Formula and matrix CSVs
| CSV | purpose | granularity | rows | cols | formula touchpoint | type |
|---|---|---|---|---|---|---|
Base grid CSVgeoiq_grids.csv | Defines grid_id, city, geometry, and the grid rows used by the current TAM reference. | 0.01-degree grid cell; median side 1.18 km; city assignment on each row. | 7,029 | 4 | row identity and geometry | base |
Denominator foundationcell_denominator_foundation.csvoutputs/denominator_foundation | Builds the public household denominator foundation before final TAM scoring. | 0.01-degree grid cell with district controls, 1 km population, GHSL, and building reconciliation. | 7,029 | 64 | H_residential household base | formula input |
Full India TAM scoresfull_india_tam_scores.csvoutputs/full_india_scored | Map-facing scored surface after applying the full-India deterministic TAM calculation. | 0.01 degrees, about 1.1 km north-south | 2,905,288 | 34 | predicted_tam_0_10lpa_power | formula output |
GeoHG cell feature matrixcell_features_geohg_style.csvoutputs/geohg_features | Joined feature matrix before gap-closure formulas are applied. | One row per current grid cell; exported as 0.01-degree cells with mixed source precision. | 7,029 | 213 | signal-family input matrix | feature matrix |
GeoHG entity-area edgesentity_area_edges.csvoutputs/geohg_features | Entity-to-area joins used by graph and local context features. | Entity or source record linked to a 0.01-degree grid cell. | 21,381 | 3 | entity context | graph csv |
TAM gap-closure featurestam_gap_closure_features.csvoutputs/tam_gap_closure | Primary formula CSV containing source-derived inputs plus gross, serviceable, acquirable, priority, and confidence outputs. | 0.01-degree grid-cell formula row. | 7,029 | 223 | gross/serviceable/acquirable/priority | formula output |
GeoHG area-area edgesarea_area_edges.csvoutputs/geohg_features | Grid-neighbor graph used to compute one-hop context features. | Adjacent 0.01-degree cells; one-hop context is roughly 3.6 km across including center cell. | 24,203 | 2 | GeoHG graph context | graph csv |
GeoHG POI-area edgespoi_area_edges.csvoutputs/geohg_features | POI-to-area joins used by local serviceability and context features. | Point POIs linked to cells; selected features also use 2 km centroid buffers. | 5,668 | 3 | POI and serviceability context | graph csv |
Census HLPCA housing and assetspigshell_hlpca_total_2011.csvoutputs/source_fetch/tables | Adds housing, amenity, and asset context used by income confidence and affordability proxies. | Census 2011 Houselisting/HLPCA district or local administrative table context before cell join. | 640 | 156 | income gate and household context | raw csv input |
TAM city summarytam_gap_closure_city_summary.csvoutputs/tam_gap_closure | City-level rollup of cell TAM and confidence outputs. | City rollup over the current grid cells. | 34 | 40 | city totals and medians | rollup |
Source-layer feature CSVs
| CSV | purpose | granularity | rows | cols | formula touchpoint | type |
|---|---|---|---|---|---|---|
Building footprintsbuilding_footprints_google_microsoftcell_features.csvoutputs/source_layers/building_footprints_google_microsoft/google_2023_msft_staged_snapshot | Built-form count, area, height, volume, and residential-density evidence. | Meter-scale building vectors aggregated to the 0.01-degree grid cell. | 7,029 | 13 | residential base and eligibility | direct |
Connectivity execution readinessconnectivity_execution_readinesscell_features.csvoutputs/source_layers/connectivity_execution_readiness/dated_opencellid_ookla_mlab_required | Weak public connectivity and measurement-coverage proxy for execution feasibility. | 0.01-degree grid-cell readiness scores and coverage flags. | 7,029 | 3 | execution readiness multiplier | proxy |
GHSL population and built-upghsl_population_builtupcell_features.csvoutputs/source_layers/ghsl_population_builtup/named_release_required | Independent population, built surface, volume, height, and settlement evidence. | GHSL 30-arcsecond, about 1 km raster/source fields joined or aggregated to grid cells. | 7,029 | 10 | denominator and residential plausibility | direct |
Landcover and hard masksesa_worldcover_dynamic_worldcell_features.csvoutputs/source_layers/esa_worldcover_dynamic_world/worldcover_2020_2021_dynamic_world_pinned_window_required | Built, water, tree, crop, and non-residential exclusion shares. | Exported as 0.01-degree cell shares; proxy/source raster window until full pinned masks are staged. | 7,029 | 12 | residential mask and physical exclusions | proxy |
Residential morphology tagsresidential_morphology_tagscell_features.csvoutputs/source_layers/residential_morphology_tags/building_landcover_public_proxy_v1 | Dense old-city, informal, high-rise, CBD/industrial, and periurban pattern scores. | Derived 0.01-degree grid-cell scores from building, landcover, and density proxies. | 7,029 | 6 | residential eligibility and income modifiers | proxy |
Roads, POIs, and map coverageosm_overture_ohsome_roads_poiscell_features.csvoutputs/source_layers/osm_overture_ohsome_roads_pois/dated_extract_required | Access, addressability, settlement, POI mix, and mapping coverage context. | Cell centroid distances, 0.01-degree cell scores, and local road/POI context. | 7,029 | 9 | conversion feasibility | proxy |
WorldPop population densityworldpop_population_densitycell_features.csvoutputs/source_layers/worldpop_population_density/2020_ascii_xyz_local | Population denominator and density evidence for household base. | WorldPop 2020 1 km ASCII XYZ source point joined to each grid-cell centroid. | 7,029 | 2 | H_residential denominator | direct |
BharatNet/BBNL backhaulbbnl_bharatnet_serviceabilitycell_features.csvoutputs/source_layers/bbnl_bharatnet_serviceability/bbnl_parsed_archive_20220302_probe | Public backhaul proximity and node-count evidence for serviceability/readiness. | Nearest-node distances plus 5 km and 10 km radius counts from each cell centroid. | 7,029 | 10 | conversion and execution readiness | proxy |
Income public contextincome_public_contextcell_features.csvoutputs/source_layers/income_public_context/income_gate_public_context_v2 | Public welfare, affluence, deprivation, city-prior, and income-band gate evidence. | Mixed city, district, and cell proxy fields exported on each grid-cell row. | 7,029 | 28 | P(0-10 LPA) income gate | proxy |
Census 2011 controlscensus_2011_official_controlscell_features.csvoutputs/source_layers/census_2011_official_controls/2011_fixed_release | Official population and household controls used to anchor denominator estimates. | Census 2011 district/control context joined to grid cells by district code. | 7,029 | 2 | household-size and denominator reconciliation | direct |
IFI/DFSI flood historyifi_dfsi_flood_historycell_features.csvoutputs/source_layers/ifi_dfsi_flood_history/ifi_dfsi_zenodo_2026_probe | Flood-history risk and confidence penalty for installability and feasibility. | District flood-history/event context joined to grid cells by district/city mapping. | 7,029 | 11 | flood penalty on eligibility and conversion | proxy |
Raw source CSVs staged before feature export
| raw CSV | source layer | purpose | native granularity | status |
|---|---|---|---|---|
ind_pd_2020_1km_ASCII_XYZ.csvprior art/yashveeeeeeer_india-geodata/data/remote-sensing/population-density | worldpop_population_density | Population denominator and density evidence for household base. | 1 km gridded population source before nearest-centroid join. | present 225.4 MB |
bbnl_active_gp_status_20220302.csvoutputs/source_fetch/prior_art_expansion_20260603/tables | bbnl_bharatnet_serviceability | Public backhaul proximity and node-count evidence for serviceability/readiness. | Point/node table; exported as nearest distances plus 5 km and 10 km radius counts. | present 13.8 MB |
bbnl_active_gps_20220302.csvoutputs/source_fetch/prior_art_expansion_20260603/tables | bbnl_bharatnet_serviceability | Public backhaul proximity and node-count evidence for serviceability/readiness. | Point/node table; exported as nearest distances plus 5 km and 10 km radius counts. | present 8.7 MB |
bbnl_fpoi_locations_phase1_20220302.csvoutputs/source_fetch/prior_art_expansion_20260603/tables | bbnl_bharatnet_serviceability | Public backhaul proximity and node-count evidence for serviceability/readiness. | Point/node table; exported as nearest distances plus 5 km and 10 km radius counts. | present 2.6 MB |
bbnl_gp_locations_phase1_20220302.csvoutputs/source_fetch/prior_art_expansion_20260603/tables | bbnl_bharatnet_serviceability | Public backhaul proximity and node-count evidence for serviceability/readiness. | Point/node table; exported as nearest distances plus 5 km and 10 km radius counts. | present 5.9 MB |
bbnl_olt_locations_phase1_20220302.csvoutputs/source_fetch/prior_art_expansion_20260603/tables | bbnl_bharatnet_serviceability | Public backhaul proximity and node-count evidence for serviceability/readiness. | Point/node table; exported as nearest distances plus 5 km and 10 km radius counts. | present 858.1 KB |
maharashtra_district_gddp_per_capita_income_2025_26.csvoutputs/source_fetch/income_gate/tables | income_public_context | Public welfare, affluence, deprivation, city-prior, and income-band gate evidence. | District-level public context before cell-level export. | present 5.7 KB |
nfhs5_districts_derived_jvargh7.csvoutputs/source_fetch/income_gate/tables | income_public_context | Public welfare, affluence, deprivation, city-prior, and income-band gate evidence. | District-level public context before cell-level export. | present 8.6 MB |
ifi_dfsi.csvoutputs/source_fetch/prior_art_expansion_20260603/tables | ifi_dfsi_flood_history | Flood-history risk and confidence penalty for installability and feasibility. | District/event flood-history table before district-to-cell join. | present 28.4 KB |
ifi_district_flood_impact.csvoutputs/source_fetch/prior_art_expansion_20260603/tables | ifi_dfsi_flood_history | Flood-history risk and confidence penalty for installability and feasibility. | District/event flood-history table before district-to-cell join. | present 18.7 KB |
ifi_district_flooded_area.csvoutputs/source_fetch/prior_art_expansion_20260603/tables | ifi_dfsi_flood_history | Flood-history risk and confidence penalty for installability and feasibility. | District/event flood-history table before district-to-cell join. | present 31.8 KB |
ifi_india_flood_inventory_v3.csvoutputs/source_fetch/prior_art_expansion_20260603/tables | ifi_dfsi_flood_history | Flood-history risk and confidence penalty for installability and feasibility. | District/event flood-history table before district-to-cell join. | present 1.7 MB |
pigshell_hlpca_total_2011.csvoutputs/source_fetch/tables | income_public_context | Public welfare, affluence, deprivation, city-prior, and income-band gate evidence. | Census 2011 Houselisting/HLPCA administrative table context. | present 438.0 KB |
pca-total.csvprior art/pigshell_india-census-2011 | census_2011_official_controls | Official population and household controls used to anchor denominator estimates. | Census 2011 district/control table before grid-cell join. | present 341.7 KB |
meta_relative_wealth_index_india_pakistan.csvoutputs/source_fetch/income_gate/tables | income_public_context | Public welfare, affluence, deprivation, city-prior, and income-band gate evidence. | Public wealth-index context joined through income-gate geography. | present 19.7 MB |
Raw Feature Inventory
Feature groups are sorted by effective granularity: fine local evidence first, then buffer/radius signals, then mixed, district, and city-level joins.
Feature precision sorted by granularity
Source scale: Google/Microsoft building footprint polygons, meter-scale vector geometries.
Exported scale: Footprint count/area/height/volume proxies aggregated into each 0.01-degree cell; exported precision is the cell, about 1.18 km side in the current grid.
Read as: Cell-level aggregation is about 1 km; footprint areas themselves are vector-derived.
Source scale: GHSL 2020 30-arcsecond population, built-surface, built-volume, height, and non-residential raster tiles.
Exported scale: Raster/source-layer values aggregated or joined to the 0.01-degree grid cell, about 1.18 km side in the current grid.
Read as: These are independent physical-denominator signals; they still require reconciliation against Census, WorldPop, and building footprints.
Source scale: Local polygon overlays: Mumbai slum clusters and Hyderabad land-use where overlapping.
Exported scale: Polygon-overlap area/share aggregated into each 0.01-degree cell.
Read as: Coverage is city-specific; zero may mean no local overlap source, not absence of slum or land use.
Source scale: ESA WorldCover/Dynamic World source-layer proxy fields plus local hard/soft exclusion logic.
Exported scale: Built/water/tree/crop/non-residential shares and exclusion flags written at 0.01-degree cell level, about 1.18 km side.
Read as: These fields can suppress or downweight physical impossibility; they do not label income or demand.
Source scale: Derived morphology tags from building, landcover, density, and public-context proxies.
Exported scale: Cell-level scores for dense old city, informal density, highrise affordability, CBD/industrial, and periurban vacancy patterns.
Read as: Use as denominator or income modifiers only after source-disagreement and morphology holdout review.
Source scale: WorldPop 2020 1 km ASCII XYZ point grid.
Exported scale: Nearest 1 km source point to each 0.01-degree cell centroid; population estimate scales density by cell area.
Read as: nearest_distance_km exposes the join quality per cell.
Source scale: Public road, POI, OSM/Overture/ohsome proxy, settlement, addressability, and mapping-coverage context.
Exported scale: Cell-level conversion-feasibility and serviceability modifiers on the 0.01-degree grid.
Read as: These fields affect can-serve and conversion feasibility; they are not demand labels.
Source scale: Public connectivity and measurement-coverage proxies for delivery/payment/partner feasibility.
Exported scale: Cell-level readiness scores and coverage flags on the 0.01-degree grid.
Read as: Execution readiness is a weak acquirable-TAM modifier, not household demand or income evidence.
Source scale: Mixed public denominator context: WorldPop, Census 2011 controls, GHSL built form, building footprints, and public anchors.
Exported scale: Cell-level reconciliation probes on the 0.01-degree grid. Census 2011 district join; same district value repeats on all cells in that district. Within current grid coverage, median represented district footprint is 135.9 km2 (99 cells), equivalent square side about 11.7 km.
Read as: H_residential base/lower/upper fields are leakage-safe denominator probes but remain production-blocked until public-anchor QA and holdouts pass.
Source scale: 0.01-degree grid geometry plus Census district IDs.
Exported scale: 0.01-degree grid cells; median cell area 1.40 km2, equivalent square side about 1.18 km. Census 2011 district join; same district value repeats on all cells in that district. Within current grid coverage, median represented district footprint is 135.9 km2 (99 cells), equivalent square side about 11.7 km. Vendor city grid footprint; median represented city coverage is 135.5 km2 (98 cells), equivalent square side about 11.6 km.
Read as: Centroids and local x/y/radius are cell geometry; censuscode is a district assignment.
Source scale: Point GeoJSON layers for education, police, airport, and energy POIs.
Exported scale: Counts inside the 0.01-degree cell and counts inside a 2 km centroid buffer.
Read as: The *_2km columns are intentionally broader than the grid cell.
Source scale: One-hop graph aggregates over adjacent 0.01-degree grid cells.
Exported scale: 8-neighbour GeoHG context on the same grid; one-hop ring is adjacent/diagonal cells, roughly 3.6 km across including the center cell.
Read as: Graph context inherits precision from its base column and adds one 8-neighbour ring of smoothing.
Source scale: PMGSY road shapefile line vectors for available states.
Exported scale: Nearest-road distance from cell centroid, capped at 25 km; within_2km flag uses a 2 km threshold.
Read as: Coverage is state-limited; source_available and distance_missing must stay with the distance.
Source scale: Parsed public BBNL/BharatNet GP, FPOI, OLT, and active-GP coordinates from the 2022 archive.
Exported scale: Nearest-node distances and radius counts computed from each 0.01-degree grid-cell centroid.
Read as: Backhaul readiness affects serviceability/execution only. It is not demand, income, or household truth.
Source scale: Public income/welfare context: district income, NFHS, SHRUG/SECC/RWI-style fields, HLPCA context, and city priors.
Exported scale: Mixed district/city/cell proxy fields written to grid rows. Census 2011 district join; same district value repeats on all cells in that district. Within current grid coverage, median represented district footprint is 135.9 km2 (99 cells), equivalent square side about 11.7 km.
Read as: Income-gate fields estimate 0-10 LPA probability as a probe; they are not production-calibrated income truth.
Source scale: Census 2011 Houselisting/HLPCA district-total percentage shares from the downloaded pigshell mirror.
Exported scale: District aggregate joined to each cell by censuscode. Census 2011 district join; same district value repeats on all cells in that district. Within current grid coverage, median represented district footprint is 135.9 km2 (99 cells), equivalent square side about 11.7 km.
Read as: Housing, amenity, and asset shares are old district context repeated on cells; they are not current cell-level observations.
Source scale: District flood-atlas JSON records plus IFI/DFSI district flood-history and event CSVs.
Exported scale: District aggregate joined to each cell by censuscode. Census 2011 district join; same district value repeats on all cells in that district. Within current grid coverage, median represented district footprint is 135.9 km2 (99 cells), equivalent square side about 11.7 km.
Read as: Flood fields are feasibility/confidence priors and should not be read as within-cell flood pixels.
Source scale: VIIRS-derived district panel values, not raw pixel values in this CSV.
Exported scale: District aggregate joined to each cell by censuscode. Census 2011 district join; same district value repeats on all cells in that district. Within current grid coverage, median represented district footprint is 135.9 km2 (99 cells), equivalent square side about 11.7 km.
Read as: Current precision is district-level even though the underlying satellite product is finer.
Raw feature inventory
gobi_building_count_cellgobi_building_area_sum_m2gobi_building_area_sharegobi_building_area_density_km2gobi_building_area_mean_m2gobi_building_confidence_meanmsft_building_count_cellmsft_building_area_sum_m2msft_building_area_sharemsft_building_area_density_km2msft_building_area_mean_m2msft_building_height_mean_mbuilding_count_cell_bestbuilding_area_sum_m2_bestbuilding_count_density_per_km2_bestbuilding_area_density_km2_bestbuilding_area_share_bestbuilding_source_coverage_countbuilding_source_coverage_flagbuilding_population_per_buildingbuilding_footprint_area_per_person_m2building_msft_gobi_area_disagreement_log_ratiobuilding_msft_gobi_count_disagreement_log_ratiobuilding_msft_gobi_disagreement_flagbuilding_residential_density_scorebuilding_cluster_compactnessbuilding_height_mean_mbuilding_floor_count_proxybuilding_volume_proxy_m3building_vertical_density_proxybuilding_residential_volume_proxy_m3building_compactness_scoreghsl_population_estghsl_population_source_yearghsl_builtup_shareghsl_built_surface_m2ghsl_built_volume_m3ghsl_height_mean_mghsl_non_res_builtup_shareghsl_non_res_volume_shareghsl_settlement_scoreghsl_residential_candidate_sharemumbai_slum_area_m2mumbai_slum_sharelanduse_overlap_sharelandcover_builtup_sharelandcover_water_sharelandcover_tree_forest_sharelandcover_crop_sharelandcover_non_residential_exclusion_sharedynamic_world_built_probabilityresidential_eligible_area_sharephysical_hard_cell_flaglandcover_proxy_source_flaghard_exclusion_sharesoft_non_residential_downweight_sharehard_mask_reason_codebuilt_form_proxy_scoreresidential_confidence_proberesidential_eligible_area_share_v2physical_exclusion_scoreresidential_filter_confidenceresidential_filter_statusnon_residential_exclusion_scoreresidential_statusmorph_dense_old_city_scoremorph_informal_dense_scoremorph_highrise_affordable_scoremorph_cbd_industrial_scoremorph_periurban_vacant_scoremorphology_proxy_source_flagworldpop_density_people_per_km2worldpop_density_log1pworldpop_nearest_distance_kmworldpop_population_est_nearestworldpop_households_est_avg_size_4_6road_distance_mroad_intersection_densitysettlement_cluster_sizeaddressability_scorepoi_service_mix_scoreosm_mapping_coverage_scoreoverture_road_coverage_scoreconversion_proxy_source_flagroad_access_scorepoi_service_access_scoreserviceability_supply_friction_scoreserviceable_prob_probeserviceability_confidencemap_coverage_confidenceconversion_feasibility_scoreconversion_feasibility_confidenceconversion_feasibility_statusserviceability_statusmlab_measurement_coverage_scoreconnectivity_readiness_scoreexecution_proxy_source_flagexecution_readiness_signal_countexecution_readiness_scoreexecution_readiness_confidenceexecution_readiness_statuscensus_control_populationcensus_control_householdshouseholds_est_primary_probehousehold_size_census_contexthouseholds_est_worldpop_census_avg_sizedenominator_confidencesource_disagreement_log_ratioreconciled_population_probereconciled_households_probedenominator_population_source_countdenominator_disagreement_scoreimpossible_market_flagdenominator_v2_statuspopulation_prior_basepopulation_prior_lowerpopulation_prior_upperhousehold_size_admin_v3residential_allocation_weighthard_exclusion_share_v3non_residential_suppression_score_v3vertical_density_correctionoccupancy_correctionh_residential_households_unreconciledadmin_anchor_coverage_sharepublic_anchor_reconciliation_factorpublic_anchor_calibration_errorpublic_anchor_reconciliation_statush_residential_households_baseh_residential_households_lowerh_residential_households_upperh_residential_denominator_confidencehousehold_denominator_v3_statushousehold_denominator_statuscentroid_loncentroid_latpos_x_kmpos_y_kmpos_radius_kmcity_grid_colcity_grid_rowcity_cell_countcensuscodegrid_area_m2poi_education_count_cellpoi_education_count_2kmpoi_police_count_cellpoi_police_count_2kmpoi_airport_count_cellpoi_airport_count_2kmpoi_energy_count_cellpoi_energy_count_2kmgraph_ctx_neighbor_mean_gobi_building_count_cellgraph_ctx_self_minus_neighbor_gobi_building_count_cellgraph_ctx_neighbor_mean_gobi_building_area_sum_m2graph_ctx_self_minus_neighbor_gobi_building_area_sum_m2graph_ctx_neighbor_mean_gobi_building_area_sharegraph_ctx_self_minus_neighbor_gobi_building_area_sharegraph_ctx_neighbor_mean_gobi_building_area_density_km2graph_ctx_self_minus_neighbor_gobi_building_area_density_km2graph_ctx_neighbor_mean_gobi_building_area_mean_m2graph_ctx_self_minus_neighbor_gobi_building_area_mean_m2graph_ctx_neighbor_mean_gobi_building_confidence_meangraph_ctx_self_minus_neighbor_gobi_building_confidence_meangraph_ctx_neighbor_mean_msft_building_count_cellgraph_ctx_self_minus_neighbor_msft_building_count_cellgraph_ctx_neighbor_mean_msft_building_area_sum_m2graph_ctx_self_minus_neighbor_msft_building_area_sum_m2graph_ctx_neighbor_mean_msft_building_area_sharegraph_ctx_self_minus_neighbor_msft_building_area_sharegraph_ctx_neighbor_mean_msft_building_area_density_km2graph_ctx_self_minus_neighbor_msft_building_area_density_km2graph_ctx_neighbor_mean_msft_building_area_mean_m2graph_ctx_self_minus_neighbor_msft_building_area_mean_m2graph_ctx_neighbor_mean_msft_building_height_mean_mgraph_ctx_self_minus_neighbor_msft_building_height_mean_mgraph_ctx_neighbor_mean_building_count_cell_bestgraph_ctx_self_minus_neighbor_building_count_cell_bestgraph_ctx_neighbor_mean_building_area_share_bestgraph_ctx_self_minus_neighbor_building_area_share_bestgraph_ctx_neighbor_mean_building_area_density_km2_bestgraph_ctx_self_minus_neighbor_building_area_density_km2_bestgraph_ctx_neighbor_mean_building_residential_density_scoregraph_ctx_self_minus_neighbor_building_residential_density_scoregraph_ctx_neighbor_mean_building_population_per_buildinggraph_ctx_self_minus_neighbor_building_population_per_buildinggraph_ctx_neighbor_mean_building_footprint_area_per_person_m2graph_ctx_self_minus_neighbor_building_footprint_area_per_person_m2graph_ctx_neighbor_mean_building_source_coverage_flaggraph_ctx_self_minus_neighbor_building_source_coverage_flaggraph_ctx_neighbor_mean_building_msft_gobi_disagreement_flaggraph_ctx_self_minus_neighbor_building_msft_gobi_disagreement_flaggraph_ctx_neighbor_mean_ghsl_population_estgraph_ctx_self_minus_neighbor_ghsl_population_estgraph_ctx_neighbor_mean_ghsl_builtup_sharegraph_ctx_self_minus_neighbor_ghsl_builtup_sharegraph_ctx_neighbor_mean_ghsl_settlement_scoregraph_ctx_self_minus_neighbor_ghsl_settlement_scoregraph_ctx_neighbor_mean_landcover_builtup_sharegraph_ctx_self_minus_neighbor_landcover_builtup_sharegraph_ctx_neighbor_mean_landcover_water_sharegraph_ctx_self_minus_neighbor_landcover_water_sharegraph_ctx_neighbor_mean_landcover_tree_forest_sharegraph_ctx_self_minus_neighbor_landcover_tree_forest_sharegraph_ctx_neighbor_mean_landcover_crop_sharegraph_ctx_self_minus_neighbor_landcover_crop_sharegraph_ctx_neighbor_mean_landcover_non_residential_exclusion_sharegraph_ctx_self_minus_neighbor_landcover_non_residential_exclusion_sharegraph_ctx_neighbor_mean_residential_eligible_area_sharegraph_ctx_self_minus_neighbor_residential_eligible_area_sharegraph_ctx_neighbor_mean_physical_hard_cell_flaggraph_ctx_self_minus_neighbor_physical_hard_cell_flaggraph_ctx_neighbor_mean_road_distance_mgraph_ctx_self_minus_neighbor_road_distance_mgraph_ctx_neighbor_mean_road_intersection_densitygraph_ctx_self_minus_neighbor_road_intersection_densitygraph_ctx_neighbor_mean_settlement_cluster_sizegraph_ctx_self_minus_neighbor_settlement_cluster_sizegraph_ctx_neighbor_mean_building_cluster_compactnessgraph_ctx_self_minus_neighbor_building_cluster_compactnessgraph_ctx_neighbor_mean_addressability_scoregraph_ctx_self_minus_neighbor_addressability_scoregraph_ctx_neighbor_mean_poi_service_mix_scoregraph_ctx_self_minus_neighbor_poi_service_mix_scoregraph_ctx_neighbor_mean_osm_mapping_coverage_scoregraph_ctx_self_minus_neighbor_osm_mapping_coverage_scoregraph_ctx_neighbor_mean_mlab_measurement_coverage_scoregraph_ctx_self_minus_neighbor_mlab_measurement_coverage_scoregraph_ctx_neighbor_mean_connectivity_readiness_scoregraph_ctx_self_minus_neighbor_connectivity_readiness_scoregraph_ctx_neighbor_mean_poi_education_count_2kmgraph_ctx_self_minus_neighbor_poi_education_count_2kmgraph_ctx_neighbor_mean_poi_police_count_2kmgraph_ctx_self_minus_neighbor_poi_police_count_2kmgraph_ctx_neighbor_mean_poi_airport_count_2kmgraph_ctx_self_minus_neighbor_poi_airport_count_2kmgraph_ctx_neighbor_mean_poi_energy_count_2kmgraph_ctx_self_minus_neighbor_poi_energy_count_2kmgraph_ctx_neighbor_mean_nightlight_log1p_mean_2024graph_ctx_self_minus_neighbor_nightlight_log1p_mean_2024graph_ctx_neighbor_mean_nightlight_mean_growth_2012_2024graph_ctx_self_minus_neighbor_nightlight_mean_growth_2012_2024graph_ctx_neighbor_mean_Riskgraph_ctx_self_minus_neighbor_Riskgraph_ctx_neighbor_mean_MaxFractiongraph_ctx_self_minus_neighbor_MaxFractiongraph_ctx_neighbor_mean_mumbai_slum_sharegraph_ctx_self_minus_neighbor_mumbai_slum_sharegraph_ctx_neighbor_mean_worldpop_density_people_per_km2graph_ctx_self_minus_neighbor_worldpop_density_people_per_km2graph_ctx_neighbor_mean_worldpop_population_est_nearestgraph_ctx_self_minus_neighbor_worldpop_population_est_nearestgraph_ctx_neighbor_mean_pmgsy_road_nearest_distance_kmgraph_ctx_self_minus_neighbor_pmgsy_road_nearest_distance_kmgraph_ctx_neighbor_mean_pmgsy_road_within_2kmgraph_ctx_self_minus_neighbor_pmgsy_road_within_2kmgraph_ctx_neighbor_mean_pos_radius_kmgraph_ctx_self_minus_neighbor_pos_radius_kmgraph_degreepmgsy_road_nearest_distance_kmpmgsy_road_within_2kmpmgsy_road_source_availablepmgsy_road_distance_missingbbnl_nearest_gp_kmbbnl_gp_count_5kmbbnl_nearest_fpoi_kmbbnl_fpoi_count_10kmbbnl_nearest_olt_kmbbnl_olt_count_10kmbbnl_active_gp_count_10kmbbnl_backhaul_readiness_scorebbnl_source_coverage_flagbbnl_public_archive_source_flagincome_public_affluence_context_scoreincome_public_deprivation_context_scoreincome_public_asset_affluence_scoreincome_public_amenity_deficit_scoreincome_public_license_status_codeincome_public_proxy_source_flagincome_gate_city_segment_codeincome_gate_city_segment_prior_0_10lpa_probincome_gate_city_prior_0_10lpa_probincome_gate_district_income_pciincome_gate_district_income_affluence_scoreincome_gate_admin_affluence_scoreincome_gate_admin_deprivation_scoreincome_gate_nfhs_affluence_scoreincome_gate_nfhs_deprivation_scoreincome_gate_shrug_rwi_scoreincome_gate_shrug_consumption_scoreincome_gate_shrug_asset_affluence_scoreincome_gate_meta_rwi_rawincome_gate_meta_rwi_scoreincome_gate_meta_rwi_errorincome_gate_cell_wealth_scoreincome_gate_external_affluence_scoreincome_gate_source_countincome_gate_confidenceincome_gate_granularity_codeincome_gate_granularityincome_gate_statusincome_0_10lpa_prob_pre_gate_proxyincome_gate_prob_candidateincome_gate_final_weightincome_gate_adjustment_deltaincome_0_10lpa_prob_probeincome_proxy_confidenceincome_0_10lpa_prob_lower_v3income_0_10lpa_prob_upper_v3income_gate_context_affluence_scorebase_affluence_proxy_scoreaffluence_proxy_scoreincome_proxy_statuscensus_hl_precision_levelcensus_hl_context_presentcensus_hl_housing_quality_scorecensus_hl_basic_amenity_scorecensus_hl_asset_affluence_scorecensus_hl_amenity_deficit_scorecensus_hl_housing_good_sharecensus_hl_roof_concrete_sharecensus_hl_wall_burnt_brick_or_concrete_sharecensus_hl_floor_finished_sharecensus_hl_rooms_3plus_sharecensus_hl_electricity_sharecensus_hl_latrine_sharecensus_hl_lpg_png_sharecensus_hl_banking_sharecensus_hl_tv_sharecensus_hl_computer_internet_sharecensus_hl_mobile_phone_sharecensus_hl_scooter_motorcycle_sharecensus_hl_car_sharecensus_hl_no_asset_sharecensus_hl_source_pathcensus_hl_affluence_context_scoreVulnerabilityHazardExposureRiskMaxAreaMaxFractionflood_risk_bin_iddfsi_district_flood_severitydfsi_percent_flooded_areadfsi_corrected_percent_flooded_areadfsi_flood_impact_scoreifi_flood_event_countifi_high_severity_event_countifi_recent_event_countifi_latest_event_yearflood_history_risk_scoreflood_history_confidence_penaltyflood_history_source_coverage_flagflood_history_feasibility_penaltyflood_history_installability_penaltynightlight_log1p_mean_2012nightlight_log1p_mean_2019nightlight_log1p_mean_2024nightlight_mean_2012nightlight_mean_2019nightlight_mean_2024nightlight_sum_2012nightlight_sum_2019nightlight_sum_2024nightlight_mean_growth_2012_2024nightlight_bin_id