
Identify Cores of a District (Heuristic)
Source:R/map_helpers.R
, R/cores.R
redist.identify.cores.Rd
Creates a grouping ID to unite geographies and perform analysis on a smaller
set of precincts. It identifies all precincts more than boundary
edges
of a district district boundary. Each contiguous group of precincts more than
boundary
steps away from another district gets it own group. Some
districts may have multiple, disconnected components that make up the core,
but each of these is assigned a separate grouping id so that a call to
sf::st_union()
would produce only connected pieces.
Usage
make_cores(.data = cur_map(), boundary = 1, focus = NULL)
redist.identify.cores(adj, plan, boundary = 1, focus = NULL, simplify = TRUE)
Arguments
- .data
a
redist_map
object- boundary
Number of steps to check for. Defaults to 1.
- focus
Optional. Integer. A single district to focus on.
- adj
zero indexed adjacency list.
- plan
An integer vector or matrix column of district assignments.
- simplify
Optional. Logical. Whether to return extra information or just grouping ID.
Value
integer vector (if simplify is false). Otherwise it returns a tibble with the grouping
variable as group_id
and additional information on connected components.
Details
This is a loose interpretation of the NCSL's summary
of redistricting criteria to preserve the cores of prior districts. Using the
adjacency graph for a given plan, it will locate the precincts on the
boundary of the district, within boundary
steps of the edge. Each of
these is given their own group. Each remaining entry that is not near the
boundary of the district is given an id that can be used to group the
remainder of the district by connected component. This portion is deemed the
core of the district.
See also
redist.plot.cores()
for a plotting function
Examples
data(fl250)
fl250_map <- redist_map(fl250, ndists = 4, pop_tol = 0.01)
#> Projecting to CRS 3857
plan <- as.matrix(redist_smc(fl250_map, 20, silent = TRUE))
core <- redist.identify.cores(adj = fl250_map$adj, plan = plan)
redist.plot.cores(shp = fl250, plan = plan, core = core)