uscuni / simplification

Simplification of street network geometry
Other
6 stars 0 forks source link

curate non-articulation node roads #83

Open jGaboardi opened 4 days ago

jGaboardi commented 4 days ago

This PR:

martinfleis commented 2 days ago

We should also have a reproducible code generating these.

jGaboardi commented 2 days ago

We should also have a reproducible code generating these.

Do we think:

  1. simply having a generic function in utils (or somewhere else) that generates a non-articulation nodes network?
  2. having a function that specifically generates the non-articulation nodes networks for our FUAs.?
  3. some combination of 1&2 to also saves out the data?
  4. a notebook that does this?
anastassiavybornova commented 2 days ago

i would suggest:

anastassiavybornova commented 2 days ago

@jGaboardi "articulation nodes" = nodes of degree 2 that are only there for the sake of documenting the geometry but should not be translated into network nodes, correct? (what is called "interstitial nodes" in OSMnx) just to be sure we're talking about the same thing.

question: are self-loops allowed? if so, are we keeping or removing them when we drop degree2 nodes? i'm thinking about a "lollipop" shape, where the head of the lollipop is a selfloop (or would a self-loop at the lollipop stick result in a degree3 node? confusion)

jGaboardi commented 2 days ago

articulation nodes

non articulation nodes are degree 2 nodes in general - nodes in a graph where traversal decisions are not affected by their removal. Interstitial & non-articulation are interchangeable terms.

are self-loops allowed? if so, are we keeping or removing them when we drop degree2 nodes? i'm thinking about a "lollipop" shape, where the head of the lollipop is a selfloop (or would a self-loop at the lollipop stick result in a degree3 node? confusion)

hmmmm. That would inside momepy.remove_false_nodes(). It's a good question and not immediately clear from reading the code. @martinfleis Do you know if this is the case?

martinfleis commented 2 days ago

I meant only a notebook calling momepy.remove_false_nodes on input and saving these files. Otherwise this step is undocumented.

Not sure about self loop handling, will need to check once I'll be back at laptop.

jGaboardi commented 2 days ago

I have already include a function in utils in the meantime, along with a test. Shall I remove?

@anastassiavybornova Do have a known loop road case? If so, I can test that right now.

martinfleis commented 2 days ago

Can you push that function? I'm not sure what it does :). I don't mind having it but we need a notebook documenting this processing step.

jGaboardi commented 2 days ago

Can you push that function? I'm not sure what it does :)

Absolutely, it merely wraps momepy.remove_false_nodes()

jGaboardi commented 1 day ago

@anastassiavybornova & @martinfleis this is ready for re-review.

jGaboardi commented 1 day ago

(I think)