# Methods and limits

## Units and vintage

Both official adopted-plan workbooks assign a single district to each of 276,428 Ohio 2020 Census blocks. Blocks use 15-character string GEOIDs: state (2) + county (3) + tract (6) + block (4). We require exactly the Census block universe in both plans, not merely a successful inner join. Duplicate rows, malformed GEOIDs, missing/extra blocks, or districts outside 1–15 stop the build.

The 2020 PL 94-171 geoheader is parsed using Census's downloaded header workbook. Summary level 750 provides blocks; 040 provides the state; 050 and 160 provide county/place names. We join segment 1 to geography on LOGRECNO, require unique records, and independently compare P0010001 with POP100. Summed block population equals the state population, 11,799,448; land and water sums also equal the state totals. This uses the published 2021 PL release, not later population estimates. Census disclosure avoidance affects small-area published counts; these are the published tabulations, not confidential counts.

The prior plan is the commission's adopted March 2, 2022 plan, not the earlier 2021 plan. The new plan is the commission's adopted October 31, 2025 plan, not its October 30 working plan. The Secretary of State labels the catalog sections 2022–2026 and 2026–2032 and explicitly says the latter starts in the 2026 election cycle. These labels are not interpreted as congressional term start dates.

## Population overlap and reassignment

For old district i and new district j, C[i,j] is the sum of 2020 population in blocks assigned to both. The 15×15 matrix includes zero cells. Row totals reproduce the old plan, column totals the new plan, and all cells the state. The long crosswalk supplies both row-normalized and column-normalized shares. Each direction answers a different question.

We use a maximum-weight one-to-one assignment (SciPy linear_sum_assignment on negative population) to choose 15 old/new district pairs with greatest total retained population. A block is reassigned when its new district differs from the paired successor of its old district. This is an analytical matching, not a legal district lineage claim. Renumbering alone therefore need not count as change. The matching here is uniquely determined: each diagonal entry strictly exceeds every other cell in its row, and the row maxima occupy different columns. Every pair is same-numbered; the same-number result is also reported as a check. This population-based matching is also used for land-area reassignment; it is not an independently land-optimized pairing.

Result: 1,478,290 people in 47,697 reassigned blocks; 24,737.632802 km² Census land and 282.861805 km² Census water. This counts population once, not once as an outgoing flow and again as an incoming flow. It measures a counterfactual reallocation of fixed 2020 counts, not residential migration.

## Community proxies and splits

Counties come from the block GEOID/geoheader. Census places come from the official 2020 INCPLACE_CDP block-assignment file. All 88 counties and 1,265 represented places are included. A blank place code denotes territory outside Census places and is excluded from place-level splits; its 3,458,481 people are explicitly reconciled separately. Townships, neighborhoods, school communities, and self-defined communities of interest are not fully represented by this place proxy.

We distinguish districts touching any block from districts with positive published population. A split has more than one such district. Counts are 14→15 county splits by either definition, 48→63 place splits by any-block territory, and 41→55 place splits by populated pieces. We also report population outside the largest district piece: entity population minus its largest district-population sum. Newly split counties are Butler, Mahoning, Perry, Richland, and Wayne; counties changing from split to unsplit are Fayette, Shelby, Tuscarawas, and Wyandot. Net change is +1, masking both directions.

Entity reassignment can be large even when its split count stays at one: an entire place can move districts. Split measures do not assess representation quality by themselves. Area is Census ALAND divided by 1,000,000; it excludes water, includes unpopulated land, and is distinct from population share.

## Reconstructed geometry

Official SoS SHAPE downloads were not available to this execution environment. Instead, we union official TIGER/Line 2020 Ohio tabulation blocks according to each commission workbook. The downloaded TIGER2020 directory identifies the Ohio ZIP with a 2023-01-06 modification time; that is a file modification date, not a 2023 block vintage. Its fields GEOID20, POP20, ALAND20, AWATER20 and source NAD83 CRS were inspected. Each GEOID, population, land and water value matches the 2020 PL block record exactly. All blocks and reconstructed districts must have valid, nonempty polygons; no silent geometry repair occurs.

Topological union occurs in source EPSG:4269. Geometries are then transformed to the contiguous-US Albers equal-area CRS EPSG:5070. Before measuring, tests require non-overlapping district interiors and identical statewide coverage, within 1 m² numerical tolerance. The shared block base avoids comparing boundaries digitized at different resolutions. It does not prove equality to inaccessible official SHAPE geometry or legal descriptions.

Descriptors on unsimplified polygons:

- Area including water, in km², and perimeter including water boundaries, in km.
- Polsby–Popper = 4π × area / perimeter². Shoreline detail strongly affects it.
- Convex-hull area ratio = polygon area / convex-hull area. This measures indentation differently from perimeter compactness; it is not Reock compactness.
- Polygon parts = count of polygon components. Islands and water can produce parts; this is not a legal contiguity finding.

Area sums from the projection need not exactly equal Census geodesic area attributes. Headline land area uses Census ALAND, not projected polygon area. EPSG:5070 conserves area but does not make every local length distortion zero. Alternative projections and shoreline conventions can change descriptor values. The SVG and downloadable display GeoJSON simplify each district to 200 m; independent display simplification may leave tiny apparent gaps/overlaps. Display geometry is never used for counts or measurements.

## Validation and interpretation

Both plans reproduce the population-only columns in their official statistics PDFs: 786,629 for old districts 2 and 8, and new districts 2 and 10; 786,630 for all others. Ideal population is 11,799,448 / 15 = 786,629.866666…; reported deviations use that exact ideal, not the PDFs' rounded ideal.

The official PDFs also contain partisan indices. These are not used by the pipeline, explorer or findings. No precinct votes are interpolated. No geometry descriptor establishes partisan fairness, illegality, discrimination, intent, or a 2026 election result. This project is informational and cannot replace official election administration information or address lookup.
