Takes a dataframe containing addresses as an input and returns the results from a specified geocoding service in a dataframe format using the geo function. See example usage in vignette("tidygeocoder").

This function passes all additional parameters (...) to the geo function, so you can refer to its documentation for more details on possible arguments.

Note that the arguments used for specifying address columns (address, street, city, county, state, postalcode, and country) accept either quoted or unquoted column names (ie. "address_col" and address_col are both acceptable).

geocode(
  .tbl,
  address = NULL,
  street = NULL,
  city = NULL,
  county = NULL,
  state = NULL,
  postalcode = NULL,
  country = NULL,
  lat = "lat",
  long = "long",
  return_input = TRUE,
  limit = 1,
  return_addresses = NULL,
  unique_only = FALSE,
  ...
)

Arguments

.tbl

dataframe containing addresses

address

single line street address column name. Do not combine with address component arguments (street, city, county, state, postalcode, country)

street

street address column name

city

city column name

county

county column name

state

state column name

postalcode

postal code column name (zip code if in the United States)

country

country column name

lat

latitude column name. Can be quoted or unquoted (ie. lat or "lat").

long

longitude column name. Can be quoted or unquoted (ie. long or "long").

return_input

if TRUE then the input dataset will be combined with the geocoder query results and returned. If FALSE only the geocoder results will be returned.

limit

maximum number of results to return per input address. For many geocoding services the maximum value of the limit parameter is 100. Pass limit = NULL to use the default limit value of the selected geocoding service. For batch geocoding, limit must be set to 1 (default) if return_addresses = TRUE.To use limit > 1 or limit = NULL set return_input to FALSE. Refer to api_parameter_reference for more details.

return_addresses

if TRUE return input addresses. Defaults to TRUE if return_input is FALSE and FALSE if return_input is TRUE. This argument is passed to the geo() function.

unique_only

if TRUE then only unique results will be returned and return_input will be set to FALSE.

...

arguments passed to the geo function

Value

tibble (dataframe)

See also

Examples

# \donttest{
library(dplyr, warn.conflicts = FALSE)
sample_addresses %>%
  slice(1:2) %>%
  geocode(addr, method = "arcgis")
#> Passing 2 addresses to the ArcGIS single address geocoder
#> Query completed in: 1.1 seconds
#> # A tibble: 2 × 4
#>   name                 addr                                         lat   long
#>   <chr>                <chr>                                      <dbl>  <dbl>
#> 1 White House          1600 Pennsylvania Ave NW Washington, DC     38.9  -77.0
#> 2 Transamerica Pyramid 600 Montgomery St, San Francisco, CA 94111  37.8 -122. 

louisville %>%
  head(2) %>%
  geocode(
    street = street, city = city, state = state,
    postalcode = zip, method = "census", full_results = TRUE
  )
#> Passing 2 addresses to the US Census batch geocoder
#> Query completed in: 0.1 seconds
#> # A tibble: 2 × 15
#>   street    city  state   zip latitude longitude   lat  long    id input_address
#>   <chr>     <chr> <chr> <dbl>    <dbl>     <dbl> <dbl> <dbl> <int> <chr>        
#> 1 2722 ELL… Loui… Kent… 40211     38.3     -85.8  38.3 -85.8     1 2722 ELLIOTT…
#> 2 850 WASH… Loui… Kent… 40222     38.3     -85.6  38.3 -85.6     2 850 WASHBURN…
#> # ℹ 5 more variables: match_indicator <chr>, match_type <chr>,
#> #   matched_address <chr>, tiger_line_id <int>, tiger_side <chr>

sample_addresses %>%
  slice(8:9) %>%
  geocode(addr,
    method = "osm", limit = 2,
    return_input = FALSE, full_results = TRUE
  )
#> Passing 2 addresses to the Nominatim single address geocoder
#> Query completed in: 2 seconds
#> # A tibble: 3 × 15
#>   address      lat  long place_id licence osm_type osm_id class type  place_rank
#>   <chr>      <dbl> <dbl>    <int> <chr>   <chr>     <int> <chr> <chr>      <int>
#> 1 Istanbul,…  41.0  29.0   3.99e8 Data ©… node     1.88e9 place city          16
#> 2 Istanbul,…  41.2  29.0   5.37e7 Data ©… relation 2.23e5 boun… admi…          8
#> 3 Tokyo, Ja…  35.7 140.    2.43e8 Data ©… relation 1.54e6 boun… admi…          8
#> # ℹ 5 more variables: importance <dbl>, addresstype <chr>, name <chr>,
#> #   display_name <chr>, boundingbox <list>

sample_addresses %>%
  slice(4:5) %>%
  geocode(addr,
    method = "arcgis",
    lat = latitude, long = longitude,
    full_results = TRUE
  )
#> Passing 2 addresses to the ArcGIS single address geocoder
#> Query completed in: 0.1 seconds
#> # A tibble: 2 × 72
#>   name       addr  latitude longitude arcgis_address score location.x location.y
#>   <chr>      <chr>    <dbl>     <dbl> <chr>          <int>      <dbl>      <dbl>
#> 1 Willis To… 233 …     41.9     -87.6 233 S Wacker …   100      -87.6       41.9
#> 2 Chateau F… 1 Ru…     46.8     -71.2 1 Rue Des Car…   100      -71.2       46.8
#> # ℹ 64 more variables: attributes.Loc_name <chr>, attributes.Status <chr>,
#> #   attributes.Score <int>, attributes.Match_addr <chr>,
#> #   attributes.LongLabel <chr>, attributes.ShortLabel <chr>,
#> #   attributes.Addr_type <chr>, attributes.Type <chr>,
#> #   attributes.PlaceName <chr>, attributes.Place_addr <chr>,
#> #   attributes.Phone <chr>, attributes.URL <chr>, attributes.Rank <int>,
#> #   attributes.AddBldg <chr>, attributes.AddNum <chr>, …
# }