The main format_sf_data function is a wrapper for the following common
steps in transforming an sf
object and preparing for mapping or analysis:
Usage
format_sf_data(
x,
crs = getOption("getdata.crs", default = 3857),
erase_data = NULL,
dTolerance = NULL,
smooth = FALSE,
sf_col = NULL,
sf_req = TRUE,
...
)
erase_data(x, erase_data = NULL)
Arguments
- x
A
sf
object or, ifsf_req
isFALSE
, any object that can be converted to ansf
object with sfext::as_sf.- crs
Coordinate reference system for returned data, Default: getOption("getdata.crs", default = 3857)
- erase_data
A
sf
,sfc
, orbbox
object with geometry that should be erased from the data, Default:NULL
- dTolerance
numeric; tolerance parameter, specified for all or for each feature geometry. If you run
st_simplify
, the input data is specified with long-lat coordinates andsf_use_s2()
returnsTRUE
, then the value ofdTolerance
must be specified in meters.- smooth
If
TRUE
, smooth data with smoothr::smooth using default method and parameters, Default:FALSE
.- sf_col
Name to use for output
sf
column, Default: 'geometry'.- sf_req
If
TRUE
, data must be asf
object. IfFALSE
, data is passed to sfext::as_sf to convert data to ansf
object.- ...
Additional parameters passed to
format_data
Details
Convert data to an
sf
object with sfext::as_sf ifsf_req
isFALSE
Make data valid with sf::st_make_valid if needed
Format data with format_data using the ... parameters
Erase any data overlapping with
erase_data
(suggested for use with water or open space)Simplify geometry with sf::st_simplify if
dTolerance
is providedSmooth geometry with smoothr::smooth if
smooth
isTRUE
Rename the sf column to match
sf_col
(defaults to "geometry")
The helper functions for format_sf_data and additional formatting functions
for sf
data are described in the details.
Helper functions for format_sf_data:
erase_data: erase intersection of x and erase_data (validity of erase_data checked before sfext::st_erase and for x after completing the operation.
rename_sf_col: Rename
sf
column.relocate_sf_col: Relocate
sf
column after selected columns (defaults todplyr::everything()
).
Examples
library(sf)
#> Linking to GEOS 3.10.2, GDAL 3.4.1, PROJ 8.2.1; sf_use_s2() is TRUE
nc <- read_sf(system.file("shape/nc.shp", package = "sf"))
nc_county <- nc[2,]
# Transform coordinate reference system
st_crs(nc)$epsg
#> [1] 4267
st_crs(format_sf_data(nc, crs = 3857))$epsg
#> [1] 3857
# Simplify and smooth geometry
plot(nc_county, max.plot = 1)
nc_county_simple <- format_sf_data(nc_county, dTolerance = 5000, smooth = TRUE)
plot(nc_county_simple, max.plot = 1)
# Erase data
nc_co_water <- get_tigris_data(type = "area water", state = "NC", county = nc_county$NAME)
#> Retrieving data for the year 2022
#>
Downloading: 16 kB
Downloading: 16 kB
Downloading: 16 kB
Downloading: 16 kB
Downloading: 16 kB
Downloading: 16 kB
Downloading: 16 kB
Downloading: 16 kB
Downloading: 33 kB
Downloading: 33 kB
Downloading: 41 kB
Downloading: 41 kB
Downloading: 41 kB
Downloading: 41 kB
Downloading: 57 kB
Downloading: 57 kB
Downloading: 57 kB
Downloading: 57 kB
Downloading: 73 kB
Downloading: 73 kB
Downloading: 89 kB
Downloading: 89 kB
Downloading: 100 kB
Downloading: 100 kB
Downloading: 100 kB
Downloading: 100 kB
nc_county_erased <- format_sf_data(nc_county, erase_data = nc_co_water)
plot(nc_county_erased, max.plot = 1)
# If sf_req is set to FALSE, use any object that can be converted with sfext::as_sf
nc_bbox <- st_bbox(nc)
plot(format_sf_data(nc_bbox, erase_data = nc_county_simple, sf_req = FALSE))