我有一系列(x,y)坐标,如果加入这代表一条折线。此折线是地理轨迹。
我所需要的只是获得折线曲折度。它应该是一种有用的百分比。例如,路径有 x% 的曲折度。
好吧,这完全取决于您如何定义曲折度。有一篇关于曲折度的维基百科文章,它可能会对这个主题有所了解。
文章中一个有趣的句子告诉我们:"roughness (or tortuosity) could be measured by relative change of curvature"
。这是一个很好的起点。
您的折线由相邻的线段组成。您可以计算每个相邻线段之间的角度。使用此信息,您可以很好地了解折线的曲折度。例如,设点和点seg(n)
之间的线段:n
n+1
tortuosity = sum(abs(angle(seg(n), seg(n+1))) for n in 1 to number of segment)
(计算两条线段之间的角度留作练习,但不需要数学学位)
上述度量未按比例缩放:您拥有的点数越多,值可能就越高。您可以根据拥有的线段数轻松缩放此结果:
unit_tortuosity = tortuosity / (n * pi)
(两条线段之间的最大角度为pi
,调整您的angle()
函数,使其返回介于0
和之间的结果pi
。因此您的曲折度最多为n*pi
,因此上述比例因子允许在0
和之间有一个值1
,0
代表一条完美的直线折线)