urban-mapper

Spatial Join & Enrich any urban layer given any external urban dataset of interest, streamline your urban analysis with Scikit-Learn-Like pipelines, and share your insights with the urban research community!

https://github.com/vida-nyu/urbanmapper

Science Score: 52.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
    Organization vida-nyu has institutional domain (vida.engineering.nyu.edu)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.0%) to scientific vocabulary

Keywords

spatial-data urban-computing urban-pipeline urban-planning urbanmappers
Last synced: 6 months ago · JSON representation ·

Repository

Spatial Join & Enrich any urban layer given any external urban dataset of interest, streamline your urban analysis with Scikit-Learn-Like pipelines, and share your insights with the urban research community!

Basic Info
Statistics
  • Stars: 55
  • Watchers: 7
  • Forks: 4
  • Open Issues: 10
  • Releases: 1
Topics
spatial-data urban-computing urban-pipeline urban-planning urbanmappers
Created about 1 year ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Security

README.md

UrbanMapper

Enrich Urban Layers Given Urban Datasets

with ease-of-use API and Sklearn-alike Shareable & Reproducible Urban Pipeline

PyPI Version Beartype compliant UV compliant RUFF compliant Jupyter Python 3.10+ Compilation Status

UrbanMapper Cover


[!IMPORTANT] - 📹 UrbanMapper Introductory Video 👉 https://www.youtube.com/watch?v=QUmfvda_z2U 👈 - 🤝 We support JupyterGIS following one of your Urban Pipeline's analysis for collaborative in real-time exploration on Jupyter 🏂 Shout-out to @mfisher87 and JGIS team for their tremendous help.

UrbanMapper, In a Nutshell

UrbanMapper lets you link your data to spatial features—matching, for example, traffic events to streets—to enrich each location with meaningful, location-based information. Formally, it defines a spatial enrichment function $f(X, Y) = X \bowtie Y$, where $X$ represents urban layers (e.g., Streets, Sidewalks, Intersections and more) and $Y$ is a user-provided dataset (e.g., traffic events, sensor data). The operator $\bowtie$ performs a spatial join, enriching each feature in $X$ with relevant attributes from $Y$.

In short, UrbanMapper is a Python toolkit that enriches typically plain urban layers with datasets in a reproducible, shareable, and easily updatable way using minimal code. For example, given traffic accident data and a streets layer from OpenStreetMap, you can compute accidents per street with a Scikit-Learn–style pipeline called the Urban Pipeline—in under 15 lines of code. As your data evolves or team members want new analyses, you can share and update the Urban Pipeline like a trained model, enabling others to run or extend the same workflow without rewriting code.

There are more to UrbanMapper, explore!


Installation

Install UrbanMapper via pip (works in any environment):

bash pip install urban-mapper

Then launch Jupyter Lab to explore UrbanMapper:

bash jupyter lab

[!TIP] We recommend installing UrbanMapper in a virtual environment to keep things tidy and avoid dependency conflicts. You can find detailed instructions—including how to install within a virtual environment using uv, conda or from source in the UrbanMapper Installation Guide.


Urban Layers Currently Supported

UrbanMapper currently supports loading the following urban layers:

  • Street networks (roads and intersections) from OpenStreetMap via OSMNx
  • Pedestrian infrastructure (sidewalks and crosswalks) via Tile2Net ( automated mapping from aerial imagery)
  • City features (buildings, parks, bike lanes, etc.) from OpenStreetMap via OSMNx
  • Administrative boundaries (neighborhoods, cities, states, countries) from OpenStreetMap via OSMNx

More layers, like subway/tube networks, will be added in the future. If you have any suggestions, please feel free to open an issue or a pull request!

🚀 Getting Started with UrbanMapper

Are you ready to dive into urban data analysis in a couple of lines of code? The simplest approach to get started with UrbanMapper is to look through the two getting-started examples available in the documentation then walk through the hands-on examples in the examples/ directory. Documentation is available at UrbanMapper Documentation.


Licence

UrbanMapper is released under the MIT Licence.

Acknowledgments

This work is supported by the NSF and is part of the OSCUR initiative.

Owner

  • Name: VIDA-NYU
  • Login: VIDA-NYU
  • Kind: organization
  • Location: New York, NY

Visualization, Imaging, and Data Analysis Center at New York University

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this library, please cite it as below 👇"
authors:
- family-names: "Provost"
  given-names: "Simon"
  orcid: "https://orcid.org/0000-0001-8402-5464"
- family-names: "Rulff"
  given-names: "Joao"
  orcid: "https://orcid.org/0000-0003-3341-7059"
- family-names: "Castelo Quispe"
  given-names: "Sonia"
  orcid: "https://orcid.org/0000-0001-6881-3006"
- family-names: "Felix Dias"
  given-names: "Fabio"
  orcid: "https://orcid.org/0000-0003-2081-1233"
- family-names: "Freire"
  given-names: "Juliana"
  orcid: "https://orcid.org/0000-0003-3915-7075"
- family-names: "T. Silva"
  given-names: "Claudio"
  orcid: "https://orcid.org/0000-0003-2452-2295"
title: "🗺️ Spatial Join & Enrich any urban layer given any external urban dataset of interest, streamline your urban analysis with Scikit-Learn-Like pipelines, and share your insights with the urban research community!"
version: 0.0.1
date-released: 2025-04-27
url: "https://github.com/VIDA-NYU/UrbanMapper"

GitHub Events

Total
  • Create event: 41
  • Commit comment event: 2
  • Issues event: 36
  • Watch event: 45
  • Delete event: 39
  • Member event: 1
  • Issue comment event: 86
  • Push event: 166
  • Pull request review event: 97
  • Pull request review comment event: 94
  • Pull request event: 59
  • Fork event: 3
Last Year
  • Create event: 41
  • Commit comment event: 2
  • Issues event: 36
  • Watch event: 45
  • Delete event: 39
  • Member event: 1
  • Issue comment event: 86
  • Push event: 166
  • Pull request review event: 97
  • Pull request review comment event: 94
  • Pull request event: 59
  • Fork event: 3

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 141
  • Total Committers: 2
  • Avg Commits per committer: 70.5
  • Development Distribution Score (DDS): 0.064
Past Year
  • Commits: 141
  • Committers: 2
  • Avg Commits per committer: 70.5
  • Development Distribution Score (DDS): 0.064
Top Committers
Name Email Commits
Provost Simon s****t@e****u 132
sonia s****2@g****m 9
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 51
  • Total pull requests: 75
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 1 day
  • Total issue authors: 3
  • Total pull request authors: 4
  • Average comments per issue: 2.31
  • Average comments per pull request: 0.56
  • Merged pull requests: 71
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 51
  • Pull requests: 75
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 1 day
  • Issue authors: 3
  • Pull request authors: 4
  • Average comments per issue: 2.31
  • Average comments per pull request: 0.56
  • Merged pull requests: 71
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • simonprovost (23)
  • soniacq (4)
  • fabiofelix (1)
Pull Request Authors
  • simonprovost (56)
  • soniacq (7)
  • ctsilva (4)
  • fabiofelix (2)
Top Labels
Issue Labels
enhancement (21) loader (8) help wanted (6) enricher (6) preprocessing (6) documentation (5) urban_layer (4) pipeline (3) visualiser (2) examples (1) bug (1)
Pull Request Labels
documentation (37) enhancement (35) bug (10) pipeline (10) loader (6) urban_layer (5) enricher (5) good first issue (4) fix (3) examples (2) study (2) network (2) visualiser (2) not planned (1) preprocessing (1)

Packages

  • Total packages: 3
  • Total downloads:
    • pypi 133 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 15
  • Total maintainers: 1
proxy.golang.org: github.com/vida-nyu/urbanmapper
  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Dependent repos count: 5.7%
Stargazers count: 6.9%
Average: 7.5%
Forks count: 12.2%
Last synced: 6 months ago
proxy.golang.org: github.com/VIDA-NYU/UrbanMapper
  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Dependent repos count: 5.7%
Stargazers count: 6.9%
Average: 7.5%
Forks count: 12.2%
Last synced: 6 months ago
pypi.org: urban-mapper

🗺️ Spatial Join & Enrich any urban layer given any external urban dataset of interest, streamline your urban analysis with Scikit-Learn-Like pipelines, and share your insights with the urban research community!

  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 133 Last month
Rankings
Dependent packages count: 9.1%
Stargazers count: 12.4%
Forks count: 24.3%
Average: 24.3%
Dependent repos count: 51.3%
Maintainers (1)
Last synced: 6 months ago

Dependencies

pyproject.toml pypi
  • auctus-search *
  • beartype >=0.19.0
  • dependency-injector >=4.45.0
  • folium >=0.19.4
  • geopandas >=1.0.1
  • ipython >=8.18.1
  • ipywidgets >=8.1.5
  • joblib >=1.4.2
  • jupyter >=1.1.1
  • jupyter-contrib-nbextensions >=0.7.0
  • jupyter-server-ydoc >=1.1.0
  • jupytergis-core >=0.2.1
  • jupytergis-qgis >=0.2.1
  • jupyterlab-widgets >=3.0.13
  • mapclassify >=2.8.1
  • matplotlib >=3.9.4
  • millify >=0.1.1
  • networkx >=3.2.1
  • notebook ==6.4.12
  • osmnx >=2.0.1
  • pre-commit >=4.1.0
  • psygnal >=0.12.0
  • pyarrow >=19.0.1
  • scikit-learn >=1.6.1
  • skrub >=0.5.1
  • tqdm >=4.67.1
  • traitlets ==5.9.0
.github/workflows/automatic_versioning.yml actions
  • actions/checkout v4 composite
  • callowayproject/bump-my-version master composite
.github/workflows/documentation-links.yml actions
  • readthedocs/actions/preview v1 composite
.github/workflows/publish_pypi.yml actions
  • actions/checkout v4 composite
  • astral-sh/setup-uv v4 composite
.github/workflows/compile.yaml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • astral-sh/setup-uv v5 composite
.github/workflows/docs.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • astral-sh/setup-uv v5 composite
requirements-dev.txt pypi
  • about-time ==4.2.1 development
  • alembic ==1.15.2 development
  • alive-progress ==3.2.0 development
  • annotated-types ==0.7.0 development
  • ansimarkup ==1.5.0 development
  • anthropic ==0.49.0 development
  • anyio ==4.9.0 development
  • appdirs ==1.4.4 development
  • appnope ==0.1.4 development
  • argon2-cffi ==23.1.0 development
  • argon2-cffi-bindings ==21.2.0 development
  • arrow ==1.3.0 development
  • asttokens ==3.0.0 development
  • async-lru ==2.0.5 development
  • attrs ==25.3.0 development
  • babel ==2.17.0 development
  • backports-tarfile ==1.2.0 development
  • backrefs ==5.8 development
  • beartype ==0.20.2 development
  • beautifulsoup4 ==4.13.3 development
  • black ==25.1.0 development
  • bleach ==6.2.0 development
  • branca ==0.8.1 development
  • build ==1.2.2.post1 development
  • cachetools ==5.5.2 development
  • cairocffi ==1.7.1 development
  • cairosvg ==2.7.1 development
  • cattrs ==24.1.3 development
  • certifi ==2025.1.31 development
  • cffi ==1.17.1 development
  • cfgv ==3.4.0 development
  • charset-normalizer ==3.4.1 development
  • click ==8.1.8 development
  • colorama ==0.4.6 development
  • comm ==0.1.4 development
  • contourpy ==1.3.1 development
  • coverage ==7.8.0 development
  • cryptography ==44.0.2 development
  • csscompressor ==0.9.5 development
  • cssselect2 ==0.8.0 development
  • cycler ==0.12.1 development
  • data-profile-viewer ==0.2.7 development
  • datamart-geo ==0.3.1 development
  • datamart-profiler ==0.11 development
  • debugpy ==1.8.14 development
  • decorator ==5.2.1 development
  • defusedxml ==0.7.1 development
  • dependency-injector ==4.46.0 development
  • deprecated ==1.2.18 development
  • dill ==0.3.9 development
  • distlib ==0.3.9 development
  • distro ==1.9.0 development
  • dnspython ==2.7.0 development
  • docutils ==0.21.2 development
  • duty ==1.6.0 development
  • ell-ai ==0.0.17 development
  • email-validator ==2.2.0 development
  • exceptiongroup ==1.2.2 development
  • execnet ==2.1.1 development
  • executing ==2.2.0 development
  • failprint ==1.0.3 development
  • fastapi ==0.111.1 development
  • fastapi-cli ==0.0.7 development
  • fastjsonschema ==2.21.1 development
  • filelock ==3.18.0 development
  • folium ==0.19.5 development
  • fonttools ==4.57.0 development
  • fqdn ==1.5.1 development
  • geographiclib ==2.0 development
  • geopandas ==1.0.1 development
  • geopy ==2.4.1 development
  • ghp-import ==2.1.0 development
  • git-changelog ==2.5.3 development
  • gitdb ==4.0.12 development
  • gitpython ==3.1.44 development
  • google-auth ==2.38.0 development
  • google-genai ==1.10.0 development
  • grapheme ==0.6.0 development
  • greenlet ==3.1.1 development
  • griffe ==1.7.2 development
  • groq ==0.22.0 development
  • h11 ==0.14.0 development
  • htmlmin2 ==0.1.13 development
  • httpcore ==1.0.7 development
  • httptools ==0.6.4 development
  • httpx ==0.28.1 development
  • id ==1.5.0 development
  • identify ==2.6.9 development
  • idna ==3.10 development
  • importlib-metadata ==8.6.1 development
  • iniconfig ==2.1.0 development
  • ipykernel ==6.29.5 development
  • ipython ==8.21.0 development
  • ipython-genutils ==0.2.0 development
  • ipywidgets ==8.1.6 development
  • isoduration ==20.11.0 development
  • jaraco-classes ==3.4.0 development
  • jaraco-context ==6.0.1 development
  • jaraco-functools ==4.1.0 development
  • jedi ==0.19.2 development
  • jeepney ==0.9.0 development
  • jinja2 ==3.1.6 development
  • jiter ==0.9.0 development
  • joblib ==1.4.2 development
  • jsmin ==3.0.1 development
  • json5 ==0.12.0 development
  • jsonpointer ==3.0.0 development
  • jsonschema ==4.23.0 development
  • jsonschema-specifications ==2024.10.1 development
  • jupyter ==1.1.1 development
  • jupyter-client ==8.6.3 development
  • jupyter-collaboration ==3.1.2 development
  • jupyter-collaboration-ui ==1.1.2 development
  • jupyter-console ==6.6.3 development
  • jupyter-contrib-core ==0.4.2 development
  • jupyter-contrib-nbextensions ==0.7.0 development
  • jupyter-core ==5.7.2 development
  • jupyter-docprovider ==1.1.2 development
  • jupyter-events ==0.12.0 development
  • jupyter-highlight-selected-word ==0.2.0 development
  • jupyter-lsp ==2.2.5 development
  • jupyter-nbextensions-configurator ==0.6.4 development
  • jupyter-resource-usage ==1.1.1 development
  • jupyter-server ==2.15.0 development
  • jupyter-server-fileid ==0.9.3 development
  • jupyter-server-terminals ==0.5.3 development
  • jupyter-server-ydoc ==1.1.2 development
  • jupyter-ydoc ==3.0.3 development
  • jupytergis ==0.4.4 development
  • jupytergis-core ==0.4.4 development
  • jupytergis-lab ==0.4.4 development
  • jupytergis-qgis ==0.4.4 development
  • jupyterlab ==4.4.0 development
  • jupyterlab-pygments ==0.3.0 development
  • jupyterlab-server ==2.27.3 development
  • jupyterlab-widgets ==3.0.14 development
  • jupytext ==1.17.0 development
  • keyring ==25.6.0 development
  • kiwisolver ==1.4.8 development
  • loguru ==0.7.3 development
  • lxml ==5.3.2 development
  • mako ==1.3.10 development
  • mapclassify ==2.8.1 development
  • markdown ==3.7 development
  • markdown-callouts ==0.4.0 development
  • markdown-exec ==1.10.3 development
  • markdown-it-py ==3.0.0 development
  • markupsafe ==3.0.2 development
  • matplotlib ==3.10.1 development
  • matplotlib-inline ==0.1.7 development
  • mdit-py-plugins ==0.4.2 development
  • mdurl ==0.1.2 development
  • mergedeep ==1.3.4 development
  • millify ==0.1.1 development
  • mistune ==3.1.3 development
  • mkdocs ==1.6.1 development
  • mkdocs-autorefs ==1.4.1 development
  • mkdocs-coverage ==1.1.0 development
  • mkdocs-gen-files ==0.5.0 development
  • mkdocs-get-deps ==0.2.0 development
  • mkdocs-git-revision-date-localized-plugin ==1.4.5 development
  • mkdocs-jupyter ==0.25.1 development
  • mkdocs-literate-nav ==0.6.2 development
  • mkdocs-material ==9.6.11 development
  • mkdocs-material-extensions ==1.3.1 development
  • mkdocs-minify-plugin ==0.8.0 development
  • mkdocstrings ==0.29.1 development
  • mkdocstrings-python ==1.16.10 development
  • more-itertools ==10.6.0 development
  • mypy ==1.15.0 development
  • mypy-extensions ==1.0.0 development
  • nbclient ==0.10.2 development
  • nbconvert ==7.16.6 development
  • nbformat ==5.10.4 development
  • nbstripout ==0.8.1 development
  • nest-asyncio ==1.6.0 development
  • networkx ==3.4.2 development
  • nh3 ==0.2.21 development
  • nodeenv ==1.9.1 development
  • notebook ==6.4.12 development
  • notebook-shim ==0.2.4 development
  • numpy ==2.2.4 development
  • openai ==1.72.0 development
  • opentelemetry-api ==1.32.0 development
  • osmnx ==2.0.2 development
  • overrides ==7.7.0 development
  • packaging ==24.2 development
  • paginate ==0.5.7 development
  • pandas ==2.2.3 development
  • pandocfilters ==1.5.1 development
  • parso ==0.8.4 development
  • pathspec ==0.12.1 development
  • pexpect ==4.9.0 development
  • pillow ==10.4.0 development
  • platformdirs ==4.3.7 development
  • pluggy ==1.5.0 development
  • pre-commit ==4.2.0 development
  • prometheus-client ==0.21.1 development
  • prompt-toolkit ==3.0.50 development
  • psutil ==5.9.8 development
  • psygnal ==0.12.0 development
  • ptyprocess ==0.7.0 development
  • pure-eval ==0.2.3 development
  • pyarrow ==19.0.1 development
  • pyasn1 ==0.6.1 development
  • pyasn1-modules ==0.4.2 development
  • pycparser ==2.22 development
  • pycrdt ==0.12.12 development
  • pycrdt-websocket ==0.15.4 development
  • pydantic ==2.11.3 development
  • pydantic-core ==2.33.1 development
  • pygments ==2.19.1 development
  • pymdown-extensions ==10.14.3 development
  • pyogrio ==0.10.0 development
  • pyparsing ==3.2.3 development
  • pyproj ==3.7.1 development
  • pyproject-hooks ==1.2.0 development
  • pytest ==8.3.5 development
  • pytest-cov ==6.1.1 development
  • pytest-randomly ==3.16.0 development
  • pytest-xdist ==3.6.1 development
  • python-dateutil ==2.9.0.post0 development
  • python-dotenv ==1.1.0 development
  • python-json-logger ==3.3.0 development
  • python-multipart ==0.0.20 development
  • pytz ==2025.2 development
  • pywin32 ==310 development
  • pywin32-ctypes ==0.2.3 development
  • pywinpty ==2.0.15 development
  • pyyaml ==6.0.2 development
  • pyyaml-env-tag ==0.1 development
  • pyzmq ==26.4.0 development
  • rapidfuzz ==3.13.0 development
  • reacttrs ==0.2.1 development
  • readme-renderer ==44.0 development
  • referencing ==0.36.2 development
  • regex ==2024.11.6 development
  • requests ==2.32.3 development
  • requests-toolbelt ==1.0.0 development
  • rfc3339-validator ==0.1.4 development
  • rfc3986 ==2.0.0 development
  • rfc3986-validator ==0.1.1 development
  • rich ==14.0.0 development
  • rich-toolkit ==0.14.1 development
  • rpds-py ==0.24.0 development
  • rsa ==4.9 development
  • ruff ==0.11.5 development
  • scikit-learn ==1.6.1 development
  • scipy ==1.15.2 development
  • secretstorage ==3.3.3 development
  • semver ==3.0.4 development
  • send2trash ==1.8.3 development
  • setuptools ==78.1.0 development
  • shapely ==2.1.0 development
  • shellingham ==1.5.4 development
  • six ==1.17.0 development
  • skrub ==0.5.3 development
  • smmap ==5.0.2 development
  • sniffio ==1.3.1 development
  • soupsieve ==2.6 development
  • sqlalchemy ==2.0.40 development
  • sqlite-anyio ==0.2.3 development
  • sqlmodel ==0.0.24 development
  • stack-data ==0.6.3 development
  • starlette ==0.37.2 development
  • terminado ==0.18.1 development
  • thefuzz ==0.22.1 development
  • threadpoolctl ==3.6.0 development
  • tinycss2 ==1.4.0 development
  • tomli ==2.2.1 development
  • tornado ==6.4.2 development
  • tqdm ==4.67.1 development
  • traitlets ==5.9.0 development
  • twine ==6.1.0 development
  • typer ==0.15.2 development
  • types-markdown ==3.7.0.20250322 development
  • types-python-dateutil ==2.9.0.20241206 development
  • types-pyyaml ==6.0.12.20250402 development
  • typing-extensions ==4.13.2 development
  • typing-inspection ==0.4.0 development
  • tzdata ==2025.2 development
  • uri-template ==1.3.0 development
  • urllib3 ==2.4.0 development
  • uvicorn ==0.30.6 development
  • uvloop ==0.21.0 development
  • virtualenv ==20.30.0 development
  • watchdog ==6.0.0 development
  • watchfiles ==1.0.5 development
  • wcwidth ==0.2.13 development
  • webcolors ==24.11.1 development
  • webencodings ==0.5.1 development
  • websocket-client ==1.8.0 development
  • websockets ==15.0.1 development
  • widgetsnbextension ==4.0.14 development
  • win32-setctime ==1.2.0 development
  • wrapt ==1.17.2 development
  • xyzservices ==2025.1.0 development
  • yjs-widgets ==0.4.0 development
  • ypywidgets ==0.9.7 development
  • zipp ==3.21.0 development