Geospatial Examples Description#

Functions for reading and writing shapefiles are provided in NetworkX versions <3.0. However, we recommend that you use the following libraries when working with geospatial data (including reading and writing shapefiles).

Geospatial Python Libraries#

GeoPandas provides interoperability between geospatial formats and storage mechanisms (e.g., databases) and Pandas data frames for tabular-oriented processing of spatial data, as well as a wide array of supporting functionality including spatial indices, spatial predicates (e.g., test if geometries intersect each other), spatial operations (e.g., the area of overlap between intersecting polygons), and more.

See the following examples that use GeoPandas:

PySAL provides a rich suite of spatial analysis algorithms. From a network analysis context, spatial weights provide… (Levi please add more here).

See the following examples that use PySAL:

momepy builds on top of GeoPandas and PySAL to provide a suite of algorithms focused on urban morphology. From a network analysis context, momepy enables you to convert your line geometry to networkx.MultiGraph and back to geopandas.GeoDataFrame and apply a range of analytical functions aiming at morphological description of (street) network configurations.

See the following examples that use momepy:

OSMnx provides a set of tools to retrieve, model, project, analyze, and visualize OpenStreetMap street networks (and any other networked infrastructure) as networkx.MultiDiGraph objects, and convert these MultiDiGraphs to/from geopandas.GeoDataFrame. It can automatically add node/edge attributes for: elevation and grade (using the Google Maps Elevation API), edge travel speed, edge traversal time, and edge bearing. It can also retrieve any other spatial data from OSM (such as building footprints, public parks, schools, transit stops, etc) as Geopandas GeoDataFrames.

See the following examples that use OSMnx:

Key Concepts#

One of the essential tasks in network analysis of geospatial data is defining the spatial relationships between spatial features (points, lines, or polygons).

PySAL provides several ways of representing these spatial relationships between features using the concept of spatial weights. These include relationships such as Queen, Rook, … (Levi please add more here with a brief explanation of each).

momepy allows representation of street networks as both primal and dual graphs (in a street network analysis sense). The primal approach turns intersections into Graph nodes and street segments into edges, a format which is used for a majority of morphological studies. The dual approach uses street segments as nodes and intersection topology as edges, which allows encoding of angular information (i.e an analysis can be weighted by angles between street segments instead of their length).

OSMnx represents street networks as primal, nonplanar, directed graphs with possible self-loops and parallel edges to model real-world street network form and flow. Nodes represent intersections and dead-ends, and edges represent the street segments linking them. Details of OSMnx’s modeling methodology are available at

Learn More#

To learn more see Geographic Data Science with PySAL and the PyData Stack.