ILGISA 2026 · Peoria

Polygons from First Principles

How χGRIDs extend the UN's 2025 settlement methodology to neighborhood-scale geographies. Everything from the talk, and one question for you.

The recipe: the UN's 2025 rule in six steps, in ArcGIS Pro or QGIS

Data: GHS-WUP-POP E2025 and GHS-LAND, 1 km cells in the Mollweide projection (ESRI:54009), free from the JRC Global Human Settlement Layer. Check your result against the published GHS-WUP-DEGURBA class-30 cells. These tool chains are close equivalents of the replay shown in the talk, which matched the UN's Chicago boundary cell for cell.

StepRuleArcGIS ProQGIS
1. Start from the gridDownload GHS-WUP-POP E2025 (1 km, Mollweide ESRI:54009) and GHS-LAND from https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/GHSL/, and keep the grid in its own projection.add both rasters as-is; set the processing extent to your window and the cell size and snap raster to the population grid.Same: load both, align to the population grid.
2. Keep the dense squaresPeople per km² of land = population / (GHS-LAND m² / 1,000,000); a cell is dense at 1,500 or more.Raster Calculator: Con("pop" / ("land" / 1000000) >= 1500, 1).Raster Calculator with the same expression.
3. Connect edge to edgeDense cells that share an edge form one cluster; corners do not count.Region Group with number_neighbors FOUR.r.clump without the -d (diagonal) flag.
4. Require 50,000 peopleKeep clusters of 50,000 people or more.Zonal Statistics (SUM of population by region), then Con(sum >= 50000).r.stats.zonal method=sum, then the Raster Calculator.
5. Fill small holesFill enclosed gaps smaller than 15 km² inside each surviving cluster.Region Group on the non-cluster cells (FOUR); fill groups under 15 cells that do not touch the outside.r.clump on the gaps, r.stats to count cells, then the Raster Calculator.
6. Smooth by majority vote3×3 majority vote among land cells, the centre included; ties join; cells are only added; repeat until nothing changes.Focal Statistics (3×3 rectangle, SUM) on the cluster mask and on the land mask; add cells where cluster sum ≥ half the land sum; iterate.r.neighbors size=3 method=sum on both masks, same rule, iterate.
Does your organization report by ZIP, tract or municipality?

One email back, nothing recurring.