Categories
Urban

New Article: Complexity in Urban Form and Design

My article, Measuring the Complexity of Urban Form and Design, is now in-press for publication at Urban Design International (download free PDF). Cities are complex systems composed of many human agents interacting in physical urban space. This paper develops a typology of measures and indicators for assessing the physical complexity of the built environment at the scale of urban design. It extends quantitative measures from city planning, network science, ecosystems studies, fractal geometry, statistical physics, and information theory to the analysis of urban form and qualitative human experience.

The Mandelbrot set, a mathematical fractal. Venice's fractal urban form and fabric. The Eiffel Tower's fractal architecture in Paris.

Categories
Planning

New Article: Urban Street Networks in EP-B

My article, “A Multi-Scale Analysis of 27,000 Urban Street Networks: Every US City, Town, Urbanized Area, and Zillow Neighborhood,” was recently published in Environment and Planning B: Urban Analytics and City Science. This study uses OSMnx to download and analyze 27,000 street networks from OpenStreetMap at metropolitan, municipal, and neighborhood scales – namely, every US city and town, census urbanized area, and Zillow-defined neighborhood. It illustrates the use of OSMnx and OpenStreetMap to consistently conduct street network analysis with extremely large sample sizes, with clearly defined network definitions and extents for reproducibility, and using nonplanar, directed graphs.

These 27,000 street networks as well as their measures have been shared in a free public repository at the Harvard Dataverse for anyone to re-purpose. This study’s empirical findings emphasize measures relevant to graph theory, transportation, urban design, and morphology, such as structure, connectedness, density, centrality, and resilience. It uses graph Maximum Betweenness Centrality and Average Node Connectivity to examine how “resilient” a street network is, in terms of how reliant it is on important nodes and how easy it is to disconnect it.

Categories
Planning

City Street Orientations around the World

City street network grid orientations, order, disorder, entropy, rose plot, polar histogram made with Python, OSMnx, OpenStreetMap, matplotlib.This post is adapted from this research paper that you can read/cite for more info. It analyzes and visualizes 100 cities around the world.

By popular request, this is a quick follow-up to this post comparing the orientation of streets in 25 US cities using Python and OSMnx. Here are 25 more cities around the world:

City street network grid orientations, rose plot, polar histogram made with Python, OSMnx, OpenStreetMap, matplotlib. Bangkok, Barcelona, Beijing, Budapest, Cairo, Delhi, Dubai, Glasgow, Hong Kong, Lagos, London, Madrid, Melbourne, Mexico City, Moscow, Mumbai, Munich, Paris, Rio de Janeiro, Rome, Seoul, Sydney, Tehran, Toronto, Warsaw, Tokyo, Berlin, Venice

Categories
Planning

Comparing US City Street Orientations

City street network grid orientations, order, disorder, entropy, rose plot, polar histogram made with Python, OSMnx, OpenStreetMap, matplotlib.This post is adapted from this research paper that you can read/cite for more info. It analyzes and visualizes 100 cities around the world.

“We say the cows laid out Boston. Well, there are worse surveyors.” –Ralph Waldo Emerson. In 1960, one hundred years after Emerson’s quote, Kevin Lynch published The Image of the City, his treatise on the legibility of urban patterns. How coherent is a city’s spatial organization? How do these patterns help or hinder urban navigation? I recently wrote about visualizing street orientations with Python and OSMnx. That is, how is a city’s street network oriented in terms of the streets’ compass bearings? How well does it adhere to a straightforward north-south-east-west layout? I wanted to revisit this by comparing 25 major US cities’ orientations (EDIT: by popular request, see also this follow-up comparing world cities):

City street network grid orientations, rose plot, polar histogram made with Python, OSMnx, OpenStreetMap, matplotlib. Atlanta, Boston, Buffalo, Charlotte, Chicago, Cleveland, Dallas, Denver, Detroit, Houston, Las Vegas, Los Angeles, Manhattan, New York, Miami, Minneapolis, Orlando, Philadelphia, Phoenix, Portland, Sacramento, San Francisco, Seattle, St Louis, Tampa, Washington DC.

Categories
Data

OSMnx Features Round-Up

OSMnx is a Python package for quickly and easily downloading, modeling, analyzing, and visualizing street networks and other spatial data from OpenStreetMap. Here’s a quick round-up of recent updates to OSMnx. I’ll try to keep this up to date as a single reference source. A lot of new features have appeared in the past few months, and people have been asking about what’s new and what’s possible. You can:

  • 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
Categories
Data

Street Network Orientation

OSMnx is a Python package for easily downloading and analyzing street networks anywhere in the world. Among other analyses, we can use it to explore street network orientation. That is, what are the bearings and spatial orientations of the streets in the network? All of the code for this example is in this GitHub notebook. First we use OSMnx to download the street network of Moraga, California, a small town in the hills just east of Berkeley:

Moraga, California street network OSMnx OpenStreetMap Python

OSMnx automatically calculates all of the streets’ bearings. Specifically it calculates the compass bearing from each directed edge’s origin node u to its destination node v. Now we can visualize these bearings, binned together as a histogram to get a sense of the relative frequency of the streets’ spatial orientations. Or better yet, we can project that histogram as a polar plot to match the compass bearings:

Moraga, California street network orientation edge bearings polar plot OSMnx OpenStreetMap Python

Categories
Data

Urban Street Network Centrality

Check out the journal article about OSMnx.

We can measure and visualize how “important” a node or an edge is in a network by calculating its centrality. Lots of flavors of centrality exist in network science, including closeness, betweenness, degree, eigenvector, and PageRank. Closeness centrality measures the average shortest path between each node in the network and every other node: more central nodes are closer to all other nodes. We can calculate this easily with OSMnx, as seen in this GitHub demo. For example, here is the node closeness centrality for Piedmont, California:

Urban street network graph node closeness and betweenness centrality

Categories
Academia

New Article: OSMnx in CEUS

My article “OSMnx: New methods for acquiring, constructing, analyzing, and visualizing complex street networks” was published in the journal Computers, Environment and Urban Systems earlier this month. OSMnx is a Python package that lets you download a street network anywhere in the world at any scale with a single line of code, then analyze or visualize it with one more line of code.

OSMnx: Figure-ground diagrams of one square mile of each street network, from OpenStreetMap, made in Python with matplotlib, geopandas, and NetworkX

Categories
Planning

Isochrone Maps with OSMnx + Python

Check out the journal article about OSMnx.

How far can you travel on foot in 15 minutes? Urban planners use isochrone maps to show spatial horizons (i.e., isolines) that are equal in time. Isochrones depict areas according to how long it takes to arrive there from some point. These visualizations are particularly useful in transportation planning as they reveal what places are accessible within a set of time horizons.

We can create isochrone maps for anywhere in the world automatically with Python and its OSMnx package:

OSMnx map of isochrone isolines in Berkeley California's street network

Categories
Data

OSMnx and Street Network Elevation Data

Check out the journal article about OSMnx.

OSMnx can now download street network elevation data for anywhere in the world. In one line of code it downloads the elevation in meters of each network node, and in one more line of code it can calculate every street (i.e., edge) grade. Here is the complete street network of San Francisco, California, with nodes colored according to their elevation:

OSMnx street network elevation data for San Francisco, California to calculate street grade and steepness