A library to download, process and visualize high resolution urban data.
A library to download, process and visualize high resolution urban data in an easy and fast way.
UrbanPy is an open source project to automate data extraction, measurement, and visualization of urban accessibility metrics.
To install the urbanpy library you can use:
$ pip install urbanpy
Then use import urbanpy
in your python scripts to use the library.
If you plan to use the OSRM Server route or distance matrix calculation functionalities* you must have Docker installed in your system, refer to Docker Installation. For Windows users, make sure to run the following command in powershell to avoid execution errors.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
It is important to note that for travel time computation, if needed, a method is implements the Open Source Routing Machine (OSRM). This method pulls, extracts and adds graph weights to the downloaded network and runs the routing server. Make sure to have docker installed for the library to work correctly. Also, verify in the docker settings that containers can use the necessary cpu cores and ram memory (it depends in the country size).
Urbanpy provides a simple approximation with nearest neighbor search using a BallTree and haversine distance, but the difference between real travel time and the approximation may vary from city to city.
Additionally, the use of spatial libraries like osmnx, geopandas and h3 require certain extra packages. Specifically, for rtree (spatial indexing to allow spatial joins) libspatialindex is required. OSMnx and Geopandas requiere GDAL as well. If not handled by installing geopandas's dependencies, installing fiona, pyproj and shapely should satisfy the requirements. Another way to ensure all dependencies are met, installing osmnx via conda should suffice. H3 requires cc, make, and cmake in your $PATH when installing, otherwise installation will not be successful. Please refer to h3's documentation for a more detailed guide on installation options and requirements.
UrbanPy lets you download and visualize city boundaries extremely easy:
import urbanpy as up
boundaries = up.download.nominatim_osm('Lima, Peru', expected_position=2)
boundaries.plot()
Since boundaries
is a GeoDataFrame it can be easily plotted with the method .plot()
. You can also generate hexagons to fill the city boundaries in a oneliner.
hexs, hexs_centroids = up.geom.gen_hexagons(resolution=9, city=boundaries)
Also check our example notebooks, and if you have examples or visualizations of your own, we encourage you to share contribute.
If you plan to contribute or customize urbanpy first clone this repo and cd into it. Then, we strongly recommend you to create a virtual environment. You can use conda, this installation manage some complicated C spatial library dependencies:
$ conda env create -n urbanpy -f environment.yml python=3.6
$ conda activate urbanpy
Or if you are more confident about your setup, you can use pip:
$ python3 -m venv .env
$ source .env/bin/activate
(.env) $ pip install -r requirements.txt
Copyright © 2020. Banco Interamericano de Desarrollo ("BID"). Uso autorizado. AM-331-A3
UrbanPy's original authors are Claudio Ortega (socials), Andrés Regal (socials), and Antonio Vazquez Brust (socials).
If you want to contribute to UrbanPy, be sure to review the contribution guidelines. This project adheres to UrbanPy's code of conduct. By participating, you are expected to uphold this code.
*Current support is tested on Linux Ubuntu 18.04 & Mac OS Catalina, coming soon we will test and support Windows 10.
If you use this library or find the documentation useful for your research, please consider citing:
@InProceedings{urbanpy,
author="Regal, Andres and Ortega, Claudio and Vazquez Brust, Antonio and Rodriguez, Michelle and Zambrano-Barragan, Patricio",
title="UrbanPy: A Library to Download, Process and Visualize High Resolution Urban Data to Support Transportation and Urban Planning Decisions",
booktitle="Production and Operations Management",
year="2022",
publisher="Springer International Publishing",
address="Cham",
pages="463--473",
isbn="978-3-031-06862-1"
url="https://doi.org/10.1007/978-3-031-06862-1_34"
}
Urbanpy applied to the education sector in Brasil This repo is for code, documentation, and discussion for work associated with a skills-based volunteering project in collaboration with the IADB and urbanpy.
AutoDash