snkit: a spatial networks data cleaning toolkit

snkit - a spatial networks toolkit

/ˈsnɪkɪt/ – sounds like snicket (noun, Northern English) A narrow passage between houses; an alleyway.

Why use snkit?

snkit helps tidy spatial network data.

Say you have some edges and nodes (lines and points, connections and vertices). None of them are quite connected, and there’s no explicit data to define which node is at the end of which edge, or which edges are connected.

For example:

Unconnected network

snkit has methods to:

  • add endpoints to each edge
  • connect nodes to nearest edges
  • split edges at connecting points
  • create node and edge ids, and add from_id and to_id to each edge

Spatial network

The output of a snkit data cleaning process might look something like this:

Connected network

Nodes

geometryidother attributes…
POINT (0.03 0.04)node_0
POINT (0.03 0.03)node_1
POINT (0.02 0.03)node_2

Edges

geometryidfrom_idto_idother attributes…
LINESTRING (0.04 -0.04...edge_0node_10node_22
LINESTRING (0.01 -0.03...edge_1node_22node_21
LINESTRING (0.02 -0.02...edge_2node_21node_25

Getting started

Install system libraries (only tested on Ubuntu):

sudo apt-get install -y libspatialindex-dev libgeos-dev gdal-bin

Or use conda to install major dependencies:

conda install geopandas rtree shapely

Install or upgrade snkit using pip:

pip install --upgrade snkit

See the demo notebook for a small demonstration.

Testimonials 💯 👍 😊

With five lines of snkit I replaced four or five hundred lines of custom code!

A. Contented Customer (@czor847)

  • pysal/spaghetti has methods for building graph-theoretic networks and the analysis of network events.
  • osmnx lets you retrieve, model, analyze, and visualize street networks from OpenStreetMap, including methods to correct and simplify network topology.

Acknowledgements

MIT License

Copyright (c) 2018 Tom Russell and snkit contributors

Initial snkit development was at the Environmental Change Institute, University of Oxford within the EPSRC sponsored MISTRAL programme, as part of the Infrastructure Transition Research Consortium.

Click links for code, data, and publications associated with this project.
Tom Russell
Tom Russell
Senior Research Software Engineer

Tom develops software for infrastructure planning, adaptation and risk assessment.