cargo run --bin document step that failed on Windows
(os error 193 while running a build script). The extendr
wrappers are pre-generated and shipped, so installation only needs
cargo build --lib; the document step has been removed from
Makevars.in / Makevars.win.in.First public release of OSMnx for R.
ox_example() loads a small bundled real network
(central Olinda, Brazil) so examples and vignettes show real analyses
offline. The vignettes were reworked around real cases from Boeing
(2025) and the OSMnx examples gallery: multi-city orientation entropy
(Chicago/New Orleans/Rome), betweenness chokepoints, travel-time routing
and isochrones, and amenity accessibility.
ox_orientation_entropy() and
ox_plot_orientation() now accept either an
osm_graph or a numeric vector of bearings.
ox_plot_figure_ground() draws figure-ground
diagrams, and ox_example() now also bundles
"manhattan" and "rome" networks for the new
“Figure-ground diagrams” vignette (Boeing 2025, Fig. 3).
ox_simplify() now preserves traversability per
direction, emitting bidirectional edges for two-way streets (fixes
zero-valued routing/centrality on simplified graphs).
Download street networks from OpenStreetMap
(ox_graph_from_place(),
ox_graph_from_address(),
ox_graph_from_point(), ox_graph_from_bbox())
via the Overpass API, returning the tidy sf-backed
osm_graph object.
Geocoding with Nominatim (ox_geocode(),
ox_geocode_to_sf()).
Rust compute core (via extendr): CSR graph, Dijkstra routing
(ox_shortest_path(), ox_distances(),
ox_nearest_nodes()) and metrics
(ox_basic_stats(), ox_bearings(),
ox_orientation_entropy()).
example_osm_graph() synthetic grid for offline
examples and tests.
Configuration via ox_settings() and session caching
with ox_clear_cache().
Topology cleanup (Rust core): ox_simplify() merges
chains of interstitial degree-2 nodes into single edges;
ox_consolidate_intersections() merges nearby nodes into one
(via connected components); ox_nearest_edges() finds the
closest edge to a point.
Advanced routing (Rust core): ox_k_shortest_paths()
(Yen’s algorithm), ox_distance_matrix() (many-to-many), and
ox_isochrone() (reachable-area polygons via multi-source
Dijkstra + concave hull).
Travel-time routing: ox_add_edge_speeds() and
ox_add_edge_travel_times() add speed_kph /
travel_time edge columns for time-weighted shortest paths
and isochrones.
New vignette: “Routing and isochrones”.
Network metrics (Rust core): ox_centrality()
(betweenness via Brandes’ algorithm, closeness) and
ox_circuity() (street straightness). Circuity is now also
reported by ox_basic_stats().
Interoperability: ox_as_sfnetwork(),
ox_as_tidygraph() and ox_as_dodgr() hand the
graph to the wider R network ecosystem.
Export and persistence: ox_to_geojson(),
ox_to_maplibre() (style fragment), and
ox_save_graphml() / ox_load_graphml() for a
lossless round-trip (edge geometry stored as WKT), compatible with OSMnx
/ NetworkX / Gephi.
Feature downloads: ox_features_from_place() and
ox_features_from_bbox() fetch POIs, buildings and amenities
from OpenStreetMap as tidy sf points.
ox_plot_orientation() draws a polar rose plot of
street bearings (ggplot2).
Documentation: vignettes “Urban metrics”, “Street orientation”, “Features and points of interest”, “Interoperability and export” and “Accessibility analysis”; full pkgdown reference and articles menu.