File: README.md
OSMnx
OSMnx is a Python package to easily download, model, analyze, and visualize street networks and other geospatial features from OpenStreetMap. You can download and model walking, driving, or biking networks with a single line of code then analyze and visualize them. You can just as easily work with urban amenities/points of interest, building footprints, transit stops, elevation data, street orientations, speed/travel time, and routing.
Citation
If you use OSMnx in your work, please cite the paper:
Boeing, G. (2025). Modeling and Analyzing Urban Networks and Amenities with OSMnx. Geographical Analysis 57 (4), 567-577. doi:10.1111/gean.70009
Getting Started
First read the Getting Started guide for an introduction to the package and FAQ.
Then work through the Examples Gallery for step-by-step tutorials and sample code.
Installation
Follow the Installation guide to install OSMnx.
Support
If you have any trouble, consult the User Reference. The OSMnx repository is hosted on GitHub. If you have a "how-to" or usage question, please ask it on StackOverflow, as we reserve the repository's issue tracker for bug tracking and feature development.
License
OSMnx is open source and licensed under the MIT license. OpenStreetMap's open data license requires that derivative works provide proper attribution. Refer to the Getting Started guide for usage limitations.
File: docs/source/further-reading.rst
Further Reading
Boeing, G. (2025). Modeling and Analyzing Urban Networks and Amenities with OSMnx_. Geographical Analysis 57 (4), 567-577. doi:10.1111/gean.70009
This is the official reference paper and citation for the OSMnx package.
.. _Modeling and Analyzing Urban Networks and Amenities with OSMnx: https://doi.org/10.1111/gean.70009
Boeing, G. (2026). Urban Science Beyond Samples: Up-to-Date Street Network Models and Indicators for Every Urban Area in the World_. Environment and Planning B, published online ahead of print. doi:10.1177/23998083261446991
This study uses OSMnx to model and analyze the street networks of every urban area in the world: over 180 million OpenStreetMap street network nodes and over 360 million edges across 10,351 urban areas in 189 countries.
.. _Urban Science Beyond Samples: Up-to-Date Street Network Models and Indicators for Every Urban Area in the World: https://geoffboeing.com/publications/street-network-models-indicators-world/
Boeing, G. (2025). Topological Graph Simplification Solutions to the Street Intersection Miscount Problem_. Transactions in GIS 29 (3), e70037. doi:10.1111/tgis.70037
This paper describes and validates the algorithms implemented in OSMnx's :code:simplification module and explains why graph simplification is necessary to accurately measure intersection density, street segment length, node degree, etc.
.. _Topological Graph Simplification Solutions to the Street Intersection Miscount Problem: https://doi.org/10.1111/tgis.70037
Boeing, G. (2020). Planarity and Street Network Representation in Urban Form Analysis_. Environment and Planning B 47 (5), 855-869. doi:10.1177/2399808318802941
This paper demonstrates the need for nonplanar graphs when modeling urban street networks, which was one of the original motivations for developing OSMnx.
.. _Planarity and Street Network Representation in Urban Form Analysis: https://geoffboeing.com/publications/planarity-street-network-representation/
Boeing, G. (2020). The Right Tools for the Job: The Case for Spatial Science Tool-Building_. Transactions in GIS 24 (5), 1299-1314. doi:10.1111/tgis.12678
This paper was presented as the 8th annual Transactions in GIS plenary address at the American Association of Geographers annual meeting in Washington, DC. It describes the early development of OSMnx and reviews its use in scientific research over the previous few years.
.. _The Right Tools for the Job: The Case for Spatial Science Tool-Building: https://geoffboeing.com/publications/right-tools-for-job/
File: docs/source/getting-started.rst
Getting Started
Get Started in 4 Steps
Install OSMnx by following the :doc:
installationguide.Read the :ref:
introducing-osmnxsection on this page.Work through the OSMnx
Examples Gallery_ for step-by-step tutorials and sample code.Consult the :doc:
user-referencefor complete details on using the package.
Finally, if you're not already familiar with NetworkX_ and GeoPandas_, make sure you read their user guides as OSMnx uses their data structures.
.. _introducing-osmnx:
Introducing OSMnx
This quick introduction explains key concepts and the basic functionality of OSMnx.
Overview
^^^^^^^^
OSMnx is pronounced as the initialism: "oh-ess-em-en-ex". It is built on top of NetworkX and GeoPandas, and interacts with OpenStreetMap_ APIs to:
- Download and model street networks or other infrastructure anywhere in the world with a single line of code
- Download geospatial features (e.g., political boundaries, building footprints, grocery stores, transit stops) as a GeoDataFrame
- Query by city name, polygon, bounding box, or point/address + distance
- Model driving, walking, biking, and other travel modes
- Attach node elevations from a local raster file or web service and calculate edge grades
- Impute missing speeds and calculate graph edge travel times
- Simplify and correct the network's topology to clean-up nodes and consolidate complex intersections
- Fast map-matching of points, routes, or trajectories to nearest graph edges or nodes
- Save/load network to/from disk as GraphML, GeoPackage, or OSM XML file
- Conduct topological and spatial analyses to automatically calculate dozens of indicators
- Calculate and visualize street bearings and orientations
- Calculate and visualize shortest-path routes that minimize distance, travel time, elevation, etc
- Explore street networks and geospatial features as a static map or interactive web map
- Visualize travel distance and travel time with isoline and isochrone maps
- Plot figure-ground diagrams of street networks and building footprints
The OSMnx Examples Gallery_ contains tutorials and demonstrations of all these features, and package usage is detailed in the :doc:user-reference.
Configuration
^^^^^^^^^^^^^
You can configure OSMnx using the settings module. Here you can adjust logging behavior, caching, server endpoints, and more. You can also configure OSMnx to retrieve historical snapshots of OpenStreetMap data as of a certain date.
Read more about the :ref:settings <osmnx-settings-module> module in the User Reference.
Geocoding and Querying
^^^^^^^^^^^^^^^^^^^^^^
OSMnx geocodes place names and addresses with the OpenStreetMap Nominatim_ API. You can use the geocoder module to geocode place names or addresses to lat-lon coordinates. Or, you can retrieve place boundaries or any other OpenStreetMap elements by name or ID. Read more about the :ref:geocoder <osmnx-geocoder-module> module in the User Reference.
Using the features and graph modules, as described below, you can download data by lat-lon point, address, bounding box, bounding polygon, or place name (e.g., neighborhood, city, county, etc).
Urban Amenities
^^^^^^^^^^^^^^^
Using OSMnx's features module, you can search for and download any geospatial features_ (such as building footprints, grocery stores, schools, public parks, transit stops, etc) from the OpenStreetMap Overpass_ API as a GeoPandas GeoDataFrame. This uses OpenStreetMap tags_ to search for matching elements_.
Read more about the :ref:features <osmnx-features-module> module in the User Reference.
Modeling a Network
^^^^^^^^^^^^^^^^^^
Using OSMnx's graph module, you can retrieve any spatial network data (such as streets, paths, rail, canals, etc) from the Overpass API and model them as NetworkX MultiDiGraphs_.
In short, MultiDiGraphs are nonplanar directed graphs with possible self-loops and parallel edges. Thus, a one-way street will be represented with a single directed edge from node u to node v, but a bidirectional street will be represented with two reciprocal directed edges (with identical geometries): one from node u to node v and another from v to u, to represent both possible directions of flow. Because these graphs are nonplanar, they correctly model the topology of interchanges, bridges, and tunnels. That is, edge crossings in a two-dimensional plane are not intersections in an OSMnx model unless they represent true junctions in the three-dimensional real world.
The graph module uses filters to query the Overpass API: you can either specify a built-in network type or provide your own custom filter with Overpass QL_. Under the hood, OSMnx does several things to generate the best possible model. It initially creates a 500m-buffered graph before truncating it to your desired query area, to ensure accurate streets-per-node stats and to attenuate graph perimeter effects. By default, it returns the largest weakly connected component. It also simplifies the graph topology as discussed below.
Read more about the :ref:graph <osmnx-graph-module> module in the User Reference and refer to the official reference paper at the :doc:further-reading page for complete modeling details.
Topology Clean-Up
^^^^^^^^^^^^^^^^^
The simplification module automatically processes the network's topology from the original raw OpenStreetMap data, such that nodes represent intersections/dead-ends and edges represent the street segments that link them. This takes two primary forms: graph simplification and intersection consolidation.
Graph simplification cleans up the graph's topology so that nodes represent intersections or dead-ends and edges represent street segments. This is important because in OpenStreetMap raw data, ways comprise sets of straight-line segments between nodes: that is, nodes are vertices for streets' curving line geometries, not just intersections and dead-ends. By default, OSMnx simplifies this topology by discarding non-intersection/dead-end nodes while retaining the complete true edge geometry as an edge attribute. When multiple OpenStreetMap ways are merged into a single graph edge, the ways' attribute values can be aggregated into a single value.
Intersection consolidation is important because many real-world street networks feature complex intersections and traffic circles, resulting in a cluster of graph nodes where there is really just one true intersection as we would think of it in transportation or urban design. Similarly, divided roads are often represented by separate centerline edges: the intersection of two divided roads thus creates 4 nodes, representing where each edge intersects a perpendicular edge, but these 4 nodes represent a single intersection in the real world. OSMnx can consolidate such complex intersections into a single node and optionally rebuild the graph's edge topology accordingly. When multiple OpenStreetMap nodes are merged into a single graph node, the nodes' attribute values can be aggregated into a single value.
Read more about the :ref:simplification <osmnx-simplification-module> module in the User Reference.
Model Attributes
^^^^^^^^^^^^^^^^
An OSMnx model has some standard required attributes, plus some optional attributes. The latter are sometimes present based on the source OSM data's tagging, the settings module configuration, and any processing you may have done to add additional attributes (as noted in various functions' documentation).
As a NetworkX MultiDiGraph_ object, it has top-level graph, nodes, and edges attributes. The graph attribute dictionary must contain a "crs" key defining its coordinate reference system. The nodes are identified by OSM ID and each must contain a data attribute dictionary that must have "x" and "y" keys defining its coordinates and a "street_count" key defining how many physical streets are incident to it. The edges are identified by a 3-tuple of "u" (source node ID), "v" (target node ID), and "key" (to differentiate parallel edges), and each must contain a data attribute dictionary that must have an "osmid" key defining its OSM ID and a "length" key defining its length in meters.
The OSMnx graph module automatically creates MultiDiGraphs with these required attributes, plus additional optional attributes based on the settings module configuration. If you instead manually create your own graph model, make sure it has these required attributes at a minimum.
Convert, Project, Save
^^^^^^^^^^^^^^^^^^^^^^
OSMnx's convert module can convert a MultiDiGraph to a DiGraph_ if you prefer a directed representation of the network without any parallel edges, or to a MultiGraph_ if you need an undirected representation for use with functions or algorithms that only accept a MultiGraph object. If you just want a fully bidirectional graph (such as for a walking network), just configure the settings module's bidirectional_network_types before creating your graph.
The convert module can also convert a MultiDiGraph to/from GeoPandas node and edge GeoDataFrames_. The nodes GeoDataFrame is indexed by OSM ID and the edges GeoDataFrame is multi-indexed by u, v, key just like a NetworkX edge. This allows you to load arbitrary node/edge ShapeFiles or GeoPackage layers as GeoDataFrames then model them as a MultiDiGraph for graph analysis. The convert module exposes validation functions to verify that your MultiDiGraph or GeoDataFrames satisfy OSMnx requirements. Read more about the :ref:convert <osmnx-convert-module> module in the User Reference.
You can easily project your graph to different coordinate reference systems using the projection module. If you're unsure which CRS_ you want to project to, OSMnx can automatically determine an appropriate UTM CRS for you. Read more about the :ref:projection <osmnx-projection-module> module in the User Reference.
Using the io module, you can save your graph to disk as a GraphML file (to load into other network analysis software), a GeoPackage (to load into other GIS software), or an OSM XML file. Use the GraphML format whenever saving a graph for later work with OSMnx. Read more about the :ref:io <osmnx-io-module> module in the User Reference.
Network Statistics
^^^^^^^^^^^^^^^^^^
You can use the stats module to calculate a variety of geometric and topological measures as well as street network bearing and orientation statistics. These measures define streets as the edges in an undirected representation of the graph to prevent double-counting bidirectional edges of a two-way street. You can easily generate common stats in transportation studies, urban design, and network science, including intersection density, circuity, average node degree (connectedness), betweenness centrality, and much more. Read more about the :ref:stats <osmnx-stats-module> module in the User Reference.
You can also use NetworkX directly to calculate additional topological network measures.
Working with Elevation
^^^^^^^^^^^^^^^^^^^^^^
The elevation module lets you automatically attach elevations to the graph's nodes from a local raster file or the Google Maps Elevation API_ (or equivalent web API with a compatible interface). You can also calculate edge grades (i.e., rise-over-run) and analyze the steepness of certain streets or routes.
Read more about the :ref:elevation <osmnx-elevation-module> module in the User Reference.
Routing
^^^^^^^
The distance module can find the nearest node(s) or edge(s) to coordinates using a fast spatial index. The routing module can solve shortest paths for network routing, parallelized with multiprocessing, using different weights (e.g., distance, travel time, elevation change, etc). It can also impute missing speeds to the graph edges. This imputation can obviously be imprecise, so the user can override it by passing in arguments that define local speed limits. It can also calculate free-flow travel times for each edge.
Read more about the :ref:distance <osmnx-distance-module> and :ref:routing <osmnx-routing-module> modules in the User Reference.
Visualization
^^^^^^^^^^^^^
You can plot graphs, routes, network figure-ground diagrams, building footprints, and street network orientation rose diagrams (aka, polar histograms) with the plot module. You can also explore street networks, routes, or geospatial features as interactive Folium_ web maps.
Read more about the :ref:plot <osmnx-plot-module> module in the User Reference.
Usage Limits
^^^^^^^^^^^^
Be a good neighbor! OSMnx works with Overpass's rate limiting to avoid overwhelming their resources. Don't run multiple/parallel OSMnx instances simultaneously to circumvent their limits. These APIs are free to use, but they're not free to operate. If you will make many queries (e.g., more than 1k/day), you need to host your own local Overpass instance. Refer to the Nominatim Usage Policy_ and Overpass Commons_ documentation for API usage limits and restrictions to which you must adhere. If you configure OSMnx to use an alternative API instance, ensure you understand and follow their policies. If you feel you need to exceed these limits, just install your own hosted instance and set OSMnx to use it.
More Info
All of this functionality is demonstrated step-by-step in the OSMnx Examples Gallery, and usage is detailed in the :doc:user-reference. Feature development details are in the Changelog. Consult the :doc:further-reading resources for additional technical details and research.
Frequently Asked Questions
How do I install OSMnx? Follow the :doc:installation guide.
How do I use OSMnx? Check out the step-by-step tutorials in the OSMnx Examples Gallery_.
How does this or that function work? Consult the :doc:user-reference.
What can I do with OSMnx? Check out recent projects_ that use OSMnx.
I have a usage question. Please ask it on StackOverflow_.
.. _Changelog: https://github.com/gboeing/osmnx/blob/main/CHANGELOG.md
.. _CRS: https://en.wikipedia.org/wiki/Coordinate_reference_system
.. _DiGraph: https://networkx.org/documentation/stable/reference/classes/digraph.html
.. _elements: https://wiki.openstreetmap.org/wiki/Elements
.. _Elevation API: https://developers.google.com/maps/documentation/elevation
.. _Examples Gallery: https://github.com/gboeing/osmnx-examples
.. _features: https://wiki.openstreetmap.org/wiki/Map_features
.. _Folium: https://python-visualization.github.io/folium/
.. _GeoDataFrames: https://geopandas.org/en/stable/docs/reference/geodataframe.html
.. _GeoPandas: https://geopandas.org
.. _MultiDiGraph: https://networkx.org/documentation/stable/reference/classes/multidigraph.html
.. _MultiDiGraphs: https://networkx.org/documentation/stable/reference/classes/multidigraph.html
.. _MultiGraph: https://networkx.org/documentation/stable/reference/classes/multigraph.html
.. _NetworkX: https://networkx.org
.. _Nominatim: https://nominatim.org
.. _Nominatim Usage Policy: https://operations.osmfoundation.org/policies/nominatim/
.. _OpenStreetMap: https://www.openstreetmap.org
.. _Overpass: https://wiki.openstreetmap.org/wiki/Overpass_API
.. _Overpass Commons: https://dev.overpass-api.de/overpass-doc/en/preface/commons.html
.. _Overpass QL: https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL
.. _projects: https://geoffboeing.com/2018/03/osmnx-features-roundup
.. _StackOverflow: https://stackoverflow.com/search?q=osmnx
.. _tags: https://wiki.openstreetmap.org/wiki/Tags
File: docs/source/index.rst
OSMnx |version|
OSMnx is a Python package to easily download, model, analyze, and visualize street networks and other geospatial features from OpenStreetMap. You can download and model walking, driving, or biking networks with a single line of code then analyze and visualize them. You can just as easily work with urban amenities/points of interest, building footprints, transit stops, elevation data, street orientations, speed/travel time, and routing.
.. _migration guide: https://github.com/gboeing/osmnx/issues/1123
Citation
If you use OSMnx in your work, please cite the paper:
Boeing, G. (2025). Modeling and Analyzing Urban Networks and Amenities with OSMnx_. Geographical Analysis 57 (4), 567-577. doi:10.1111/gean.70009
.. _Modeling and Analyzing Urban Networks and Amenities with OSMnx: https://doi.org/10.1111/gean.70009
Getting Started
First read the :doc:getting-started guide for an introduction to the package and FAQ.
Then work through the Examples Gallery_ for step-by-step tutorials and sample code.
.. _Examples Gallery: https://github.com/gboeing/osmnx-examples
Installation
Follow the :doc:installation guide to install OSMnx.
Support
If you have any trouble, consult the :doc:user-reference. The OSMnx repository is hosted on GitHub. If you have a "how-to" or usage question, please ask it on StackOverflow, as we reserve the repository's issue tracker for bug tracking and feature development.
.. _GitHub: https://github.com/gboeing/osmnx
.. _StackOverflow: https://stackoverflow.com/search?q=osmnx
License
OSMnx is open source and licensed under the MIT license. OpenStreetMap's open data license_ requires that derivative works provide proper attribution. Refer to the :doc:getting-started guide for usage limitations.
.. _license: https://www.openstreetmap.org/copyright
User Guides
.. toctree::
:maxdepth: 1
installation
.. toctree::
:maxdepth: 1
getting-started
.. toctree::
:maxdepth: 1
user-reference
.. toctree::
:maxdepth: 1
internals-reference
.. toctree::
:maxdepth: 1
further-reading
Indices
- :ref:
genindex - :ref:
modindex - :ref:
search
File: docs/source/installation.rst
Installation
Conda
The foolproof way to install OSMnx is with conda_ or mamba_:
.. code-block:: shell
conda create --strict-channel-priority -c conda-forge -n ox osmnxThis creates a new conda environment and installs OSMnx into it, via the conda-forge channel. If you want other packages, such as :code:jupyterlab, installed in this environment as well, just add their names after :code:osmnx above. To upgrade OSMnx to a newer release, remove the conda environment you created and then create a new one again, as above. See the conda-forge_ documentation for details.
Docker
You can run OSMnx + JupyterLab directly from the official OSMnx Docker_ image.
Pip
You can also install OSMnx with uv_ or pip_ (into a virtual environment):
.. code-block:: shell
pip install osmnxOSMnx is written in pure Python and distributed on PyPI_. Its installation alone is thus trivially simple if you have its dependencies installed and tested on your system. However, OSMnx depends on other packages that in turn depend on compiled C/C++ libraries, which may present some challenges depending on your specific system's configuration. If precompiled binaries are not available for your system, you may need to compile and configure those dependencies by following their installation instructions. So, if you're not sure what you're doing, just follow the conda instructions above to avoid installation problems.
.. _conda: https://conda.io/
.. _conda-forge: https://conda-forge.org/
.. _Docker: https://hub.docker.com/r/gboeing/osmnx
.. _mamba: https://mamba.readthedocs.io/
.. _pip: https://pip.pypa.io/
.. _PyPI: https://pypi.org/project/osmnx/
.. _uv: https://docs.astral.sh/uv/
File: docs/source/internals-reference.rst
Internals Reference
This is the complete OSMnx internals reference for developers, including private internal modules and functions. If you are instead looking for a user guide to OSMnx's public API, see the :doc:user-reference.
osmnx._api_v1 module
.. automodule:: osmnx._api_v1
:members:
:private-members:
:noindex:
osmnx.bearing module
.. automodule:: osmnx.bearing
:members:
:private-members:
:noindex:
osmnx.convert module
.. automodule:: osmnx.convert
:members:
:private-members:
:noindex:
osmnx.distance module
.. automodule:: osmnx.distance
:members:
:private-members:
:noindex:
osmnx.elevation module
.. automodule:: osmnx.elevation
:members:
:private-members:
:noindex:
osmnx._errors module
.. automodule:: osmnx._errors
:members:
:private-members:
:noindex:
osmnx.features module
.. automodule:: osmnx.features
:members:
:private-members:
:noindex:
osmnx.geocoder module
.. automodule:: osmnx.geocoder
:members:
:private-members:
:noindex:
osmnx.graph module
.. automodule:: osmnx.graph
:members:
:private-members:
:noindex:
osmnx._http module
.. automodule:: osmnx._http
:members:
:private-members:
:noindex:
osmnx.io module
.. automodule:: osmnx.io
:members:
:private-members:
:noindex:
osmnx._nominatim module
.. automodule:: osmnx._nominatim
:members:
:private-members:
:noindex:
osmnx._osm_xml module
.. automodule:: osmnx._osm_xml
:members:
:private-members:
:noindex:
osmnx._overpass module
.. automodule:: osmnx._overpass
:members:
:private-members:
:noindex:
osmnx.plot module
.. automodule:: osmnx.plot
:members:
:private-members:
:noindex:
osmnx.projection module
.. automodule:: osmnx.projection
:members:
:private-members:
:noindex:
osmnx.routing module
.. automodule:: osmnx.routing
:members:
:private-members:
:noindex:
osmnx.settings module
.. automodule:: osmnx.settings
:members:
:private-members:
:noindex:
osmnx.simplification module
.. automodule:: osmnx.simplification
:members:
:private-members:
:noindex:
osmnx.stats module
.. automodule:: osmnx.stats
:members:
:private-members:
:noindex:
osmnx.truncate module
.. automodule:: osmnx.truncate
:members:
:private-members:
:noindex:
osmnx.utils module
.. automodule:: osmnx.utils
:members:
:private-members:
:noindex:
osmnx.utils_geo module
.. automodule:: osmnx.utils_geo
:members:
:private-members:
:noindex:
osmnx._validate module
.. automodule:: osmnx._validate
:members:
:private-members:
:noindex:
File: docs/source/user-reference.rst
User Reference
This is the User Reference for the OSMnx package. If you are looking for an introduction to OSMnx, read the :doc:getting-started guide. This guide describes the usage of OSMnx's public API.
.. _migration guide: https://github.com/gboeing/osmnx/issues/1123
.. _osmnx-bearing-module:
osmnx.bearing module
.. automodule:: osmnx.bearing
:members:
.. _osmnx-convert-module:
osmnx.convert module
.. automodule:: osmnx.convert
:members:
.. _osmnx-distance-module:
osmnx.distance module
.. automodule:: osmnx.distance
:members:
.. _osmnx-elevation-module:
osmnx.elevation module
.. automodule:: osmnx.elevation
:members:
.. _osmnx-features-module:
osmnx.features module
.. automodule:: osmnx.features
:members:
.. _osmnx-geocoder-module:
osmnx.geocoder module
.. automodule:: osmnx.geocoder
:members:
.. _osmnx-graph-module:
osmnx.graph module
.. automodule:: osmnx.graph
:members:
.. _osmnx-io-module:
osmnx.io module
.. automodule:: osmnx.io
:members:
.. _osmnx-plot-module:
osmnx.plot module
.. automodule:: osmnx.plot
:members:
.. _osmnx-projection-module:
osmnx.projection module
.. automodule:: osmnx.projection
:members:
.. _osmnx-routing-module:
osmnx.routing module
.. automodule:: osmnx.routing
:members:
.. _osmnx-settings-module:
osmnx.settings module
.. automodule:: osmnx.settings
:members:
.. _osmnx-simplification-module:
osmnx.simplification module
.. automodule:: osmnx.simplification
:members:
.. _osmnx-stats-module:
osmnx.stats module
.. automodule:: osmnx.stats
:members:
.. _osmnx-truncate-module:
osmnx.truncate module
.. automodule:: osmnx.truncate
:members:
.. _osmnx-utils-module:
osmnx.utils module
.. automodule:: osmnx.utils
:members:
.. _osmnx-utils_geo-module:
osmnx.utils_geo module
.. automodule:: osmnx.utils_geo
:members: