Skip to contents

Filter by name or id or use a spatial filter based on an sf object or geocoded street address. Optionally you can use an index list to match the type to a named list of URLs or sf objects.

Usage

get_location(
  type,
  name = NULL,
  name_col = "name",
  id = NULL,
  id_col = "id",
  location = NULL,
  index = NULL,
  union = FALSE,
  crs = getOption("overedge.crs"),
  label = NULL,
  class = "sf",
  ...
)

Arguments

type

Type of location to return. Type can be an sf object, e.g. a data frame with multiple neighborhoods or a character string that can be passed to get_location_data. If index is provided, character can also be a character string to match the name of a list.

name

Location name to return.

name_col

Column name in type with name values, Default: 'name' Required if name provided.

id

Location id to return. id is coerced to character or numeric to match the class of the id_col for type.

id_col

Column name in type with id values, Default: 'id'. Required if id is provided.

location

An address, bounding box (bbox), or simple feature (sf) object passed to sf::st_filter. Any valid address or addresses are geocoded with tidygeocoder::geo, converted to a simple feature object, and then used as a spatial filter. bbox objects are converted using sf_bbox_to_sf(). Multiple addresses are supported.

index

Optional list used to match type to data, Default: NULL

union

If TRUE, the location geometry is unioned with sf::st_union and the names are combined into a single value. Default: FALSE.

crs

Coordinate reference system to return; defaults to NULL which returns data using the same coordinate reference system as the provided type of location.

label

Label optionally added to "label" column; must be a length 1 or match the number of rows returned based on the other parameters. If union = TRUE, using label is recommended. Default: NULL

class

Class of object to return; defaults to "sf".

...

Additional parameters passed to get_location_data if type is character and index is NULL.

Value

A simple feature object from data provided to type.

Examples

nc <- read_sf_path(system.file("shape/nc.shp", package = "sf"))

# get_location works with a type sf object and name and id values
get_location(type = nc, name = "Warren", name_col = "NAME")
#> Simple feature collection with 1 feature and 14 fields
#> Geometry type: MULTIPOLYGON
#> Dimension:     XY
#> Bounding box:  xmin: -78.32125 ymin: 36.19595 xmax: -77.89886 ymax: 36.55294
#> Geodetic CRS:  NAD27
#> # A tibble: 1 × 15
#>    AREA PERIMETER CNTY_ CNTY_ID NAME   FIPS  FIPSNO CRESS_ID BIR74 SID74 NWBIR74
#>   <dbl>     <dbl> <dbl>   <dbl> <chr>  <chr>  <dbl>    <int> <dbl> <dbl>   <dbl>
#> 1 0.118      1.42  1836    1836 Warren 37185  37185       93   968     4     748
#> # … with 4 more variables: BIR79 <dbl>, SID79 <dbl>, NWBIR79 <dbl>,
#> #   geometry <MULTIPOLYGON [°]>
#> # ℹ Use `colnames()` to see all variable names
get_location(type = nc, id = 37185, id_col = "FIPSNO")
#> Simple feature collection with 1 feature and 14 fields
#> Geometry type: MULTIPOLYGON
#> Dimension:     XY
#> Bounding box:  xmin: -78.32125 ymin: 36.19595 xmax: -77.89886 ymax: 36.55294
#> Geodetic CRS:  NAD27
#> # A tibble: 1 × 15
#>    AREA PERIMETER CNTY_ CNTY_ID NAME   FIPS  FIPSNO CRESS_ID BIR74 SID74 NWBIR74
#>   <dbl>     <dbl> <dbl>   <dbl> <chr>  <chr>  <dbl>    <int> <dbl> <dbl>   <dbl>
#> 1 0.118      1.42  1836    1836 Warren 37185  37185       93   968     4     748
#> # … with 4 more variables: BIR79 <dbl>, SID79 <dbl>, NWBIR79 <dbl>,
#> #   geometry <MULTIPOLYGON [°]>
#> # ℹ Use `colnames()` to see all variable names

# type can also be a file path
get_location(
  type = system.file("shape/nc.shp", package = "sf"),
  name = "Hertford",
  name_col = "NAME"
)
#> Simple feature collection with 1 feature and 14 fields
#> Geometry type: POLYGON
#> Dimension:     XY
#> Bounding box:  xmin: -77.21767 ymin: 36.23024 xmax: -76.7075 ymax: 36.55629
#> Geodetic CRS:  NAD27
#> # A tibble: 1 × 15
#>    AREA PERIMETER CNTY_ CNTY_ID NAME    FIPS  FIPSNO CRESS…¹ BIR74 SID74 NWBIR74
#>   <dbl>     <dbl> <dbl>   <dbl> <chr>   <chr>  <dbl>   <int> <dbl> <dbl>   <dbl>
#> 1 0.097      1.67  1833    1833 Hertfo… 37091  37091      46  1452     7     954
#> # … with 4 more variables: BIR79 <dbl>, SID79 <dbl>, NWBIR79 <dbl>,
#> #   `_ogr_geometry_` <POLYGON [°]>, and abbreviated variable name ¹​CRESS_ID
#> # ℹ Use `colnames()` to see all variable names

# type can also be an index name (if a named list of data sets, url values, or
# path values is passed to index)
get_location(
  type = "smaller",
  name = "Hertford",
  name_col = "NAME",
  index = list(
    "smaller" = dplyr::filter(nc, AREA <= 0.10),
    "larger" = dplyr::filter(nc, AREA > 0.15)
  )
)
#> Simple feature collection with 1 feature and 14 fields
#> Geometry type: MULTIPOLYGON
#> Dimension:     XY
#> Bounding box:  xmin: -77.21767 ymin: 36.23024 xmax: -76.7075 ymax: 36.55629
#> Geodetic CRS:  NAD27
#> # A tibble: 1 × 15
#>    AREA PERIMETER CNTY_ CNTY_ID NAME    FIPS  FIPSNO CRESS…¹ BIR74 SID74 NWBIR74
#>   <dbl>     <dbl> <dbl>   <dbl> <chr>   <chr>  <dbl>   <int> <dbl> <dbl>   <dbl>
#> 1 0.097      1.67  1833    1833 Hertfo… 37091  37091      46  1452     7     954
#> # … with 4 more variables: BIR79 <dbl>, SID79 <dbl>, NWBIR79 <dbl>,
#> #   geometry <MULTIPOLYGON [°]>, and abbreviated variable name ¹​CRESS_ID
#> # ℹ Use `colnames()` to see all variable names