Generates an address from latitude and longitude (latitudes in
\(\left[-90, 90 \right]\) and longitudes in \(\left[-180, 180 \right]\)),
and returns the sf object associated with the query using
sf. See reverse_geo_lite() for retrieving the data in
tibble format.
Usage
reverse_geo_lite_sf(
lat,
long,
address = "address",
full_results = FALSE,
return_coords = TRUE,
verbose = FALSE,
nominatim_server = "https://nominatim.openstreetmap.org/",
progressbar = TRUE,
custom_query = list(),
points_only = TRUE
)Arguments
- lat
Latitude values in numeric format. Must be in the range \(\left[-90, 90 \right]\).
- long
Longitude values in numeric format. Must be in the range \(\left[-180, 180 \right]\).
- address
Address column name in the output data (default
"address").- full_results
Return all available data from the Nominatim API. If
FALSE(default), only latitude, longitude and address columns are returned. See alsoreturn_addresses.- return_coords
Return input coordinates with results if
TRUE.- verbose
If
TRUE, detailed logs are output to the console.- nominatim_server
URL of the Nominatim server to use. Defaults to
"https://nominatim.openstreetmap.org/".- progressbar
Logical. If
TRUEdisplays a progress bar to indicate the progress of the function.- custom_query
Named list with API-specific parameters, for example
list(zoom = 3). See Details.- points_only
Logical
TRUE/FALSE. Whether to return only point geometries (TRUE, which is the default) or potentially other shapes as returned by the Nominatim API (FALSE). See About geometry types.
Value
An sf object with the results that match the query.
Details
See https://nominatim.org/release-docs/latest/api/Reverse/ for additional
parameters to be passed to custom_query.
About zooming
Use the option custom_query = list(zoom = 3) to adjust the output. Some
zoom levels correspond to these address details:
| zoom | address_detail |
3 | country |
5 | state |
8 | county |
10 | city |
14 | suburb |
16 | major streets |
17 | major and minor streets |
18 | building |
About geometry types
The parameter points_only specifies whether the function results will be
points (all Nominatim results are guaranteed to have at least point
geometry) or other geometry types.
Note that when points_only = FALSE, the type of geometry returned depends
on the object being geocoded. Administrative areas, major buildings and the
like will be returned as polygons, rivers, roads and similar features will
be returned as lines, and amenities may still be returned as points.
This function is vectorized, allowing multiple addresses to be geocoded.
With points_only = FALSE, multiple geometry types may be returned.
See also
Reverse geocoding:
reverse_geo_lite()
sf outputs:
bbox_to_poly(),
geo_address_lookup_sf(),
geo_amenity_sf(),
geo_lite_sf(),
geo_lite_struct_sf()
Examples
# \donttest{
library(ggplot2)
# Colosseum coordinates
col_lon <- 12.49309
col_lat <- 41.89026
# Colosseum as polygon
col_sf <- reverse_geo_lite_sf(
lat = col_lat,
lon = col_lon,
points_only = FALSE
)
dplyr::glimpse(col_sf)
#> Rows: 1
#> Columns: 4
#> $ address <chr> "Piazza del Colosseo, Celio, Municipio Roma I, Roma, Roma Cap…
#> $ lat <dbl> 41.89026
#> $ lon <dbl> 12.49309
#> $ geometry <POINT [°]> POINT (12.49333 41.89014)
if (!all(sf::st_is_empty(col_sf))) {
ggplot(col_sf) +
geom_sf()
}
# City of Rome: same coordinates with zoom 10
rome_sf <- reverse_geo_lite_sf(
lat = col_lat,
lon = col_lon,
custom_query = list(zoom = 10),
points_only = FALSE
)
dplyr::glimpse(rome_sf)
#> Rows: 1
#> Columns: 4
#> $ address <chr> "Roma, Roma Capitale, Lazio, Italia"
#> $ lat <dbl> 41.89026
#> $ lon <dbl> 12.49309
#> $ geometry <MULTIPOLYGON [°]> MULTIPOLYGON (((12.23447 41...
if (!all(sf::st_is_empty(rome_sf))) {
ggplot(rome_sf) +
geom_sf()
}
# }
