Alternative version of add_osm_feature for creating single queries with multiple features. Key-value matching may be controlled by using the filter symbols described in https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#By_tag_.28has-kv.29.
Arguments
- opq
An
overpass_queryobject- features
A named list or vector with the format
list("<key>" = "<value>")orc("<key>" = "<value>")or a character vector of key-value pairs with keys and values enclosed in escape-formatted quotations. See examples for details.- bbox
optional bounding box for the feature query; must be set if no opq query bbox has been set.
- key_exact
If FALSE,
keyis not interpreted exactly; see https://wiki.openstreetmap.org/wiki/Overpass_API- value_exact
If FALSE,
valueis not interpreted exactly
Value
opq object
add_osm_feature vs add_osm_features
Features defined within an add_osm_features call are combined with a logical OR.
Chained calls to either add_osm_feature or add_osm_features() combines
features from these calls in a logical AND; this is analagous to chaining
dplyr::filter() on a data frame.
add_osm_features() with only one feature is logically equivalent to
add_osm_feature().
See also
Other queries:
add_osm_feature(),
bbox_to_string(),
getbb(),
opq(),
opq_around(),
opq_csv(),
opq_enclosing(),
opq_osm_id(),
opq_string(),
overpass_status()
Examples
if (FALSE) { # \dontrun{
q <- opq ("portsmouth usa") |>
add_osm_features (features = list (
"amenity" = "restaurant",
"amenity" = "pub"
))
q <- opq ("portsmouth usa") |>
add_osm_features (features = c (
"\"amenity\"=\"restaurant\"",
"\"amenity\"=\"pub\""
))
cat (opq_string (q))
# This extracts in a single query the same result as the following:
q1 <- opq ("portsmouth usa") |>
add_osm_feature (
key = "amenity",
value = "restaurant"
)
q2 <- opq ("portsmouth usa") |>
add_osm_feature (key = "amenity", value = "pub")
c (osmdata_sf (q1), osmdata_sf (q2)) # all restaurants OR pubs
# Get objects with keys (`natural` OR `waterway`) AND `name`
q_keys <- opq ("Badia del Vallès", osm_types = "nwr", out = "tags") |>
add_osm_features (features = list (natural = NULL, waterway = NULL)) |>
add_osm_feature (key = "name")
cat (opq_string (q_keys))
} # }
