Skip to content

Adding SNDi to momepy #275

@amorfinv

Description

@amorfinv

Hello,

It would be great if momepy could include a function to calculate the Street-Network Disconnectedness index (SNDi) from this paper. The authors (Christopher Barrington-Leigh and Adam Millard-Ball) already have open-source code code in gitlab. However, it was not built to interface with an OSMnx graph.

The momepy function would take an OSMnx graph as an argument and return the SNDi. This supporting document explains the method to calculate the SNDi in detail. They provide this table gives to give an overview of all the different metrics
image

They then did a principal component analysis (PCA) of the whole world's street-network (GADM dataset) and decided on 13 distinct aggregate metrics for the SNDi:

  • Nodal degree (negative)
  • Fraction of dead-ends
  • Log Circuity (0–0.5km)
  • Log Circuity (0.5–1km)
  • Log Circuity (1–1.5km)
  • Log Circuity (1.5–2km)
  • Log Circuity (2–2.5km)
  • Log Circuity (2.5–3km)
  • Fraction bridges (length)
  • Fraction non-cycle (length)
  • Fraction non-cycle (Number of edges)
  • Fraction bridges (Number of edges)
  • Log sinuosity

Pages 4-9 of the supporting document go into detail about how exactly the metrics are calculated. The authors first calculated each of these metrics for the whole-world and get a mean and standard deviation that is used to scale for smaller geographic regions. These are not in the documentation, but they are found in the code:

Screen Shot 2021-05-19 at 9 24 52 AM

With these values, they came up with component loadings for the PCA:

image

Note that they only use PCA1 for the SNDI. So to calculate the PCA for a certain geographic region need:

  • mean and standard deviation of the GADM dataset
  • component loadings
  • aggregate metric for certain region

The formula for PCA1 of a certain region is then:

Screen Shot 2021-05-19 at 9 30 01 AM

With the PCA1 it is easy to calculate the SNDi as you just need to add 3

SNDi = PCA1 + 3

Please see PDF for below for reference:

SNDi_procedure.pdf

Please let me know if something is unclear.

Also, from what I read in the supporting information, the nodal density is not actually used in the SNDi calculation. However, it is used for classifying cities if I read correctly. And it seems like the aggregate measures only take drivable streets (no bicycle, walking, or service edges). However, I am still a bit confused about this part (see page 36 of the supporting document) so I will need to do more reading.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions