The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Features and points of interest

library(osmnxr)

Beyond street networks, osmnxr downloads any OpenStreetMap feature — amenities, building footprints, transit stops, parks, shops — as tidy sf points, mirroring OSMnx’s features module (Boeing 2025). Because these calls hit the live Overpass API, the download chunks below are not executed when the vignette is built; run them interactively.

Tag filters

Features are selected with tags, given as a named list. Each entry is either TRUE (the key with any value) or a character vector of allowed values:

# schools in a place
ox_features_from_place("Olinda, Brazil", tags = list(amenity = "school"))

# the amenities studied in accessibility research, in one call
ox_features_from_place(
  "Recife, Brazil",
  tags = list(amenity = c("school", "hospital", "pharmacy", "marketplace"))
)

# every building footprint (key present, any value)
ox_features_from_place("Olinda, Brazil", tags = list(building = TRUE))

# parks and green space
ox_features_from_place("Recife, Brazil", tags = list(leisure = "park"))

# public transit stops
ox_features_from_place("Recife, Brazil", tags = list(public_transport = "stop_position"))

From a bounding box

When you already know the extent, query a bounding box (c(xmin, ymin, xmax, ymax) in longitude/latitude) directly:

bbox <- c(-34.91, -8.07, -34.87, -8.04)
pois <- ox_features_from_bbox(bbox, tags = list(amenity = c("pharmacy", "clinic")))
pois

A tidy result

Each call returns an sf of points with osm_type, osm_id and one column per tag encountered, so it composes directly with dplyr and sf:

library(dplyr)
pois |>
  st_drop_geometry() |>
  count(amenity, sort = TRUE)

Combining features with a network

Features and the street network share the same CRS (EPSG:4326), so you can snap facilities to the network and analyse access. This is the bridge to the Accessibility article:

g <- ox_graph_from_place("Olinda, Brazil", network_type = "walk") |>
  ox_simplify() |>
  ox_add_edge_travel_times()

schools <- ox_features_from_place("Olinda, Brazil", tags = list(amenity = "school"))
xy <- sf::st_coordinates(schools)
nodes <- ox_nearest_nodes(g, xy[, 1], xy[, 2])

# 15-minute walking catchment around every school
ox_isochrone(g, nodes, cutoffs = 900, weight = "travel_time")

References

Boeing, G. (2025). Modeling and analyzing urban networks and amenities with OSMnx. Geographical Analysis.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.