# Maine census database — FLAGS (v1.3, 2026-10-14)

> **Status check 2026-10-02.** Two items below are done elsewhere: township-level 2020 population and housing units (§1, §6) are in `geography/town_attributes.csv` (every unorganized township, from the GeoLibrary boundaries × 2020 blocks), and county-commissioner districts (§6) are in `geography/` (2013 and 2021 plans) and scored in `scores_v2/`. The §2 display rule has been adopted: the site shows `low`-reliability values only with their ± margin. Still not done: ACS 1-year series, pre-2010 ACS vintages, Places/CDPs, and the yearly December refresh for the next ACS vintage (2021–2025, due December 2026).


Everything that needed a judgment call, and every place the data are weaker than they look.

## 1. Places with no Census data of their own

* **Unorganized townships.** The Census Bureau publishes town-level statistics only for its *county subdivisions*. In Maine those are the 480-odd organized cities, towns and plantations plus **36 "UT" aggregates**, one or a few per county, into which every unorganized township is folded (e.g. "South Aroostook UT", "Northwest Piscataquis UT"). So the 172 township units that appear in the election files (T7 SD, Cross Lake Twp, Rockwood Strip…) have **no Census row**; `unit_census_crosswalk.csv` says so on each and (v1.2) gives the containing UT in `parent_ut_geoid` for 111 of them (see §7). Their 2020 Census population *is* recoverable from `block_assignments.csv` if a township-boundary file is added later (the Maine GeoLibrary publishes one); not done in v1.
* **De-organized places.** Oxbow (2017), Cary (2019), Atkinson (2019), Madrid (2000), Centerville (2004) and Magalloway (2021) were separate towns/plantations in earlier Censuses and are now inside a UT aggregate; Bancroft (2015), Codyville (2019) and Drew (2023) became UTs of their own. Years are from the State Auditor's list of deorganizations ("2023 deorgs by year", maine.gov/audit); v1.2 had Oxbow 2016 and Drew 2019 (corrected in v1.3). Since v1.2 their old counts are carried on (or added into) the current row — see §7.
* **Historical-only rows** also include "County subdivisions not defined" (offshore water, zero population) for Cumberland, Lincoln, Sagadahoc and York.

## 2. Margins of error

* ACS 5-year figures for small towns are noisy. `census_profile.csv` carries a `_reliability` flag for every ACS indicator: `ok` (coefficient of variation ≤15%), `medium` (15–30%), `low` (>30%). For a town of 500 people most percentages are `medium` or `low`. Yarmouth's poverty rate (10.2% ± 8.4) is `low`. Display rule suggested for the site: show `low` values only with their ± range, or not at all.
* Where the Bureau publishes a percentage but not the underlying count (poverty rates, unemployment rate) the profile uses the published percentage and its margin; the custom-region aggregator recomputes them from the detailed tables (B17001, B23025-style counts), which is why an aggregate can differ from a published percentage by 0.1 point.
* Medians cannot be summed. `aggregate.py` re-derives medians for custom regions from binned distributions; the check against Cumberland County came out at 95,757 vs the Bureau's 95,677 for household income, 451,181 vs 451,200 for home value, 1,589 vs 1,589 for rent, 42.4 vs 42.2 for median age.
* The Bureau's "jam values" are kept as published: a median printed as 250,001 means "$250,000 or more"; 2,499 means "less than $2,500"; 1,000,001 for home values means "$1,000,000 or more"; 3,501 for rent means "$3,500 or more". The `annotation` column in the long table carries the Bureau's symbol when one was printed.

## 3. Geography vintages

* ACS 2020–2024 legislative districts are the districts in force for the 2024 election (the 2021 apportionment plan). The 2020 Census (PL / DHC) tables were **not** pulled at the legislative-district level because that file uses the pre-2021 districts.
* Congressional districts: the two current districts (the 2021 plan; identical for the 118th–120th Congresses).
* `town_district_crosswalk.csv` and `block_assignments.csv` were built by intersecting the Bureau's current district boundaries (TIGERweb "2026 State Legislative Districts", "120th Congressional Districts") with the 47,138 2020 Census blocks, resolving the 455 (Congress), 2,663 (Senate) and 6,173 (House) blocks that touch a boundary by testing the block's internal point. Result: every block assigned, all 1,362,359 people accounted for; the two congressional districts come out at 681,170 and 681,189 (the plan's figures); Senate districts 37,121–40,798; House districts 8,578–9,465; town totals match the 2020 Census exactly.
* Checked against the SOS election files: every town-to-district pairing in the 2022 and 2024 State House, State Senate and U.S. House results also appears in the crosswalk (the only pairs in the election files without a crosswalk row are unorganized townships, §1). **v1.1 (2026-09-30):** `town_district_crosswalk.csv` and `block_assignments.csv` were rebuilt from the State of Maine's official Block Equivalency Files (the Apportionment Commission's block-by-block assignments, via the Maine GeoLibrary) instead of the Bureau's TIGERweb boundaries. Six blocks (nine people, all in North Haven) changed: the state puts all 417 North Haven residents in CD 1 / HD 42 / SD 12, where v1 had 9 of them in CD 2 / HD 40 / SD 11. Congressional totals are now 681,179 / 681,180. The crosswalk still lists some very small overlaps that are the state's own assignments — Kennebunkport: 13 people in House District 140; Cape Elizabeth: 191 in House 121; Brewer: 292 in House 24. The 2024 election file reports Cape Elizabeth and Brewer votes in both of their districts but Kennebunkport only in HD 134. The full set of plans (2003, 2011, 2013, 2021) and every unorganized township's population are in the `geography/` folder.
* Population estimates (Vintage 2025) exist for towns, counties and the state only.

## 4. Data availability gaps

* Detailed language table B16001 is published only for the state and congressional districts (Bureau policy); commuting time B08303 and vacancy status B25004 were not returned for the state row on the day of the pull (all other levels came through) — the state figures are in DP03/DP04 anyway.
* The 2005–2009 ACS vintage is no longer on data.census.gov; trends start with 2010–2014.
* No ACS 1-year data (only places over 65,000 people qualify; in Maine that is the state, Cumberland, York, Penobscot, Kennebec and Androscoggin counties, Portland and the two congressional districts). Could be added.

## 5. What "town" means here versus in the election files

* `geo_level = town` is the Census county subdivision. It includes the 36 UT aggregates, Hibberts Gore and the Penobscot Indian Island reservation, which are not registration units, and excludes the individual townships that are. The crosswalk is the bridge; join on `unit_id` for everything organized.
* The registration/election units for the four de-organized places keep their own `unit_id`s; their Census link is marked "historical only".

## 6. Not done / could be added

* Township-level 2020 population by intersecting blocks with the Maine GeoLibrary township boundaries (would fill the 171 gaps in §1 for counts only; the ACS never goes below the UT).
* ACS 1-year series for the large geographies; ACS 5-year vintages before 2010–2014 from the Bureau's FTP archive.
* County-commissioner districts (a TIGERweb layer does not exist for them; the GeoLibrary has the 2021 plan).
* Places / CDPs (village centers such as "Yarmouth CDP") — available, not pulled.

## 7. v1.2 (2026-10-05): code changes, predecessor counts, parent UTs

* **Which geoid is "current".** The profile follows the ACS 2020–2024 geography. Where the 2020 Census used an older code (Drew plantation 2301918580, Codyville plantation 2302913610, Magalloway plantation 2301742835) the 2020 block counts were moved to the ACS code (Drew UT 2301918582, Codyville UT 2302913612, North Oxford UT 2301752575). The old codes remain in `census_geographies.csv` as historical rows with `successor_geoid`.
* **Predecessor counts are "today's boundaries".** A UT that absorbed a place (North Oxford ← Magalloway, South Aroostook ← Cary, Central Aroostook ← Oxbow, Southeast Piscataquis ← Atkinson, East Central Franklin ← Madrid, North Washington ← Centerville) shows the sum of its own published count and the absorbed place's count for the years the place was counted separately, so its 2000/2010 figures are no longer the numbers the Bureau printed for the UT under that name. `census_geographies.csv` (`history_note`) says so on each row. The absorbing UT was identified from where the place's GeoLibrary polygon's 2020 blocks fall; for Madrid 21 of 24 blocks (all 177 people) are in East Central Franklin UT, 3 empty blocks in West Central Franklin UT.
* **Chebeague Island 2000** stays blank: it was part of Cumberland until 2007 and Cumberland town's 2000 count (7,159) includes it, so Cumberland's 2000–2020 growth (+18.4%) is understated for the mainland town. Louds Island UT and Muscle Ridge Islands UT also have no 2000 row (the county totals balance without them).
* **Zero estimates.** An ACS estimate of 0 with a positive margin is now `low` (3,972 cells). For the site this greys out many "0%" shares in small towns, which is the honest reading: the survey cannot tell 0% from a few percent there.
* **Perkins.** The Census "Perkins UT" (2302358070) is Swan Island in Sagadahoc County; registration unit MPD-0139 is Perkins Twp in Franklin County, counted by the Census inside South Franklin UT. v1.1 linked them by name. Unlinked in v1.2. **The registration file still carries `census_geoid` 2302358070 / "Perkins UT" for MPD-0139 (`registration-data/units.csv`) — that column should be blanked in the next registration release.**
* **Township units with no parent UT** (61 of 172): 39 "Townships voting in …" groups (the returns do not name the member townships), 4 combined units made of organized plantations (Nashville Plt / Portage Lake, Guilford / Kingsbury Plt, Dennistown Plt / Moose River, Greenville Twps), Portland W1 P2 (a Portland ward line among the results-only codes, not a township) and 17 names with no GeoLibrary township of that name in the county (e.g. Dtt9 & T10 Twp., No. 8 S.D. Twp., Indian Purchase Twp., T17 R3, Grand Falls, Louds Is, Orneville, T3 ND, Raynham Academy Grant / Taunton, Spring Lake, Sakom T5 ND BPP, T11 R14 WELS, T27 ED BPP, Guerette Twp). Matching them would need a judgement on old township names; not guessed. Six units span two UTs; the majority UT is given and the basis names the other.
* **Historical units** (MPD-0950…1032): 14 of the 83 have a present-day township of the same name and carry its parent UT; the rest have none. Their region is in `geography/regions_reporting_units.csv`.

## 8. v1.3 (2026-10-14): historical units from election results v3.11

* The 49 units MPD-1033 … MPD-1081 are in `unit_census_crosswalk.csv` as "historical unit, no census geography". 32 of them are tabulation-book lines that are **not identified** with any present-day place (results `unit_type` = `historical_unidentified`); their `parent_ut_basis` says so. Several of them are probably the same place spelled differently (e.g. four spellings of Haskell's Plantation, two of "No. 25" in Washington) — whether to merge them is a results-data decision (audit II, GC-6), not made here.
* Only two of the 49 get a parent UT (Summit Plt, Berlin); the rest either lie inside today's organized towns or cannot be placed. Their regions are in `geography/regions_reporting_units.csv` (v1.2), where 18 of them have no region because the place cannot be put in one region with certainty.
