# Demographic and Geometric ZCTA Data

## ZCTA Geometry

`zippeR` providers support for downloading geometric data as `sf` objects. For five-digit ZCTAs, `tigris` is used to access the TIGER/Line database. For three-digit ZCTAs, these are downloaded from a repository on GitHub maintained by the author. These are generalized versions of the ZCTA geometry designed to provide a smaller file size suitable for storage on GitHub. Nevertheless, each file is still approximately 60MB in size. Users should carefully evaluate the geometric data to ensure they are fit for purpose, and note that these are provided without warranty.

One major difference between `tigris::zctas()` and `zipper::get_geometry()` is that `zippeR` provides support for automatically returning ZCTAs that intersect or whose centroids lie within states and/or counties. This can be used with both the five- and three-digit ZCTAs. In general, the intersect method will yield more ZCTAs than are necessary while the centroid method will yield too few. For example, for Missouri, we need to use the `includes` argument to add several additional ZCTAs in whose centroids do not fall within Missouri itself (they all lie in Iowa):

    geo12 <- zi_get_geometry(year = 2012, state = "MO", method = "centroid",
        includes = c("51640", "52542", "52573", "52626"))

If you use the intersect method, the corresponding `excludes` argument can be used to drop ZCTAs that are not needed. Note that all ZCTAs passed to `starts_with` (which accepts two-digit values), `includes`, and `excludes` are validated to ensure they follow formatting requirements. As noted above, the validation process does not ensure that inputs correspond to valid ZCTAs at this time.

One additional option to note is that, when downloading nation-wide ZCTA data, you can use the `shift_geo` argument to place Alaska, Hawaii, and Puerto Rico in the lower left-hand corner of your map:

    geo10 <- zi_get_geometry(year = 2010, shift_geo = TRUE)

## ZCTA Demographics

Downloading the geometric data can be used for mapping, or simply to produce a vector of all five- or three-digit ZCTAs in a given area. These, in-turn, can be used to define areas where demographic data are desired. The `zi_get_demographics()` wraps `tidycensus` functions to get data using a single, uniform API. For instance, we can download the total population for all ZCTAs based on the 2010 Decennial Census:

    pop10 <- zi_get_demographics(year = 2010, variables = "P001001", survey = "sf1")

Note: As of now, the Census Bureau has not released ZCTA data for the 2020 Decennial Census.

If you are working with output from `zi_get_geometry()`, you can specify the `GEOID` vector in your call to limit the number of ZCTAs returned:

    gini12 <- zi_get_demographics(year = 2012, table = "B19083", survey = "acs5", zcta = geo12$GEOID)