- osmnx package
- osmnx.bearing module
- osmnx.distance module
- osmnx.downloader module
- osmnx.elevation module
- osmnx.folium module
- osmnx.footprints module
- osmnx.geocoder module
- osmnx.geometries module
- osmnx.graph module
- osmnx.io module
- osmnx.plot module
- osmnx.pois module
- osmnx.projection module
- osmnx.settings module
- osmnx.simplification module
- osmnx.speed module
- osmnx.stats module
- osmnx.truncate module
- osmnx.utils module
- osmnx.utils_geo module
- osmnx.utils_graph module
OSMnx: retrieve, model, analyze, and visualize OpenStreetMap street networks and other spatial data.
OSMnx is a Python package that lets you download spatial geometries and model, project, visualize, and analyze real-world street networks from OpenStreetMap’s APIs. Users can download and model walkable, drivable, or bikeable urban networks with a single line of Python code, and then easily analyze and visualize them. You can just as easily download and work with amenities/points of interest, building footprints, elevation data, street bearings/orientations, speed/travel time, and network routing.
The OSMnx project is hosted on GitHub.
If you use OSMnx in your work, please cite the journal article:
Boeing, G. 2017. “OSMnx: New Methods for Acquiring, Constructing, Analyzing, and Visualizing Complex Street Networks.” Computers, Environment and Urban Systems 65, 126-139. doi:10.1016/j.compenvurbsys.2017.05.004
OSMnx is built on top of geopandas, networkx, and matplotlib and interacts with OpenStreetMap’s APIs to:
- Download and model street networks or other networked infrastructure anywhere in the world with a single line of code
- Download any other spatial geometries, place boundaries, building footprints, or points of interest as a GeoDataFrame
- Download by city name, polygon, bounding box, or point/address + network distance
- Download drivable, walkable, bikeable, or all street networks
- Download node elevations and calculate edge grades (inclines)
- Impute missing speeds and calculate graph edge travel times
- Simplify and correct the network’s topology to clean-up nodes and consolidate intersections
- Fast map-matching of points, routes, or trajectories to nearest graph edges or nodes
- Save networks to disk as shapefiles, geopackages, and GraphML
- Save/load street network to/from a local .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
- Visualize street networks as a static map or interactive leaflet web map
- Visualize travel distance and travel time with isoline and isochrone maps
- Plot figure-ground diagrams of street networks and building footprints
You can install OSMnx with conda:
conda config --prepend channels conda-forge conda create -n ox --strict-channel-priority osmnx
Alternatively, you can run OSMnx + Jupyter directly from the official docker container, or you can install OSMnx via pip if you already have all of its dependencies installed and tested on your system. Note: pip installation is nontrivial. If you don’t know exactly what you’re doing, just use conda as described above.
To upgrade OSMnx to a newer release, just remove the conda environment you created and then create a new one again following the steps above. Don’t just run
conda update or you could get package conflicts.
If you’ve discovered a bug in OSMnx, please open an issue at the OSMnx GitHub repo documenting what is broken in the package. Alternatively, if you have a usage question, please ask it on StackOverflow.
The project is licensed under the MIT license.