argo-marketplace / RadRoads

Using OSMnx to find Rad Streets in any city! - https://medium.com/a-r-g-o/rad-roads-using-osmnx-68fc8b15f046
MIT License
11 stars 4 forks source link

Curviness calculation method #15

Closed jazzzchan closed 6 years ago

jazzzchan commented 6 years ago

Two concept to calculate Curviness:

- Circuity

Circuity measures the difference between measured route length and geometric distance between two places ( calculated as the difference between measured route length and geometric distance divided by the measured route distance). It is more efficient when comes to straighter routes. Therefore, this method is less applicable in our scenario.

- Sinuosity (sinuosity index, or sinuosity coefficient) - Our approach

Sinuosity allows the calculation of a continuously differentiable curve by having its ratio of curvilinear length (along the curve) and the Euclidean distance (straight line) between the end points of the curve. This dimensionless quantity can also be rephrased as the "actual path length" divided by the "shortest path length" of a curve. The value ranges from 1 (case of straight line) to infinity (case of a closed loop, where the shortest path length is zero) or for an infinitely-long actual path. For our case, we adopted this method because this method is really significant when the line is continuously differentiable (no angular point). Simply by importing "vincenty" from Geopy, this python package allows us to conduct the distance between points on an ellipsoidal earth model. Then divide the road street (distance between two nodes) by the vincenty distance, we receive sinuosity of the road.

How to submit an issue?

jazzzchan commented 6 years ago

please feel free to edit the paragraph :)

vr00n commented 6 years ago

I agree re: Circuity - so lets forget about that. Thank you.

re: Sinuosity - I don't understand the need for vincenty. Vincenty calculates the accurate distance assuming the earth's natural curvature but for streets - the earth's natural curvature is negligible (i.e. earth's curvature tends to zero for short distances like streets).

Can we please update function_basic to use compute_sinuosity (gdf) based on code available here please? https://github.com/Geosyntec/gisutils/blob/a4034d5dfed472588548306860d010b3dd99a980/gisutils/algo.py

..and lets rename any references to circuity to sinuosity

THANK YOU!!!

ywnch commented 6 years ago

No problem, thank you, Varun! I will get back here tonight or tomorrow.