Read a spatial data file (also referred to as a GIS file or shapefile) from
an IPUMS extract into an sf
object from the
sf package.
read_ipums_sf(
shape_file,
file_select = NULL,
vars = NULL,
encoding = NULL,
bind_multiple = FALSE,
add_layer_var = NULL,
verbose = FALSE,
shape_layer = deprecated()
)
An sf object
Path to a single .shp file or a .zip archive containing at least one .shp file. See Details section.
If shape_file
is a .zip archive that
contains multiple files, an expression identifying the files to load.
Accepts a character string specifying the
file name, a tidyselect selection, or index
position. If multiple files are selected, bind_multiple
must be
equal to TRUE
.
Names of variables to include in the output. Accepts a
character vector of names or a tidyselect selection.
If NULL
, includes all variables in the file.
Encoding to use when reading the shape file. If NULL
,
defaults to "latin1"
unless the file includes a .cpg metadata file
with encoding information. The default value should generally be
appropriate.
If TRUE
and shape_file
contains multiple .shp files,
row-bind the files into a single sf
object. Useful when shape_file
contains multiple files that represent the same geographic units for
different extents (e.g. block-level data for multiple states).
If TRUE
, add a variable to the output data indicating
the file that each row originates from. Defaults to FALSE
unless
bind_multiple = TRUE
and multiple files exist in shape_file
.
The column name will always be prefixed with "layer"
, but will be
adjusted to avoid name conflicts if another column named "layer"
already
exists in the data.
If TRUE
report additional progress information on load.
Some IPUMS products provide shapefiles in a "nested" .zip archive. That is, each shapefile (including a .shp as well as accompanying files) is compressed in its own archive, and the collection of all shapefiles provided in an extract is also compressed into a single .zip archive.
read_ipums_sf()
is designed to handle this structure. However, if any files
are altered such that an internal .zip archive contains multiple
shapefiles, this function will throw an error. If this is the case, you may
need to manually unzip the downloaded file before loading it into R.
read_ipums_micro()
or read_nhgis()
to read tabular data from
an IPUMS extract.
ipums_list_files()
to list files in an IPUMS extract.
# Example shapefile from NHGIS
shape_ex1 <- ipums_example("nhgis0972_shape_small.zip")
data_ex1 <- read_nhgis(ipums_example("nhgis0972_csv.zip"), verbose = FALSE)
sf_data <- read_ipums_sf(shape_ex1)
sf_data
# To combine spatial data with tabular data without losing the attributes
# included in the tabular data, use an ipums shape join:
ipums_shape_full_join(data_ex1, sf_data, by = "GISJOIN")
shape_ex2 <- ipums_example("nhgis0712_shape_small.zip")
# Shapefiles are provided in .zip archives that may contain multiple
# files. Select a single file with `file_select`:
read_ipums_sf(shape_ex2, file_select = matches("us_pmsa_1990"))
# Or row-bind files with `bind_multiple`. This may be useful for files of
# the same geographic level that cover different extents)
read_ipums_sf(
shape_ex2,
file_select = matches("us_pmsa"),
bind_multiple = TRUE
)
Run the code above in your browser using DataLab