Searches amenities as defined by OpenStreetMap in a
restricted area defined by a bounding box in the form
(<xmin>, <ymin>, <xmax>, <ymax>) and returns the spatial object associated
with the query using sf. See geo_amenity() for retrieving the
data in tibble format.
Usage
geo_amenity_sf(
bbox,
amenity,
limit = 1,
full_results = FALSE,
return_addresses = TRUE,
verbose = FALSE,
nominatim_server = "https://nominatim.openstreetmap.org/",
progressbar = TRUE,
custom_query = list(),
strict = FALSE,
points_only = TRUE
)Arguments
- bbox
The bounding box (viewbox) used to limit the search. It can be a numeric vector of longitude (
x) and latitude (y) in the form(xmin, ymin, xmax, ymax), or asforsfcobject. See Details.- amenity
A
character(or a vector ofcharacters) with the amenities to be geocoded, for examplec("pub", "restaurant"). See osm_amenities.- limit
Maximum number of results to return per input address. Note that each query returns a maximum of 50 results.
- full_results
Returns all available data from the API service. If
FALSE(default), only latitude, longitude and address columns are returned. See alsoreturn_addresses.- return_addresses
Return input addresses with results if
TRUE.- verbose
If
TRUE, detailed logs are output to the console.- nominatim_server
The 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
A named list with API-specific parameters to be used, for example
list(countrycodes = "US"). See Details.- strict
Logical
TRUE/FALSE. Force the results to be included inside thebbox. Note that Nominatim default behavior may return results located outside the provided bounding box.- points_only
Logical
TRUE/FALSE. Whether to return only spatial points (TRUE, which is the default) or potentially other shapes as returned by the Nominatim API (FALSE). See About geometry types.
Value
A sf object with the results.
Details
Bounding boxes can be located using online tools such as https://boundingbox.klokantech.com/.
For a full list of valid amenities, see https://wiki.openstreetmap.org/wiki/Key:amenity and osm_amenities.
See https://nominatim.org/release-docs/latest/api/Search/ for additional
parameters to be passed to custom_query.
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 possibly other spatial objects.
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.
The function is vectorized, allowing multiple addresses to be geocoded,
with points_only = FALSE, multiple geometry types may be returned.
See also
Other amenity:
geo_amenity(),
osm_amenities
Geocoding:
geo_address_lookup(),
geo_address_lookup_sf(),
geo_amenity(),
geo_lite(),
geo_lite_sf(),
geo_lite_struct(),
geo_lite_struct_sf()
Get sf objects:
bbox_to_poly(),
geo_address_lookup_sf(),
geo_lite_sf(),
geo_lite_struct_sf(),
reverse_geo_lite_sf()
Examples
# \donttest{
# Usera, Madrid
library(ggplot2)
mad <- geo_lite_sf("Usera, Madrid, Spain", points_only = FALSE)
# Restaurants, pubs and schools
rest_pub <- geo_amenity_sf(mad, c("restaurant", "pub", "school"),
limit = 50
)
#>
|
| | 0%
|
|================= | 33%
|
|================================= | 67%
|
|==================================================| 100%
if (!all(sf::st_is_empty(rest_pub))) {
ggplot(mad) +
geom_sf() +
geom_sf(data = rest_pub, aes(color = query, shape = query))
}
# }
