cityseer
Computational tools for network-based pedestrian-scale urban analysis
What it is and what it does
Cityseer is a Python package for pedestrian-scale urban network analysis, combining network topology, geospatial data, and statistical methods to measure urban form and accessibility. It computes network centrality metrics (including harmonic closeness and segment-weighted variants) on primal or dual graphs, calculates land-use accessibility and mixed-use indices with dynamic aggregation, and performs pedestrian-flow betweenness analysis. The package integrates with the NumPy ecosystem (NetworkX, GeoPandas, Shapely, Rasterio) and uses Rust-backed algorithms for computationally intensive loops, enabling analysis of large or decomposed street networks.
Typical workflows involve extracting street networks from OpenStreetMap via osmnx, assigning land-use or other contextual data to street segments, and computing multi-scalar metrics from selected analysis points. The package supports high-resolution, moving-window analysis with strict network-distance thresholds and facilitates downstream machine learning and data science tasks by generating multi-variable datasets. It is designed for urbanists, researchers, and planners conducting computational urban analytics.
Use it for:
- Compute network centrality measures on street networks to identify structurally important locations.
- Assess land-use accessibility and mixed-use diversity around points of interest using network-distance thresholds.
- Analyze pedestrian-flow demand and origin-destination betweenness to understand movement patterns.
- Generate multi-variable urban datasets combining centrality and accessibility for machine learning.
- Perform high-resolution moving-window urban morphometric analysis with network-based distance constraints.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Computes network centrality, land-use accessibility, mixed-use indices, and pedestrian-flow analysis on street networks extracted from OpenStreetMap or custom graphs.
Yes, if you are conducting pedestrian-scale urban network analysis or research. The package is actively maintained, supports current Python versions, has no known vulnerabilities, and integrates well with standard geospatial tools. The AGPL-3.0 license is permissive for open-source and research use but requires review for proprietary integration. Medium install friction is acceptable for specialized geospatial work. Not suitable if you need a lightweight, minimal-dependency tool or are restricted to permissive licenses.
Install
cityseer on PyPI
pip
pip install cityseeruv
uv add cityseerpoetry
poetry add cityseerInstalling cityseer
Before you install
Medium install friction due to 12 runtime dependencies including geospatial libraries (geopandas, rasterio, pyogrio, osmnx) and compiled extensions (Rust-backed). Active maintenance with a release 14 days old and recent commits; Python 3.10–3.14 support is current.
License in practice
AGPL-3.0 license requires derivative works and modifications to be shared under the same license. Suitable for research and open-source projects; review licensing obligations if integrating into proprietary software.
Quickstart
pip install cityseer
import cityseer
from cityseer import metrics
# Load a network graph and compute centrality metrics
# See https://cityseer.benchmarkurbanism.com/ for detailed examples
Requires Python 3.10–3.14; geospatial dependencies (geopandas, rasterio) may need system libraries; Rust toolchain required only for development builds.
Verify before relying
- Performance characteristics and scalability limits for large or decomposed graphs.
- Whether the package supports custom graph formats beyond osmnx and NetworkX structures.
Package facts
| License | AGPL-3.0 (agpl) |
| Python support | supports the current Python release (<3.15,>=3.10) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 12 — matplotlib, networkx, pyproj, requests, tqdm, shapely, numpy, geopandas, rasterio, pyogrio, osmnx, statsmodels |
| Maintenance | actively maintained — 14 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 126,803/month — #11,766 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: cityseer-5.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; cityseer-5.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; cityseer-5.8.0-cp310-cp310-win_amd64.whl; cityseer-5.8.0-cp311-cp311-macosx_10_12_x86_64.whl; cityseer-5.8.0-cp311-cp311-macosx_11_0_arm64.whl; cityseer-5.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; cityseer-5.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; cityseer-5.8.0-cp311-cp311-win_amd64.whl; cityseer-5.8.0-cp312-cp312-macosx_10_12_x86_64.whl; cityseer-5.8.0-cp312-cp312-macosx_11_0_arm64.whl; cityseer-5.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; cityseer-5.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; cityseer-5.8.0-cp312-cp312-win_amd64.whl; cityseer-5.8.0-cp313-cp313-macosx_10_12_x86_64.whl; cityseer-5.8.0-cp313-cp313-macosx_11_0_arm64.whl; cityseer-5.8.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; cityseer-5.8.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; cityseer-5.8.0-cp313-cp313-win_amd64.whl; cityseer-5.8.0-cp314-cp314-macosx_10_12_x86_64.whl; cityseer-5.8.0-cp314-cp314-macosx_11_0_arm64.whl
Keywords: network-topology, numpy, architecture, openstreetmap, urban-planning, python3, networkx, networks, spatial-analysis, geographical-information-system, spatial-data, morphometrics, network-analysis, momepy, spatial-data-analysis, centrality, shapely, landuse, osmnx, network-centralities
Tags
More Information Analysis packages
A drop-in replacement for Python's standard…
permissive · top 100 on PyPI
pyarrowpyarrow provides Python bindings to Apache…
permissive · top 100 on PyPI
networkxNetworkX provides data structures and…
permissive · top 1,000 on PyPI
snowflake-connector-pythonConnects Python applications to Snowflake data…
permissive · top 1,000 on PyPI
contourpyContourPy calculates contours of 2D…
permissive · top 1,000 on PyPI
snowflake-snowpark-pythonSnowpark Python provides APIs to query and…
permissive · top 1,000 on PyPI
osmnxOSMnx downloads, models, and analyzes street…
permissive · top 15,000 on PyPI
accessCalculates spatial accessibility metrics to…
permissive · top 15,000 on PyPI
momepyMomepy quantifies urban form through…
permissive · top 15,000 on PyPI
segregationCalculates over 40 segregation indices—both…
permissive · top 15,000 on PyPI
spatial-accessComputes travel times and spatial access…
permissive · top 15,000 on PyPI
giddyGiddy provides methods for exploratory…
permissive · top 15,000 on PyPI
pysalPySAL is a meta-package that bundles 29 spatial…
permissive · top 15,000 on PyPI
walkscore-apiProvides Python bindings to query the WalkScore…
permissive · top 15,000 on PyPI
overpyA Python wrapper for querying the Overpass API…
permissive · top 15,000 on PyPI