/** * @copyright Sister Software * @license AGPL-3.0 * @author Teffen Ellis, et al. * * Race-by-dot-density builder — the Cooper Center "Racial Dot Map" recipe, from the TIGER DB the * `mailwoman tiger` CLI produces. * * Reads `tabblock20 ⋈ pl_block` (block geometry + Census 2020 P.L. 94-171 table P2 counts) and * scatters one dot per `per` people uniformly at random inside each block, tagged with its * race/ethnicity category. Output is NDJSON (one GeoJSON Point Feature per line, with a * `tippecanoe` layer hint) ready for `tippecanoe -o race-dots.pmtiles`. * * Point-in-polygon uses `@turf/boolean-contains` (ships with `@mailwoman/tiger`). The dot is a * _representation_, not a record: a random position inside the block it belongs to, standing in * for `per` real people of that category. It says nothing about any individual address. * * Build the input DB first: `mailwoman tiger fetch --state 06 --county 059 --out tiger-oc.db` then * `mailwoman tiger redistricting --state 06 --county 059 --out tiger-oc.db`. * * Run: `mailwoman tiger race-dots --db tiger-oc.db --per 10 --out /tmp/race-dots.ndjson` */ /** * Options for {@linkcode raceDots}. */ export interface RaceDotsOptions { /** * TIGER SQLite DB (`tabblock20` ⋈ `pl_block`). Default `$MAILWOMAN_DATA_ROOT/tiger/tiger-oc.db`. */ db?: string; /** * Output NDJSON path. Default `/tmp/race-dots.ndjson`. */ out?: string; /** * People represented by one dot. Default 10. */ per?: number; /** * Tippecanoe layer name. Default `dots`. */ layer?: string; } /** * Result of {@linkcode raceDots}. */ export interface RaceDotsResult { outPath: string; dots: number; skipped: number; blocks: number; /** * Dots emitted per P2 category. */ totals: Record; } /** * Race-by-dot-density NDJSON builder — see the module doc. */ export declare function raceDots(options?: RaceDotsOptions, report?: (line: string) => void): Promise; //# sourceMappingURL=race-dots.d.ts.map