spacesyntax / CatchmentAnalyser

Calculate catchments from multiple origins using multiple costs.
GNU General Public License v3.0
0 stars 1 forks source link

Ways to calculate the distance of a segment #14

Closed jorgegil closed 7 years ago

jorgegil commented 7 years ago

Currently the tool only includes segments that are entirely within the given distance. There are several options that could be considered:

  1. only segments entirely within (currently implemented). Maybe too restrictive as sections that can be in fact reached are left out, e.g. if there's a long segment right next to the origin.
  2. all segments that have at least one point within distance. Could be considered permissive, for the opposite reason. But we know that distance for walking is not that precise anyway, and people use a combination of metric distance and cognitive distance. Being on a street that is from one end within reach might mean that "topologically" it is entirely within reach.
  3. segments with the mid point within distance. This is the traditional depthmapX approach, a type of relaxation of the restriction of 1 to allow half the segment to be out, at most. But not as inclusive as 2. Could be the consensual approach?
  4. use linear interpolation to break the segments at the exact location of the distance limit. This is the precise approach but computationally intensive. And if we consider that an exact distance is not realistic...

Of course, the principles above might be different depending on the type of cost being used. But for the default one, metric distance, they apply.

jorgegil commented 7 years ago

Ultimately one could let the user decide which approach to use depending on what is best for the application. But this is an advanced option and there should be a default that makes sense most of the time. Which one is that?...

jorgegil commented 7 years ago

I've now implemented a compromise solution:

Implementing option 4 for the network output is quite complicated and could be considered at a later stage. For polygon output it's just a matter of adding some extra points for the concave hull.